示例#1
0
        /// <summary>
        /// 解析
        /// </summary>
        /// <param name="freeLabel">标签内容</param>
        /// <param name="currentPage">当前页(仅用于分页)</param>
        /// <param name="pageSize">页面大小(仅用于分页)</param>
        /// <returns></returns>
        public string Parse(FreeLabel freeLabel, int currentPage, int pageSize)
        {
            string              parseResult;        // 标签解析结果
            FreeLabelConfig     labelConfig;        // 自由标签参数
            bool                isException;        // 是否出现异常
            DataTable           dtDataSource;       // 标签数据源
            LoopLabelParseParam labelParseParam;    // 标签经解析后的参数
            string              selSQL;             // 标签数据源查询语句

            labelConfig = new FreeLabelConfig();
            isException = false;
            parseResult = string.Empty;

            if (string.IsNullOrEmpty(this.NodeCode))
            {
                DataRow[] drMenu;

                drMenu = this.MenuList.Select("NodeCode='" + freeLabel.NodeCode + "'");

                if (drMenu != null && drMenu.Length > 0)
                {
                    this.CSaveType = GetContentPageSaveType(drMenu[0]["ContentPageHtmlRule"].ToString());
                }
            }

            if (LabelList != null && LabelList.Contains(freeLabel.Name))
            {
                try
                {
                    labelConfig = (FreeLabelConfig)LabelList[freeLabel.Name];
                }
                catch { isException = true; }
            }
            else
            {
                isException = true;
            }

            if (!isException && !string.IsNullOrEmpty(labelConfig.SQL) && !string.IsNullOrEmpty(labelConfig.Content))
            {
                selSQL = labelConfig.SQL;
                selSQL = selSQL.Replace("{$NodeCode}", NodeCode);
                selSQL = selSQL.Replace("{$SiteID}", SiteID.ToString());

                if (pageSize > 0)   // 分页
                {
                    selSQL       = Regex.Replace(selSQL, @"top\s*\d+", " ", RegexOptions.Singleline | RegexOptions.IgnoreCase);
                    dtDataSource = dal.GetFreeLabelSplitDataSource(selSQL, currentPage, pageSize, null);
                }
                else
                {
                    dtDataSource = dal.GetFreeLabelDataSource(selSQL);
                }

                labelParseParam = GetLoopLabelParam(labelConfig.Content, this.itemContentTag);
                parseResult     = DataSourceBind(dtDataSource, labelParseParam, freeLabel);
                parseResult     = labelParseParam.LabelTemplate.Replace(itemContentTag, parseResult);
            }

            return(parseResult);
        }
