Example #1
0
        /// <summary>
        /// 获取头像文件名称
        /// </summary>
        /// <param name="userId">UserID</param>
        /// <param name="avatarSizeType">头像尺寸类别</param>
        private static string GetAvatarFileName(long userId, AvatarSizeType avatarSizeType)
        {
            string filename;

            switch (avatarSizeType)
            {
            case AvatarSizeType.Original:
                filename = string.Format("{0}_original.{1}", userId, AvatarFileExtension);
                break;

            case AvatarSizeType.Big:
                filename = string.Format("{0}_big.{1}", userId, AvatarFileExtension);
                break;

            case AvatarSizeType.Medium:
                filename = string.Format("{0}_big.{1}", userId, AvatarFileExtension);
                break;

            case AvatarSizeType.Small:
                filename = string.Format("{0}.{1}", userId, AvatarFileExtension);
                break;

            case AvatarSizeType.Micro:
                filename = string.Format("{0}.{1}", userId, AvatarFileExtension);
                break;

            default:
                filename = string.Empty;
                break;
            }
            return(filename);
        }
        /// <summary>
        /// 获取头像文件名称
        /// </summary>
        /// <param name="userId">UserID</param>
        /// <param name="avatarSizeType">头像尺寸类别</param>
        private static string GetAvatarFileName(long userId, AvatarSizeType avatarSizeType)
        {
            string filename;
            long   dateAvatar = new UserService().GetFullUser(userId).DateAvatar;

            switch (avatarSizeType)
            {
            case AvatarSizeType.Original:
                filename = string.Format("{0}_original.{1}", userId, AvatarFileExtension);
                break;

            case AvatarSizeType.Big:
                filename = string.Format("{2}_{0}_big.{1}", userId, AvatarFileExtension, dateAvatar);
                break;

            case AvatarSizeType.Medium:
                filename = string.Format("{2}_{0}_big.{1}", userId, AvatarFileExtension, dateAvatar);
                break;

            case AvatarSizeType.Small:
                filename = string.Format("{2}_{0}.{1}", userId, AvatarFileExtension, dateAvatar);
                break;

            case AvatarSizeType.Micro:
                filename = string.Format("{2}_{0}.{1}", userId, AvatarFileExtension, dateAvatar);
                break;

            default:
                filename = string.Empty;
                break;
            }
            return(filename);
        }
Example #3
0
        public List <string> GetStandardAvatarUrls(AvatarSizeType size)
        {
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(GetStandardAvatarUrls)}.Start");
            var relativeFolder = "";

            switch (size)
            {
            case AvatarSizeType.Original:
                relativeFolder = _folderConfiguration.Avatars.Standards.Originals.GetFullHashPath();
                break;

            case AvatarSizeType.Small:
                relativeFolder = _folderConfiguration.Avatars.Standards.Smalls.GetFullHashPath();
                break;

            case AvatarSizeType.Large:
                relativeFolder = _folderConfiguration.Avatars.Standards.Larges.GetFullHashPath();
                break;
            }

            var pcPath = Path.Combine(_fileManager.GetAbsoluteMediaRootPath(), relativeFolder);

            var result = Directory.GetFiles(pcPath)
                         .Select(x => _fileManager.ChangePcPathToWeb(Path.Combine(relativeFolder, Path.GetFileName(x)))).ToList();

            _logger.LogInformation($"{nameof(MediaService)}.{nameof(GetStandardAvatarUrls)}.End");
            return(result);
        }
