예제 #1
0
파일: AttrUtils.cs 프로젝트: zerojuls/cms-3
        public static List <AttrEnum> GetEnums(Type elementType, string name, int siteId)
        {
            var enums = new List <AttrEnum>();

            if (name == "channelIndex")
            {
                var channelInfoList = ChannelManager.GetChannelInfoList(siteId);
                foreach (var channelInfo in channelInfoList)
                {
                    if (!string.IsNullOrEmpty(channelInfo.IndexName))
                    {
                        enums.Add(new AttrEnum(channelInfo.IndexName, string.Empty));
                    }
                }
            }
            else if (name == "channelName")
            {
                var channelInfoList = ChannelManager.GetChannelInfoList(siteId);
                foreach (var channelInfo in channelInfoList)
                {
                    enums.Add(new AttrEnum(channelInfo.ChannelName, string.Empty));
                }
            }
            else if (name == "context")
            {
                enums = new List <AttrEnum>
                {
                    new AttrEnum("site", "站点"),
                    new AttrEnum("channel", "栏目"),
                    new AttrEnum("content", "内容"),
                    new AttrEnum("sqlContent", "SQL")
                };
            }
            else if (name == "type")
            {
                if (elementType == typeof(StlAudio))
                {
                    var siteInfo              = SiteManager.GetSiteInfo(siteId);
                    var tableName             = ChannelManager.GetTableName(siteInfo, siteId);
                    var relatedIdentities     = RelatedIdentities.GetChannelRelatedIdentities(siteId, siteId);
                    var styleInfoList         = TableStyleManager.GetTableStyleInfoList(tableName, relatedIdentities);
                    var editableStyleInfoList = ContentUtility.GetEditableTableStyleInfoList(styleInfoList);

                    foreach (var styleInfo in editableStyleInfoList)
                    {
                        if (styleInfo.InputType == InputType.Text || styleInfo.InputType == InputType.Video || styleInfo.InputType == InputType.Image || styleInfo.InputType == InputType.File)
                        {
                            enums.Add(new AttrEnum(styleInfo.AttributeName, styleInfo.DisplayName));
                        }
                    }
                }
                else if (elementType == typeof(StlChannel))
                {
                    var fields = typeof(ChannelAttribute).GetFields(BindingFlags.Static | BindingFlags.Public);
                    foreach (var field in fields)
                    {
                        var stlAttribute = (StlFieldAttribute)field.GetCustomAttribute(typeof(StlFieldAttribute));
                        var desc         = string.Empty;
                        if (stlAttribute != null)
                        {
                            desc = stlAttribute.Description;
                        }
                        enums.Add(new AttrEnum(field.Name, desc));
                    }
                    var styleInfoList = TableStyleManager.GetTableStyleInfoList(DataProvider.ChannelDao.TableName, RelatedIdentities.GetChannelRelatedIdentities(siteId, siteId));
                    foreach (var styleInfo in styleInfoList)
                    {
                        enums.Add(new AttrEnum(styleInfo.AttributeName, styleInfo.DisplayName));
                    }
                }
            }

            return(enums);
        }