示例#2
0
        /// <summary>
        /// 获取内容目录Path
        /// </summary>
        /// <param name="siteUrl">站点Path</param>
        /// <param name="menuDirURL">栏目相对站点的路径</param>
        /// <param name="cSaveType">内容页面保存方式</param>
        /// <param name="addDate">记录添加日期</param>
        /// <returns></returns>
        public string GetContentDirPath(string sitePath, string menuDirUrl, ContentPageSaveType cSaveType, string addDate)
        {
            string cDirUrl;
            string topMenuDirName;

            string[] arrMenuName;

            switch (cSaveType)
            {
            case ContentPageSaveType.Content:
                cDirUrl = sitePath + "c\\";
                break;

            case ContentPageSaveType.ContentAndDate:
                cDirUrl = sitePath + "c\\" + string.Format("{0:yyMMdd}", DateTime.Parse(addDate)) + "\\";
                break;

            case ContentPageSaveType.Menu:
                if (menuDirUrl.Contains("/"))
                {
                    arrMenuName    = menuDirUrl.Split(new char[] { '/' });
                    topMenuDirName = arrMenuName[0];

                    if (topMenuDirName.Trim() == "" && arrMenuName.Length > 1)
                    {
                        topMenuDirName = arrMenuName[1];
                    }
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = sitePath + topMenuDirName + "\\";
                break;

            case ContentPageSaveType.MenuAndContent:
                if (menuDirUrl.Contains("/"))
                {
                    arrMenuName    = menuDirUrl.Split(new char[] { '/' });
                    topMenuDirName = arrMenuName[0];

                    if (topMenuDirName.Trim() == "" && arrMenuName.Length > 1)
                    {
                        topMenuDirName = arrMenuName[1];
                    }
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = sitePath + topMenuDirName + "\\c\\";
                break;

            case ContentPageSaveType.MenuAndDate:
                if (menuDirUrl.Contains("/"))
                {
                    arrMenuName    = menuDirUrl.Split(new char[] { '/' });
                    topMenuDirName = arrMenuName[0];

                    if (topMenuDirName.Trim() == "" && arrMenuName.Length > 1)
                    {
                        topMenuDirName = arrMenuName[1];
                    }
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = sitePath + topMenuDirName + "\\" + string.Format("{0:yyMM}", DateTime.Parse(addDate)) + "\\";
                break;

            case ContentPageSaveType.MenuContentAndDate:
                if (menuDirUrl.Contains("/"))
                {
                    arrMenuName    = menuDirUrl.Split(new char[] { '/' });
                    topMenuDirName = arrMenuName[0];

                    if (topMenuDirName.Trim() == "" && arrMenuName.Length > 1)
                    {
                        topMenuDirName = arrMenuName[1];
                    }
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = sitePath + topMenuDirName + "\\c\\" + string.Format("{0:yyMM}", DateTime.Parse(addDate)) + "\\";
                break;

            default:
                cDirUrl = sitePath;
                break;
            }

            return(cDirUrl);
        }
示例#3
0
        public string SingleRecordBind(DataRow dr, List <Field> lstField, string itemTemplate, string menuDir, string fileType, string siteUrl, ContentPageSaveType cSaveType, List <SubModelParam> lstSubModel)
        {
            string itemContent;
            string fieldValue;
            string cDirUrl;

            itemContent = itemTemplate;

            try
            {
                cDirUrl = this.GetContentDirUrl(siteUrl, menuDir, cSaveType, dr["AddDate"].ToString());

                try
                {
                    itemContent = itemContent.Replace("{$LoopPageName}", cDirUrl + dr["ID"].ToString() + "." + fileType);
                }
                catch
                {
                    itemContent = itemContent.Replace("{$LoopPageName}", "标签数据源中不存在ID字段");
                }

                itemContent = itemContent.Replace("{$AbsoulteMenuUrl}", cDirUrl);
                itemContent = itemContent.Replace("{$RelativeMenuUrl}", cDirUrl.Replace(siteUrl, ""));

                foreach (SubModelParam subModel in lstSubModel)
                {
                    itemContent = itemContent.Replace(subModel.LabelName, siteUrl + "List/" + dr["ID"].ToString() + subModel.FieldName + "." + fileType);
                }
            }
            catch
            {
                itemContent = itemContent.Replace("{$LoopPageName}", "标签数据源中不存在AddDate字段");
            }

            foreach (Field field in lstField)    // 绑定字段值
            {
                if (dr[field.Name] != null)
                {
                    fieldValue = dr[field.Name].ToString();

                    if (field.OutParam != null && field.OutParam.Length > 0)
                    {
                        fieldValue = this.FormatFieldContent(fieldValue, field.OutType, field.OutParam);
                    }

                    itemContent = itemContent.Replace("{[#" + field.Name + "#]}", fieldValue);
                }
            }

            return(itemContent);
        }
示例#4
0
        /// <summary>
        /// 获取内容目录URL
        /// </summary>
        /// <param name="siteUrl">站点URL</param>
        /// <param name="menuDirUrlOrNodeCode">栏目相对URL或NodeCode</param>
        /// <param name="cSaveType">内容页面保存方式</param>
        /// <param name="addDate">记录添加日期</param>
        /// <returns></returns>
        public string GetContentDirUrl(string siteUrl, string menuDirUrlOrNodeCode, ContentPageSaveType cSaveType, string addDate)
        {
            string cDirUrl;
            string menuDirUrl;
            string topMenuDirName;

            DataRow[] drMenu;

            if (Regex.IsMatch(menuDirUrlOrNodeCode, @"\d+"))    // menuDirUrlOrNodeCode 为NodeCode
            {
                drMenu = this.dtMenuList.Select("NodeCode='" + menuDirUrlOrNodeCode + "'");

                if (drMenu != null && drMenu.Length > 0)
                {
                    menuDirUrl = drMenu[0]["RootDirPath"].ToString();     // 当前发布栏目URL
                }
                else
                {
                    menuDirUrl = "";
                }
            }
            else   // 栏目相对URL
            {
                menuDirUrl = menuDirUrlOrNodeCode;
            }

            switch (cSaveType)
            {
            case ContentPageSaveType.Content:
                cDirUrl = siteUrl + "c/";
                break;

            case ContentPageSaveType.ContentAndDate:
                cDirUrl = siteUrl + "c/" + string.Format("{0:yyMMdd}", DateTime.Parse(addDate)) + "/";
                break;

            case ContentPageSaveType.Menu:
                if (menuDirUrl.Contains("/"))
                {
                    topMenuDirName = menuDirUrl.Split(new char[] { '/' })[0];
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = siteUrl + topMenuDirName + "/";
                break;

            case ContentPageSaveType.MenuAndContent:
                if (menuDirUrl.Contains("/"))
                {
                    topMenuDirName = menuDirUrl.Split(new char[] { '/' })[0];
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = siteUrl + topMenuDirName + "/c/";
                break;

            case ContentPageSaveType.MenuAndDate:
                if (menuDirUrl.Contains("/"))
                {
                    topMenuDirName = menuDirUrl.Split(new char[] { '/' })[0];
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = siteUrl + topMenuDirName + "/" + string.Format("{0:yyMM}", DateTime.Parse(addDate)) + "/";
                break;

            case ContentPageSaveType.MenuContentAndDate:
                if (menuDirUrl.Contains("/"))
                {
                    topMenuDirName = menuDirUrl.Split(new char[] { '/' })[0];
                }
                else
                {
                    topMenuDirName = menuDirUrl;
                }

                cDirUrl = siteUrl + topMenuDirName + "/c/" + string.Format("{0:yyMM}", DateTime.Parse(addDate)) + "/";
                break;

            default:
                cDirUrl = siteUrl;
                break;
            }

            return(cDirUrl);
        }