Example #4
0
        public void CopyAvatars(string sourceFolder, AvatarType backgroundType, AvatarSizeType copyToNewSize)
        {
            if (string.IsNullOrEmpty(sourceFolder))
            {
                throw new Exception("SourceUrl is null or empty");
            }
            var fullSourcePath = Path.Combine(_fileManager.GetAbsoluteMediaRootPath(), sourceFolder);
            var fullNewPath    = Path.Combine(_fileManager.GetAbsoluteMediaRootPath(),
                                              CreateAvatarPath(backgroundType, copyToNewSize));

            Size size;

            switch (copyToNewSize)
            {
            case AvatarSizeType.Original:
                size = null;
                break;

            case AvatarSizeType.Small:
                size = new SmallAvatarSizeFolder(null).Size;
                break;

            case AvatarSizeType.Large:
                size = new LargeAvatarSizeFolder(null).Size;
                break;

            default: throw new Exception("Such AvatarSizeType does not exist.");
            }

            var files = Directory.GetFiles(fullSourcePath);

            foreach (var file in files)
            {
                var fileName = Path.GetFileNameWithoutExtension(file);
                var ext      = Path.GetExtension(file);

                if (fileName.Contains("original"))
                {
                    fileName = fileName.Replace("original", copyToNewSize.ToString().ToLower());
                }
                else
                {
                    fileName = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10) + "_" +
                               copyToNewSize.ToString().ToLower();
                }
                var fullNewFilePath = Path.Combine(fullNewPath, fileName + ext);
                if (!File.Exists(fullNewFilePath))
                {
                    if (size == null)
                    {
                        CopyFile(file, fullNewFilePath);
                    }
                    else
                    {
                        ResizeImage(file, fullNewFilePath, size.Height, size.Width);
                    }
                }
            }
        }
        public async Task <string> GetUserAvatar(int userId, AvatarSizeType avatarSizeType)
        {
            Logger.LogInformation($"{nameof(AccountService)}.{nameof(GetUserAvatar)}.Start");
            var avatar = await Db.UsersInfo.GetUserAvatar(userId);

            var result = MediaConverter.ToFullAvatarUrl(avatar, avatarSizeType);

            Logger.LogInformation($"{nameof(AccountService)}.{nameof(GetUserAvatar)}.End");
            return(result);
        }
        public async Task <(bool isUpdated, string url)> UpdateAvatarViaFile(int userId, AvatarType avatarType,
                                                                             AvatarSizeType avatarSizeType, IFormFile file)
        {
            Logger.LogInformation($"{nameof(AccountService)}.{nameof(UpdateAvatarViaFile)}.Start ");
            var url = await Hub.Media.UploadAvatarFile(AvatarType.Custom, file);

            var result = url.IsNullOrEmpty()
        ? (false, null)
        : (await Db.UsersInfo.UpdateUserOriginalAvatar(userId, url), MediaConverter.ToFullAvatarUrl(url, avatarSizeType)
           );

            Logger.LogInformation($"{nameof(AccountService)}.{nameof(UpdateAvatarViaFile)}.End ");
            return(result);
        }
 public async Task <List <string> > GetStandardAvatarUrls(AvatarSizeType avatarSize)
 {
     try
     {
         _logger.LogInformation($"{nameof(MediaServerConnection)}.{nameof(GetStandardAvatarUrls)}.Start");
         var body   = JsonConvert.SerializeObject(new { size = (int)avatarSize });
         var result = (await MediaServerConnect(_standardAvatarUrl, body)).Urls;
         _logger.LogInformation($"{nameof(MediaServerConnection)}.{nameof(GetStandardAvatarUrls)}.End");
         return(result);
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, $"{nameof(MediaServerConnection)}.{nameof(GetStandardAvatarUrls)}");
     }
     return(new List <string>());
 }
        public string ToFullAvatarUrl(string shortOriginalUrl, AvatarSizeType avatarSize)
        {
            if (string.IsNullOrEmpty(shortOriginalUrl))
            {
                return(null);
            }
            if (shortOriginalUrl.Contains(MediaUrl))
            {
                shortOriginalUrl = shortOriginalUrl.Replace(MediaUrl, "");
            }
            var name = Path.GetFileName(shortOriginalUrl);

            shortOriginalUrl = Path.GetDirectoryName(string.Concat(shortOriginalUrl.SkipWhile(x => x == '/')));

            if (avatarSize == AvatarSizeType.Original)
            {
                return(MediaUrl + shortOriginalUrl.Replace("\\", "/") + '/' + name);
            }

            name = name.Replace("original", avatarSize.ToString().ToLower());

            switch (avatarSize)
            {
            case AvatarSizeType.Small:
                return(MediaUrl + shortOriginalUrl.Replace("\\", "/")
                       .Replace(new OriginalSizeFolder(null).HashName, new SmallAvatarSizeFolder(null).HashName) + '/' +
                       name);

            case AvatarSizeType.Large:
                return(MediaUrl + shortOriginalUrl.Replace("\\", "/")
                       .Replace(new OriginalSizeFolder(null).HashName, new LargeAvatarSizeFolder(null).HashName) + '/' +
                       name);

            default: throw new Exception($"There is no such avatar size {avatarSize}");
            }
        }
Example #9
0
 /// <summary>
 /// 获取用户连接的头像
 /// </summary>
 /// <param name="userId"></param>
 /// <param name="avatarSizeType"></param>
 /// <param name="enableClientCaching"></param>
 /// <returns></returns>
 public string _UserAvatarLink(AvatarSizeType avatarSizeType = AvatarSizeType.Small, bool enableClientCaching = false)
 {
     RouteValueDictionary dic = new RouteValueDictionary();
     if (avatarSizeType != AvatarSizeType.Small)
         dic.Add("avatarSizeType", avatarSizeType);
     if (enableClientCaching)
         dic.Add("enableClientCaching", enableClientCaching);
     return CachedUrlHelper.Action("_UserAvatarLink", "Channel", CommonAreaName, dic);
 }
Example #10
0
 /// <summary>
 /// 获取用户头像
 /// </summary>
 /// <param name="userId">用户Id</param>
 /// <param name="avatarSizeType">头像尺寸类型</param>
 /// <returns></returns>
 public static IStoreFile GetAvatar(this IUserService userService, long userId, AvatarSizeType avatarSizeType)
 {
     IStoreProvider storeProvider = DIContainer.Resolve<IStoreProvider>();
     return storeProvider.GetFile(GetAvatarRelativePath(userId), GetAvatarFileName(userId, avatarSizeType));
 }
Example #11
0
        public string CreateRelativeAvatarPath(string imageName, AvatarType avatarType, AvatarSizeType size)
        {
            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CreateRelativeAvatarPath)}.Start");
            AvatarSizeFolders avatarTypeFolder = null;

            switch (avatarType)
            {
            case AvatarType.Standard:
                avatarTypeFolder = _folderConfiguration.Avatars.Standards;
                break;

            case AvatarType.Custom:
            default:
                avatarTypeFolder = _folderConfiguration.Avatars.Customs;
                break;
            }

            var name           = Path.GetFileNameWithoutExtension(imageName);
            var ext            = Path.GetExtension(imageName);
            var relativeFolder = "";

            switch (size)
            {
            case AvatarSizeType.Original:
                relativeFolder = avatarTypeFolder.Originals.GetFullHashPath();
                break;

            case AvatarSizeType.Small:
                relativeFolder = avatarTypeFolder.Smalls.GetFullHashPath();
                break;

            case AvatarSizeType.Large:
                relativeFolder = avatarTypeFolder.Larges.GetFullHashPath();
                break;
            }

            var result = Path.Combine(relativeFolder, name + $"_{size.ToString().ToLower()}" + ext);

            _logger.LogInformation($"{nameof(MediaService)}.{nameof(CreateRelativeAvatarPath)}.End");
            return(result);
        }
Example #12
0
 private string CreateAvatarPath(AvatarType backgroundType, AvatarSizeType copyToNewSize)
 {
     return(Path.Combine(GetHashFolderName("Avatar"), GetHashFolderName(backgroundType.ToString()),
                         GetHashFolderName(copyToNewSize.ToString())));
 }
Example #13
0
 /// <summary>
 /// 显示用户头像
 /// </summary>
 /// <param name="user">User</param>
 /// <param name="enableNavigate">是否允许链接到用户空间</param>
 /// <param name="navigateTarget">头衔图片链接的Target</param>
 /// <param name="avatarSizeType">头像尺寸类别</param>
 /// <param name="enableCachingInClient">是否允许在客户端缓存</param>
 /// <param name="htmlAttributes">html属性,例如:new RouteValueDictionary{{"Class","editor"},{"width","90%"}}</param>
 public static MvcHtmlString ShowUserAvatar(this HtmlHelper htmlHelper, IUser user, AvatarSizeType avatarSizeType = AvatarSizeType.Medium, bool enableNavigate = true, HyperLinkTarget navigateTarget = HyperLinkTarget._blank, bool enableCachingInClient = true, RouteValueDictionary htmlAttributes = null, bool isShowUserCard = true, bool isShowTitle = false)
 {
     return(ShowUserAvatar(htmlHelper, user, enableNavigate ? SiteUrls.Instance().SpaceHome(user == null ? 0 : user.UserId) : string.Empty, avatarSizeType, navigateTarget, enableCachingInClient, htmlAttributes, isShowUserCard, isShowTitle));
 }
Example #14
0
        /// <summary>
        /// 显示头像
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <param name="avatarSizeType">头像尺寸类别</param>
        /// <param name="link">链接到用户空间的地址</param>
        /// <param name="navigateTarget">链接类型</param>
        /// <param name="enableCachingInClient">是否允许在客户端缓存</param>
        /// <param name="htmlAttributes">html属性,例如:new RouteValueDictionary{{"Class","editor"},{"width","90%"}}</param>
        /// <returns></returns>
        public static MvcHtmlString ShowUserAvatar(this HtmlHelper htmlHelper, IUser user, string link, AvatarSizeType avatarSizeType = AvatarSizeType.Medium, HyperLinkTarget navigateTarget = HyperLinkTarget._blank, bool enableCachingInClient = true, RouteValueDictionary htmlAttributes = null, bool isShowUserCard = true, bool isShowTitle = false)
        {
            string avatarUrl = SiteUrls.Instance().UserAvatarUrl(user, avatarSizeType, enableCachingInClient);

            TagBuilder img = new TagBuilder("img");

            if (htmlAttributes != null)
            {
                img.MergeAttributes(htmlAttributes);
            }

            img.MergeAttribute("src", avatarUrl);
            if (user != null)
            {
                img.MergeAttribute("alt", user.DisplayName);
                if (isShowTitle)
                {
                    img.MergeAttribute("title", user.DisplayName);
                }
            }

            IUserProfileSettingsManager userProfileSettingsManager = DIContainer.Resolve <IUserProfileSettingsManager>();
            UserProfileSettings         userProfileSettings        = userProfileSettingsManager.GetUserProfileSettings();

            TagBuilder div = new TagBuilder("div");

            switch (avatarSizeType)
            {
            case AvatarSizeType.Big:
                img.MergeAttribute("width", userProfileSettings.AvatarWidth.ToString());
                div.AddCssClass("tn-avatar-big");
                break;

            case AvatarSizeType.Medium:
                img.MergeAttribute("width", userProfileSettings.MediumAvatarWidth.ToString());
                div.AddCssClass("tn-avatar-medium");
                break;

            case AvatarSizeType.Small:
                img.MergeAttribute("width", userProfileSettings.SmallAvatarWidth.ToString());
                div.AddCssClass("tn-avatar");
                break;

            case AvatarSizeType.Micro:
                img.MergeAttribute("width", userProfileSettings.MicroAvatarWidth.ToString());
                div.AddCssClass("tn-avatar-mini");
                break;
            }

            if (!string.IsNullOrEmpty(link) && user != null)
            {
                TagBuilder a = new TagBuilder("a");
                a.MergeAttribute("href", link);

                if (navigateTarget != HyperLinkTarget._self)
                {
                    a.MergeAttribute("target", navigateTarget.ToString());
                }

                if (isShowUserCard)
                {
                    a.MergeAttribute("plugin", "tipsyHoverCard");
                    a.MergeAttribute("data-user-card-url", SiteUrls.Instance()._UserCard(user.UserId));
                    a.MergeAttribute("outerclass", "tn-user-card");
                }

                a.InnerHtml   = img.ToString(TagRenderMode.SelfClosing);
                div.InnerHtml = a.ToString();
                return(new MvcHtmlString(div.ToString()));
            }
            else
            {
                div.InnerHtml = img.ToString(TagRenderMode.SelfClosing);
                return(new MvcHtmlString(div.ToString()));
            }
        }
Example #15
0
 /// <summary>
 /// 显示用户头像
 /// </summary>
 /// <param name="user">User</param>
 /// <param name="enableNavigate">是否允许链接到用户空间</param>
 /// <param name="navigateTarget">头衔图片链接的Target</param>
 /// <param name="avatarSizeType">头像尺寸类别</param>
 /// <param name="enableCachingInClient">是否允许在客户端缓存</param>
 /// <param name="htmlAttributes">html属性,例如:new RouteValueDictionary{{"Class","editor"},{"width","90%"}}</param>
 public static MvcHtmlString ShowUserAvatar(this HtmlHelper htmlHelper, IUser user, AvatarSizeType avatarSizeType = AvatarSizeType.Medium, bool enableNavigate = true, HyperLinkTarget navigateTarget = HyperLinkTarget._blank, bool enableCachingInClient = true, RouteValueDictionary htmlAttributes = null, bool isShowUserCard = true, bool isShowTitle = false)
 {
     return ShowUserAvatar(htmlHelper, user, enableNavigate ? SiteUrls.Instance().SpaceHome(user == null ? 0 : user.UserId) : string.Empty, avatarSizeType, navigateTarget, enableCachingInClient, htmlAttributes, isShowUserCard, isShowTitle);
 }
Example #16
0
        /// <summary>
        /// 显示用户头像
        /// </summary>
        /// <param name="userId">userID</param>
        /// <param name="enableNavigate">是否允许链接到用户空间</param>
        /// <param name="navigateTarget">头衔图片链接的Target</param>
        /// <param name="avatarSizeType">头像尺寸类别</param>
        /// <param name="htmlAttributes">html属性,例如:new RouteValueDictionary{{"Class","editor"},{"width","90%"}}</param>
        public static MvcHtmlString ShowUserAvatar(this HtmlHelper htmlHelper, long userId, AvatarSizeType avatarSizeType = AvatarSizeType.Medium, bool enableNavigate = true, HyperLinkTarget navigateTarget = HyperLinkTarget._blank, bool enableCachingInClient = true, RouteValueDictionary htmlAttributes = null, bool isShowUserCard = true, bool isShowTitle = false)
        {
            UserService userService = new UserService();
            IUser       user        = userService.GetUser(userId);

            return(ShowUserAvatar(htmlHelper, user, avatarSizeType, enableNavigate, navigateTarget, enableCachingInClient, htmlAttributes, isShowUserCard, isShowTitle));
        }
Example #17
0
 /// <summary>
 /// 用户头像Url
 /// </summary>
 /// <param name="user">用户</param>
 /// <param name="avatarSizeType">头像尺寸</param>
 /// <param name="enableClientCaching">是否启用客户端缓存</param>
 public string UserAvatarUrl(IUser user, AvatarSizeType avatarSizeType, bool enableClientCaching = false)
 {
     return userService.GetAvatarDirectlyUrl(user, avatarSizeType, enableClientCaching);
 }
Example #18
0
 /// <summary>
 /// 显示用户头像
 /// </summary>
 /// <param name="userId">userID</param>
 /// <param name="enableNavigate">是否允许链接到用户空间</param>
 /// <param name="navigateTarget">头衔图片链接的Target</param>
 /// <param name="avatarSizeType">头像尺寸类别</param>
 /// <param name="htmlAttributes">html属性,例如:new RouteValueDictionary{{"Class","editor"},{"width","90%"}}</param>
 public static MvcHtmlString ShowUserAvatar(this HtmlHelper htmlHelper, long userId, AvatarSizeType avatarSizeType = AvatarSizeType.Medium, bool enableNavigate = true, HyperLinkTarget navigateTarget = HyperLinkTarget._blank, bool enableCachingInClient = true, RouteValueDictionary htmlAttributes = null, bool isShowUserCard = true, bool isShowTitle = false)
 {
     IUser user = DIContainer.Resolve<UserService>().GetUser(userId);
     return ShowUserAvatar(htmlHelper, user, avatarSizeType, enableNavigate, navigateTarget, enableCachingInClient, htmlAttributes, isShowUserCard, isShowTitle);
 }
Example #19
0
        /// <summary>
        /// 获取直连URL
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="avatarSizeType"><see cref="AvatarSizeType"/></param>
        /// <returns></returns>
        public static string GetAvatarDirectlyUrl(this IUserService userService, IUser user, AvatarSizeType avatarSizeType, bool enableClientCaching = false)
        {
            string url = string.Empty;

            IStoreProvider storeProvider = DIContainer.Resolve<IStoreProvider>();
            string directlyRootUrl = storeProvider.DirectlyRootUrl;
            if (!string.IsNullOrEmpty(storeProvider.DirectlyRootUrl))
            {
                url += storeProvider.DirectlyRootUrl;
            }
            else
            {
                url += WebUtility.ResolveUrl("~/Uploads");  //本机存储时仅允许用~/Uploads/
            }

            if (user == null)
            {
                url += "/" + AvatarDirectory + "/avatar_anonymous";
            }
            else
            {
                url += "/" + AvatarDirectory + "/" + user.Avatar;
            }

            switch (avatarSizeType)
            {
                case AvatarSizeType.Original:
                    url += "_original." + AvatarFileExtension;
                    break;
                case AvatarSizeType.Big:
                case AvatarSizeType.Medium:
                    url += "_big." + AvatarFileExtension;
                    break;
                case AvatarSizeType.Small:
                case AvatarSizeType.Micro:
                    url += "." + AvatarFileExtension;
                    break;
                default:
                    url = string.Empty;
                    break;
            }

            if (user != null && !enableClientCaching)
            {
                url += "?lq=" + DateTime.UtcNow.Ticks;
            }

            return url;
        }
Example #20
0
        /// <summary>
        /// 获取用户头像
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <param name="avatarSizeType">头像尺寸类型</param>
        /// <returns></returns>
        public static IStoreFile GetAvatar(this IUserService userService, long userId, AvatarSizeType avatarSizeType)
        {
            IStoreProvider storeProvider = DIContainer.Resolve <IStoreProvider>();

            return(storeProvider.GetFile(GetAvatarRelativePath(userId), GetAvatarFileName(userId, avatarSizeType)));
        }
Example #21
0
        /// <summary>
        /// 获取直连URL
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="avatarSizeType"><see cref="AvatarSizeType"/></param>
        /// <returns></returns>
        public static string GetAvatarDirectlyUrl(this IUserService userService, IUser user, AvatarSizeType avatarSizeType, bool enableClientCaching = false)
        {
            string url = string.Empty;

            IStoreProvider storeProvider   = DIContainer.Resolve <IStoreProvider>();
            string         directlyRootUrl = storeProvider.DirectlyRootUrl;

            if (!string.IsNullOrEmpty(storeProvider.DirectlyRootUrl))
            {
                url += storeProvider.DirectlyRootUrl;
            }
            else
            {
                url += WebUtility.ResolveUrl("~/Uploads");  //本机存储时仅允许用~/Uploads/
            }

            if (user == null)
            {
                url += "/" + AvatarDirectory + "/avatar_anonymous";
            }
            else
            {
                url += "/" + AvatarDirectory + "/" + user.Avatar;
            }

            switch (avatarSizeType)
            {
            case AvatarSizeType.Original:
                url += "_original." + AvatarFileExtension;
                break;

            case AvatarSizeType.Big:
            case AvatarSizeType.Medium:
                url += "_big." + AvatarFileExtension;
                break;

            case AvatarSizeType.Small:
            case AvatarSizeType.Micro:
                url += "." + AvatarFileExtension;
                break;

            default:
                url = string.Empty;
                break;
            }

            if (user != null && !enableClientCaching)
            {
                url += "?lq=" + DateTime.UtcNow.Ticks;
            }

            return(url);
        }
Example #22
0
 public ActionResult _UserAvatarLink(AvatarSizeType avatarSizeType = AvatarSizeType.Small, bool enableClientCaching = false)
 {
     string imgPath = SiteUrls.Instance().UserAvatarUrl(UserContext.CurrentUser, AvatarSizeType.Small, enableClientCaching);
     return Json(new StatusMessageData(StatusMessageType.Success, imgPath), JsonRequestBehavior.AllowGet);
 }
        public ActionResult _App_Panel(string spaceKey, AvatarSizeType? avatarSizeType)
        {
            User user = userService.GetFullUser(spaceKey);
            if (user == null)
                return new EmptyResult();

            int currentNavigationId = RouteData.Values.Get<int>("CurrentNavigationId", 0);

            NavigationService navigationService = DIContainer.Resolve<NavigationService>();
            Navigation navigation = navigationService.GetNavigation(PresentAreaKeysOfBuiltIn.UserSpace, currentNavigationId, user.UserId);

            IEnumerable<Navigation> navigations = new List<Navigation>();

            if (navigation != null)
            {
                if (navigation.Depth == 0)
                {
                    navigations = navigation.Children;
                    ViewData["ParentNavigation"] = navigation;
                }
                else if (navigation.Parent != null)
                {
                    navigations = navigation.Parent.Children;
                    ViewData["ParentNavigation"] = navigation.Parent;
                }

                ApplicationModel app = applicationService.Get(navigation.ApplicationId);
                if (app != null)
                {
                    ViewData["Application"] = app;
                    ViewData["AppCount"] = new OwnerDataService(TenantTypeIds.Instance().User()).GetLong(user.UserId, app.ApplicationKey + "-ThreadCount");
                }
                IEnumerable<ApplicationManagementOperation> applicationManagementOperations = new ManagementOperationService().GetShortcuts(PresentAreaKeysOfBuiltIn.UserSpace, false);

                ViewData["ApplicationManagementOperations"] = applicationManagementOperations.Where(n => n.ApplicationId == navigation.ApplicationId && n.PresentAreaKey == PresentAreaKeysOfBuiltIn.UserSpace);
            }

            ViewData["User"] = user;
            ViewData["AvatarSizeType"] = avatarSizeType;

            return View(navigations);
        }
Example #24
0
 /// <summary>
 /// 获取头像文件名称
 /// </summary>
 /// <param name="userId">UserID</param>
 /// <param name="avatarSizeType">头像尺寸类别</param>
 private static string GetAvatarFileName(long userId, AvatarSizeType avatarSizeType)
 {
     string filename;
     switch (avatarSizeType)
     {
         case AvatarSizeType.Original:
             filename = string.Format("{0}_original.{1}", userId, AvatarFileExtension);
             break;
         case AvatarSizeType.Big:
             filename = string.Format("{0}_big.{1}", userId, AvatarFileExtension);
             break;
         case AvatarSizeType.Medium:
             filename = string.Format("{0}_big.{1}", userId, AvatarFileExtension);
             break;
         case AvatarSizeType.Small:
             filename = string.Format("{0}.{1}", userId, AvatarFileExtension);
             break;
         case AvatarSizeType.Micro:
             filename = string.Format("{0}.{1}", userId, AvatarFileExtension);
             break;
         default:
             filename = string.Empty;
             break;
     }
     return filename;
 }
Example #25
0
        /// <summary>
        /// 显示头像
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <param name="avatarSizeType">头像尺寸类别</param>
        /// <param name="link">链接到用户空间的地址</param>
        /// <param name="navigateTarget">链接类型</param>
        /// <param name="enableCachingInClient">是否允许在客户端缓存</param>
        /// <param name="htmlAttributes">html属性,例如:new RouteValueDictionary{{"Class","editor"},{"width","90%"}}</param>
        /// <returns></returns>
        public static MvcHtmlString ShowUserAvatar(this HtmlHelper htmlHelper, IUser user, string link, AvatarSizeType avatarSizeType = AvatarSizeType.Medium, HyperLinkTarget navigateTarget = HyperLinkTarget._blank, bool enableCachingInClient = true, RouteValueDictionary htmlAttributes = null, bool isShowUserCard = true, bool isShowTitle = false)
        {
            string avatarUrl = SiteUrls.Instance().UserAvatarUrl(user, avatarSizeType, enableCachingInClient);

            TagBuilder img = new TagBuilder("img");
            if (htmlAttributes != null)
                img.MergeAttributes(htmlAttributes);

            img.MergeAttribute("src", avatarUrl);
            if (user != null)
            {
                img.MergeAttribute("alt", user.DisplayName);
                if (isShowTitle)
                {
                    img.MergeAttribute("title", user.DisplayName);
                }
            }

            ISettingsManager<UserProfileSettings> userProfileSettingsManager = DIContainer.Resolve<ISettingsManager<UserProfileSettings>>();
            UserProfileSettings userProfileSettings = userProfileSettingsManager.Get();

            TagBuilder div = new TagBuilder("div");
            switch (avatarSizeType)
            {
                case AvatarSizeType.Big:
                    img.MergeAttribute("width", userProfileSettings.AvatarWidth.ToString());
                    div.AddCssClass("tn-avatar-big");
                    break;
                case AvatarSizeType.Medium:
                    img.MergeAttribute("width", userProfileSettings.MediumAvatarWidth.ToString());
                    div.AddCssClass("tn-avatar-medium");
                    break;
                case AvatarSizeType.Small:
                    img.MergeAttribute("width", userProfileSettings.SmallAvatarWidth.ToString());
                    div.AddCssClass("tn-avatar");
                    break;
                case AvatarSizeType.Micro:
                    img.MergeAttribute("width", userProfileSettings.MicroAvatarWidth.ToString());
                    div.AddCssClass("tn-avatar-mini");
                    break;
            }

            if (!string.IsNullOrEmpty(link) && user != null)
            {
                TagBuilder a = new TagBuilder("a");
                a.MergeAttribute("href", link);

                if (navigateTarget != HyperLinkTarget._self)
                    a.MergeAttribute("target", navigateTarget.ToString());

                if (isShowUserCard)
                {
                    a.MergeAttribute("plugin", "tipsyHoverCard");
                    a.MergeAttribute("data-user-card-url", SiteUrls.Instance()._UserCard(user.UserId));
                    a.MergeAttribute("outerclass", "tn-user-card");
                }

                a.InnerHtml = img.ToString(TagRenderMode.SelfClosing);
                div.InnerHtml = a.ToString();
                return new MvcHtmlString(div.ToString());
            }
            else
            {
                div.InnerHtml = img.ToString(TagRenderMode.SelfClosing);
                return new MvcHtmlString(div.ToString());
            }
        }