Пример #1
0
 public static void WriteText(string filePath, ECharset charset, string content)
 {
     WriteText(filePath, ECharsetUtils.GetEncoding(charset), content);
 }
Пример #2
0
        public IHttpActionResult Submit()
        {
            try
            {
                var request = new AuthenticatedRequest();
                if (!request.IsAdminLoggin ||
                    !request.AdminPermissionsImpl.HasSystemPermissions(ConfigManager.SettingsPermissions.SiteAdd))
                {
                    return(Unauthorized());
                }

                var createType          = request.GetPostString("createType");
                var createTemplateId    = request.GetPostString("createTemplateId");
                var siteName            = request.GetPostString("siteName");
                var isRoot              = request.GetPostBool("isRoot");
                var parentId            = request.GetPostInt("parentId");
                var siteDir             = request.GetPostString("siteDir");
                var tableRule           = ETableRuleUtils.GetEnumType(request.GetPostString("tableRule"));
                var tableChoose         = request.GetPostString("tableChoose");
                var tableHandWrite      = request.GetPostString("tableHandWrite");
                var isImportContents    = request.GetPostBool("isImportContents");
                var isImportTableStyles = request.GetPostBool("isImportTableStyles");
                var channelId           = request.GetPostString("channelId");
                var contentId           = request.GetPostString("contentId");
                var createTemplateUrl   = request.GetPostString("createTemplateUrl");

                if (!isRoot)
                {
                    if (DirectoryUtils.IsSystemDirectory(siteDir))
                    {
                        return(BadRequest("文件夹名称不能为系统文件夹名称,请更改文件夹名称!"));
                    }
                    if (!DirectoryUtils.IsDirectoryNameCompliant(siteDir))
                    {
                        return(BadRequest("文件夹名称不符合系统要求,请更改文件夹名称!"));
                    }
                    var list = DataProvider.SiteDao.GetLowerSiteDirList(parentId);
                    if (list.IndexOf(siteDir.ToLower()) != -1)
                    {
                        return(BadRequest("已存在相同的发布路径,请更改文件夹名称!"));
                    }
                }

                var channelInfo = new ChannelInfo();

                channelInfo.ChannelName          = channelInfo.IndexName = "首页";
                channelInfo.ParentId             = 0;
                channelInfo.ContentModelPluginId = string.Empty;

                var tableName = string.Empty;
                if (tableRule == ETableRule.Choose)
                {
                    tableName = tableChoose;
                }
                else if (tableRule == ETableRule.HandWrite)
                {
                    tableName = tableHandWrite;
                    if (!DataProvider.DatabaseDao.IsTableExists(tableName))
                    {
                        DataProvider.ContentDao.CreateContentTable(tableName, DataProvider.ContentDao.TableColumnsDefault);
                    }
                    else
                    {
                        DataProvider.DatabaseDao.AlterSystemTable(tableName, DataProvider.ContentDao.TableColumnsDefault);
                    }
                }

                var siteInfo = new SiteInfo
                {
                    SiteName  = AttackUtils.FilterXss(siteName),
                    SiteDir   = siteDir,
                    TableName = tableName,
                    ParentId  = parentId,
                    IsRoot    = isRoot
                };

                siteInfo.Additional.IsCheckContentLevel = false;
                siteInfo.Additional.Charset             = ECharsetUtils.GetValue(ECharset.utf_8);

                var siteId = DataProvider.ChannelDao.InsertSiteInfo(channelInfo, siteInfo, request.AdminName);

                if (string.IsNullOrEmpty(tableName))
                {
                    tableName = ContentDao.GetContentTableName(siteId);
                    DataProvider.ContentDao.CreateContentTable(tableName, DataProvider.ContentDao.TableColumnsDefault);
                    DataProvider.SiteDao.UpdateTableName(siteId, tableName);
                }

                if (request.AdminPermissionsImpl.IsSystemAdministrator && !request.AdminPermissionsImpl.IsConsoleAdministrator)
                {
                    var siteIdList = request.AdminPermissionsImpl.GetSiteIdList() ?? new List <int>();
                    siteIdList.Add(siteId);
                    var adminInfo = AdminManager.GetAdminInfoByUserId(request.AdminId);
                    DataProvider.AdministratorDao.UpdateSiteIdCollection(adminInfo, TranslateUtils.ObjectCollectionToString(siteIdList));
                }

                var siteTemplateDir    = string.Empty;
                var onlineTemplateName = string.Empty;
                if (StringUtils.EqualsIgnoreCase(createType, "local"))
                {
                    siteTemplateDir = createTemplateId;
                }
                else if (StringUtils.EqualsIgnoreCase(createType, "cloud"))
                {
                    onlineTemplateName = createTemplateId;
                }

                var redirectUrl = PageProgressBar.GetCreateSiteUrl(siteId,
                                                                   isImportContents, isImportTableStyles, siteTemplateDir, onlineTemplateName, createTemplateUrl, StringUtils.Guid());

                return(Ok(new
                {
                    Value = redirectUrl
                }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Пример #3
0
        public static ECharset GetFileCharset(string filePath)
        {
            var encoding = EncodingType.GetType(filePath);

            return(ECharsetUtils.GetEnumType(encoding.BodyName));
        }
Пример #4
0
        public ArrayList GetTemplateInfoArrayListByPublishmentSystemId(int publishmentSystemId)
        {
            var arraylist = new ArrayList();

            var parms = new IDataParameter[]
            {
                GetParameter(ParmPublishmentSystemId, EDataType.Integer, publishmentSystemId)
            };

            using (var rdr = ExecuteReader(SqlSelectAllTemplateByPublishmentSystemId, parms))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), ETemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                    arraylist.Add(info);
                }
                rdr.Close();
            }
            return(arraylist);
        }
Пример #5
0
 public static string UrlDecode(string urlString, ECharset charset)
 {
     return(HttpUtility.UrlDecode(urlString, ECharsetUtils.GetEncoding(charset)));
 }
Пример #6
0
        public Dictionary <int, TemplateInfo> GetTemplateInfoDictionaryBySiteId(int siteId)
        {
            var dictionary = new Dictionary <int, TemplateInfo>();

            var parms = new IDataParameter[]
            {
                GetParameter(ParmSiteId, DataType.Integer, siteId)
            };

            using (var rdr = ExecuteReader(SqlSelectAllTemplateBySiteId, parms))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), TemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                    dictionary[info.Id] = info;
                }
                rdr.Close();
            }

            return(dictionary);
        }
Пример #7
0
        private void Save(bool isClose)
        {
            var isSuccess    = false;
            var errorMessage = string.Empty;

            var content = TranslateUtils.ToBool(IsPureText.SelectedValue) ? FileContentTextBox.Text : FileContent.Text;

            if (_isCreate == false)
            {
                string filePath;

                var fileExtName = PathUtils.GetExtension(_theFileName);
                if (!PathUtility.IsFileExtenstionAllowed(PublishmentSystemInfo, fileExtName))
                {
                    FailMessage("此格式不允许创建,请选择有效的文件名");
                    return;
                }

                if (PublishmentSystemInfo != null)
                {
                    filePath = PathUtility.MapPath(PublishmentSystemInfo, PathUtils.Combine(_relatedPath, _theFileName));
                }
                else
                {
                    filePath = PathUtils.MapPath(PathUtils.Combine(_relatedPath, _theFileName));
                }
                try
                {
                    try
                    {
                        if (!string.IsNullOrEmpty(Charset.SelectedValue))
                        {
                            _fileCharset = ECharsetUtils.GetEnumType(Charset.SelectedValue);
                        }
                        FileUtils.WriteText(filePath, _fileCharset, content);
                    }
                    catch
                    {
                        FileUtils.RemoveReadOnlyAndHiddenIfExists(filePath);
                        FileUtils.WriteText(filePath, _fileCharset, content);
                    }

                    Body.AddSiteLog(PublishmentSystemId, "新建文件", $"文件名:{_theFileName}");

                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    errorMessage = ex.Message;
                }
            }
            else
            {
                string filePath;

                var fileExtName = PathUtils.GetExtension(FileName.Text);
                if (!PathUtility.IsFileExtenstionAllowed(PublishmentSystemInfo, fileExtName))
                {
                    FailMessage("此格式不允许创建,请选择有效的文件名");
                    return;
                }

                if (PublishmentSystemInfo != null)
                {
                    filePath = PathUtility.MapPath(PublishmentSystemInfo, PathUtils.Combine(_relatedPath, FileName.Text));
                }
                else
                {
                    filePath = PathUtils.MapPath(PathUtils.Combine(_relatedPath, FileName.Text));
                }
                if (FileUtils.IsFileExists(filePath))
                {
                    errorMessage = "文件名已存在!";
                }
                else
                {
                    try
                    {
                        try
                        {
                            FileUtils.WriteText(filePath, _fileCharset, content);
                        }
                        catch
                        {
                            FileUtils.RemoveReadOnlyAndHiddenIfExists(filePath);
                            FileUtils.WriteText(filePath, _fileCharset, content);
                        }
                        Body.AddSiteLog(PublishmentSystemId, "编辑文件", $"文件名:{_theFileName}");
                        isSuccess = true;
                    }
                    catch (Exception ex)
                    {
                        errorMessage = ex.Message;
                    }
                }
            }

            if (isSuccess)
            {
                if (isClose)
                {
                    if (_isCreate)
                    {
                        PageUtils.CloseModalPage(Page);
                    }
                    else
                    {
                        PageUtils.CloseModalPageWithoutRefresh(Page);
                    }
                }
                else
                {
                    SuccessMessage("文件保存成功!");
                }
            }
            else
            {
                FailMessage(errorMessage);
            }
        }
Пример #8
0
        public void CreateSubContentTemplate_Click(object sender, EventArgs e)
        {
            if (Page.IsPostBack && Page.IsValid)
            {
                if (Validate(false, false))
                {
                    var relatedFileNameArrayList = DataProvider.TemplateDao.GetLowerRelatedFileNameArrayList(PublishmentSystemId, ETemplateType.ContentTemplate);
                    var templateNameArrayList    = DataProvider.TemplateDao.GetTemplateNameArrayList(PublishmentSystemId, ETemplateType.ContentTemplate);
                    foreach (ListItem item in NodeIDCollectionToMatch.Items)
                    {
                        if (item.Selected)
                        {
                            var nodeID   = int.Parse(item.Value);
                            var nodeInfo = NodeManager.GetNodeInfo(PublishmentSystemId, nodeID);

                            var templateInfo = new TemplateInfo(0, PublishmentSystemId, nodeInfo.NodeName + "_下级", ETemplateType.ContentTemplate, "T_" + nodeInfo.NodeName + "_下级.html", "index.html", ".html", ECharsetUtils.GetEnumType(PublishmentSystemInfo.Additional.Charset), false);

                            if (relatedFileNameArrayList.Contains(templateInfo.RelatedFileName.ToLower()))
                            {
                                continue;
                            }
                            else if (templateNameArrayList.Contains(templateInfo.TemplateName))
                            {
                                continue;
                            }
                            var insertedTemplateID   = DataProvider.TemplateDao.Insert(templateInfo, string.Empty, Body.AdministratorName);
                            var childNodeIDArrayList = DataProvider.NodeDao.GetNodeIdListForDescendant(nodeID);
                            foreach (int childNodeID in childNodeIDArrayList)
                            {
                                TemplateManager.UpdateContentTemplateID(PublishmentSystemId, childNodeID, insertedTemplateID);
                                //DataProvider.BackgroundNodeDAO.UpdateContentTemplateID(childNodeID, insertedTemplateID);
                            }
                        }
                    }

                    Body.AddSiteLog(PublishmentSystemId, "生成并匹配下级内容模版", $"栏目:{GetNodeNames()}");

                    SuccessMessage("生成下级内容模版并匹配成功!");

                    BindListBox();
                }
            }
        }
Пример #9
0
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            if (Page.IsPostBack && Page.IsValid)
            {
                if (_theTemplateType != ETemplateType.ChannelTemplate)
                {
                    if (!CreatedFileFullName.Text.StartsWith("~") && !CreatedFileFullName.Text.StartsWith("@"))
                    {
                        CreatedFileFullName.Text = PageUtils.Combine("@", CreatedFileFullName.Text);
                    }
                }
                else
                {
                    CreatedFileFullName.Text = CreatedFileFullName.Text.TrimStart('~', '@');
                    CreatedFileFullName.Text = CreatedFileFullName.Text.Replace("/", string.Empty);
                }

                if (Body.GetQueryInt("TemplateID") > 0 && _isCopy == false)
                {
                    var templateId   = Body.GetQueryInt("TemplateID");
                    var templateInfo = TemplateManager.GetTemplateInfo(PublishmentSystemId, templateId);
                    if (templateInfo.TemplateName != TemplateName.Text)
                    {
                        var templateNameArrayList = DataProvider.TemplateDao.GetTemplateNameArrayList(PublishmentSystemId, templateInfo.TemplateType);
                        if (templateNameArrayList.IndexOf(TemplateName.Text) != -1)
                        {
                            FailMessage("模板修改失败,模板名称已存在!");
                            return;
                        }
                    }
                    TemplateInfo previousTemplateInfo = null;
                    var          isChanged            = false;
                    if (PathUtils.RemoveExtension(templateInfo.RelatedFileName) != PathUtils.RemoveExtension(RelatedFileName.Text))//文件名改变
                    {
                        var fileNameArrayList = DataProvider.TemplateDao.GetLowerRelatedFileNameArrayList(PublishmentSystemId, templateInfo.TemplateType);
                        foreach (string fileName in fileNameArrayList)
                        {
                            var fileNameWithoutExtension = PathUtils.RemoveExtension(fileName);
                            if (fileNameWithoutExtension == RelatedFileName.Text.ToLower())
                            {
                                FailMessage("模板修改失败,模板文件已存在!");
                                return;
                            }
                        }

                        isChanged = true;
                    }

                    if (GetTemplateFileExtension(templateInfo) != CreatedFileExtNameDropDownList.SelectedValue)//文件后缀改变
                    {
                        isChanged = true;
                    }

                    if (isChanged)
                    {
                        previousTemplateInfo = new TemplateInfo(templateInfo.TemplateId, templateInfo.PublishmentSystemId, templateInfo.TemplateName, templateInfo.TemplateType, templateInfo.RelatedFileName, templateInfo.CreatedFileFullName, templateInfo.CreatedFileExtName, templateInfo.Charset, templateInfo.IsDefault);
                    }

                    templateInfo.TemplateName        = TemplateName.Text;
                    templateInfo.RelatedFileName     = RelatedFileName.Text + CreatedFileExtNameDropDownList.SelectedValue;
                    templateInfo.CreatedFileExtName  = CreatedFileExtNameDropDownList.SelectedValue;
                    templateInfo.CreatedFileFullName = CreatedFileFullName.Text + CreatedFileExtNameDropDownList.SelectedValue;
                    templateInfo.Charset             = ECharsetUtils.GetEnumType(Charset.SelectedValue);
                    try
                    {
                        DataProvider.TemplateDao.Update(PublishmentSystemInfo, templateInfo, Content.Text, Body.AdministratorName);
                        if (previousTemplateInfo != null)
                        {
                            FileUtils.DeleteFileIfExists(TemplateManager.GetTemplateFilePath(PublishmentSystemInfo, previousTemplateInfo));
                        }
                        CreatePages(templateInfo);

                        Body.AddSiteLog(PublishmentSystemId,
                                        $"修改{ETemplateTypeUtils.GetText(templateInfo.TemplateType)}",
                                        $"模板名称:{templateInfo.TemplateName}");

                        SuccessMessage("模板修改成功!");
                    }
                    catch (Exception ex)
                    {
                        FailMessage(ex, "模板修改失败," + ex.Message);
                    }
                }
                else
                {
                    var templateNameArrayList = DataProvider.TemplateDao.GetTemplateNameArrayList(PublishmentSystemId, ETemplateTypeUtils.GetEnumType(TemplateType.Value));
                    if (templateNameArrayList.IndexOf(TemplateName.Text) != -1)
                    {
                        FailMessage("模板添加失败,模板名称已存在!");
                        return;
                    }
                    var fileNameArrayList = DataProvider.TemplateDao.GetLowerRelatedFileNameArrayList(PublishmentSystemId, ETemplateTypeUtils.GetEnumType(TemplateType.Value));
                    if (fileNameArrayList.IndexOf(RelatedFileName.Text.ToLower()) != -1)
                    {
                        FailMessage("模板添加失败,模板文件已存在!");
                        return;
                    }

                    var templateInfo = new TemplateInfo();
                    templateInfo.PublishmentSystemId = PublishmentSystemId;
                    templateInfo.TemplateName        = TemplateName.Text;
                    templateInfo.TemplateType        = ETemplateTypeUtils.GetEnumType(TemplateType.Value);

                    templateInfo.RelatedFileName     = RelatedFileName.Text + CreatedFileExtNameDropDownList.SelectedValue;
                    templateInfo.CreatedFileExtName  = CreatedFileExtNameDropDownList.SelectedValue;
                    templateInfo.CreatedFileFullName = CreatedFileFullName.Text + CreatedFileExtNameDropDownList.SelectedValue;
                    templateInfo.Charset             = ECharsetUtils.GetEnumType(Charset.SelectedValue);
                    templateInfo.IsDefault           = false;
                    try
                    {
                        templateInfo.TemplateId = DataProvider.TemplateDao.Insert(templateInfo, Content.Text, Body.AdministratorName);
                        CreatePages(templateInfo);
                        Body.AddSiteLog(PublishmentSystemId,
                                        $"添加{ETemplateTypeUtils.GetText(templateInfo.TemplateType)}",
                                        $"模板名称:{templateInfo.TemplateName}");
                        SuccessMessage("模板添加成功!");
                        AddWaitAndRedirectScript(PageTemplate.GetRedirectUrl(PublishmentSystemId));
                    }
                    catch (Exception ex)
                    {
                        FailMessage(ex, "模板添加失败," + ex.Message);
                    }
                }
            }
        }
Пример #10
0
        private static string ParseImpl(PageInfo pageInfo, ContextInfo contextInfo, string title, string description, string scopeTypeString, string groupChannel, string groupChannelNot, string groupContent, string groupContentNot, string tags, string channelIndex, string channelName, int totalNum, int startNum, string orderByString, bool isTop, bool isTopExists, bool isRecommend, bool isRecommendExists, bool isHot, bool isHotExists, bool isColor, bool isColorExists)
        {
            var feed = new RssFeed
            {
                Encoding = ECharsetUtils.GetEncoding(pageInfo.TemplateInfo.Charset),
                Version  = RssVersion.RSS20
            };

            var channel = new RssChannel
            {
                Title       = title,
                Description = description
            };

            var scopeType = !string.IsNullOrEmpty(scopeTypeString) ? EScopeTypeUtils.GetEnumType(scopeTypeString) : EScopeType.All;

            var channelId = StlDataUtility.GetChannelIdByChannelIdOrChannelIndexOrChannelName(pageInfo.SiteId, contextInfo.ChannelId, channelIndex, channelName);

            var nodeInfo = ChannelManager.GetChannelInfo(pageInfo.SiteId, channelId);

            if (string.IsNullOrEmpty(channel.Title))
            {
                channel.Title = nodeInfo.ChannelName;
            }
            if (string.IsNullOrEmpty(channel.Description))
            {
                channel.Description = nodeInfo.Content;
                channel.Description = string.IsNullOrEmpty(channel.Description) ? nodeInfo.ChannelName : StringUtils.MaxLengthText(channel.Description, 200);
            }
            channel.Link = new Uri(PageUtils.AddProtocolToUrl(PageUtility.GetChannelUrl(pageInfo.SiteInfo, nodeInfo, pageInfo.IsLocal)));

            var dataSource = StlDataUtility.GetContentsDataSource(pageInfo.SiteInfo, channelId, 0, groupContent, groupContentNot, tags, false, false, false, false, false, false, false, startNum, totalNum, orderByString, isTopExists, isTop, isRecommendExists, isRecommend, isHotExists, isHot, isColorExists, isColor, string.Empty, scopeType, groupChannel, groupChannelNot, null);

            if (dataSource != null)
            {
                //foreach (var dataItem in dataSource)
                //{
                //    var item = new RssItem();

                //    var contentInfo = new BackgroundContentInfo(dataItem);
                //    item.Title = StringUtils.Replace("&", contentInfo.Title, "&amp;");
                //    item.Description = contentInfo.Summary;
                //    if (string.IsNullOrEmpty(item.Description))
                //    {
                //        item.Description = StringUtils.StripTags(contentInfo.Content);
                //        item.Description = string.IsNullOrEmpty(item.Description) ? contentInfo.Title : StringUtils.MaxLengthText(item.Description, 200);
                //    }
                //    item.Description = StringUtils.Replace("&", item.Description, "&amp;");
                //    item.PubDate = contentInfo.AddDate;
                //    item.Link = new Uri(PageUtils.AddProtocolToUrl(PageUtility.GetContentUrl(pageInfo.SiteInfo, contentInfo)));

                //    channel.Items.Add(item);
                //}
            }

            feed.Channels.Add(channel);

            var builder    = new StringBuilder();
            var textWriter = new EncodedStringWriter(builder, ECharsetUtils.GetEncoding(pageInfo.TemplateInfo.Charset));

            feed.Write(textWriter);

            return(builder.ToString());
        }
Пример #11
0
        public void CreateChannelTemplate_Click(object sender, EventArgs e)
        {
            if (Page.IsPostBack && Page.IsValid)
            {
                if (Validate(false, false))
                {
                    var defaultChannelTemplateID = TemplateManager.GetDefaultTemplateID(PublishmentSystemId, ETemplateType.ChannelTemplate);
                    var relatedFileNameArrayList = DataProvider.TemplateDao.GetLowerRelatedFileNameArrayList(PublishmentSystemId, ETemplateType.ChannelTemplate);
                    var templateNameArrayList    = DataProvider.TemplateDao.GetTemplateNameArrayList(PublishmentSystemId, ETemplateType.ChannelTemplate);
                    foreach (ListItem item in NodeIDCollectionToMatch.Items)
                    {
                        if (item.Selected)
                        {
                            var nodeID            = int.Parse(item.Value);
                            var channelTemplateID = -1;

                            var nodeInfo = NodeManager.GetNodeInfo(PublishmentSystemId, nodeID);
                            if (nodeInfo.NodeType != ENodeType.BackgroundPublishNode)
                            {
                                channelTemplateID = nodeInfo.ChannelTemplateId;
                            }

                            if (channelTemplateID != -1 && channelTemplateID != 0 && channelTemplateID != defaultChannelTemplateID)
                            {
                                if (TemplateManager.GetTemplateInfo(PublishmentSystemId, channelTemplateID) == null)
                                {
                                    channelTemplateID = -1;
                                }
                            }

                            if (channelTemplateID != -1)
                            {
                                var templateInfo = new TemplateInfo(0, PublishmentSystemId, nodeInfo.NodeName, ETemplateType.ChannelTemplate, "T_" + nodeInfo.NodeName + ".html", "index.html", ".html", ECharsetUtils.GetEnumType(PublishmentSystemInfo.Additional.Charset), false);

                                if (relatedFileNameArrayList.Contains(templateInfo.RelatedFileName.ToLower()))
                                {
                                    continue;
                                }
                                else if (templateNameArrayList.Contains(templateInfo.TemplateName))
                                {
                                    continue;
                                }
                                var insertedTemplateID = DataProvider.TemplateDao.Insert(templateInfo, string.Empty, Body.AdministratorName);
                                if (nodeInfo.NodeType != ENodeType.BackgroundPublishNode)
                                {
                                    TemplateManager.UpdateChannelTemplateID(PublishmentSystemId, nodeID, insertedTemplateID);
                                    //DataProvider.BackgroundNodeDAO.UpdateChannelTemplateID(nodeID, insertedTemplateID);
                                }
                            }
                        }
                    }

                    Body.AddSiteLog(PublishmentSystemId, "生成并匹配栏目模版", $"栏目:{GetNodeNames()}");

                    SuccessMessage("生成栏目模版并匹配成功!");

                    BindListBox();
                }
            }
        }
Пример #12
0
        public string GetCharset(string fileName)
        {
            var charset = FileUtils.GetFileCharset(PathUtils.Combine(_directoryPath, fileName));

            return(ECharsetUtils.GetText(charset));
        }
Пример #13
0
        public void ImportTemplates(bool overwrite, string administratorName)
        {
            if (!FileUtils.IsFileExists(_filePath))
            {
                return;
            }
            var feed = AtomFeed.Load(FileUtils.GetFileStreamReadOnly(_filePath));

            var fso = new FileSystemObject(_publishmentSystemId);

            foreach (AtomEntry entry in feed.Entries)
            {
                var templateName = AtomUtility.GetDcElementContent(entry.AdditionalElements, "TemplateName");
                if (!string.IsNullOrEmpty(templateName))
                {
                    var templateInfo = new TemplateInfo
                    {
                        PublishmentSystemId = _publishmentSystemId,
                        TemplateName        = templateName,
                        TemplateType        =
                            ETemplateTypeUtils.GetEnumType(AtomUtility.GetDcElementContent(entry.AdditionalElements, "TemplateType")),
                        RelatedFileName     = AtomUtility.GetDcElementContent(entry.AdditionalElements, "RelatedFileName"),
                        CreatedFileFullName = AtomUtility.GetDcElementContent(entry.AdditionalElements, "CreatedFileFullName"),
                        CreatedFileExtName  = AtomUtility.GetDcElementContent(entry.AdditionalElements, "CreatedFileExtName"),
                        Charset             = ECharsetUtils.GetEnumType(AtomUtility.GetDcElementContent(entry.AdditionalElements, "Charset")),
                        IsDefault           = false
                    };

                    var templateContent = AtomUtility.Decrypt(AtomUtility.GetDcElementContent(entry.AdditionalElements, "Content"));

                    var srcTemplateInfo = TemplateManager.GetTemplateInfoByTemplateName(_publishmentSystemId, templateInfo.TemplateType, templateInfo.TemplateName);

                    int templateId;

                    if (srcTemplateInfo != null)
                    {
                        if (overwrite)
                        {
                            srcTemplateInfo.RelatedFileName     = templateInfo.RelatedFileName;
                            srcTemplateInfo.TemplateType        = templateInfo.TemplateType;
                            srcTemplateInfo.CreatedFileFullName = templateInfo.CreatedFileFullName;
                            srcTemplateInfo.CreatedFileExtName  = templateInfo.CreatedFileExtName;
                            srcTemplateInfo.Charset             = templateInfo.Charset;
                            DataProvider.TemplateDao.Update(fso.PublishmentSystemInfo, srcTemplateInfo, templateContent, administratorName);
                            templateId = srcTemplateInfo.TemplateId;
                        }
                        else
                        {
                            templateInfo.TemplateName = DataProvider.TemplateDao.GetImportTemplateName(_publishmentSystemId, templateInfo.TemplateName);
                            templateId = DataProvider.TemplateDao.Insert(templateInfo, templateContent, administratorName);
                        }
                    }
                    else
                    {
                        templateId = DataProvider.TemplateDao.Insert(templateInfo, templateContent, administratorName);
                    }

                    if (templateInfo.TemplateType == ETemplateType.FileTemplate)
                    {
                        fso.CreateFile(templateId);
                    }
                }
            }
        }
Пример #14
0
        public TemplateInfo GetTemplateByUrlType(int publishmentSystemId, ETemplateType type, string createdFileFullName)
        {
            TemplateInfo info  = null;
            var          parms = new IDataParameter[]
            {
                GetParameter(ParmPublishmentSystemId, EDataType.Integer, publishmentSystemId),
                GetParameter(ParmTemplateType, EDataType.VarChar, 50, ETemplateTypeUtils.GetValue(type)),
                GetParameter(ParmCreatedFileFullName, EDataType.VarChar, 50, createdFileFullName)
            };

            using (var rdr = ExecuteReader(SqlSelectTemplateByUrlType, parms))
            {
                while (rdr.Read())
                {
                    var i = 0;
                    info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), ETemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                }
                rdr.Close();
            }
            return(info);
        }
Пример #15
0
        public List <TemplateInfo> GetTemplateInfoListOfFile(int siteId)
        {
            var list = new List <TemplateInfo>();

            string sqlString =
                $"SELECT Id, SiteId, TemplateName, TemplateType, RelatedFileName, CreatedFileFullName, CreatedFileExtName, Charset, IsDefault FROM siteserver_Template WHERE SiteId = {siteId} AND TemplateType = '{TemplateType.FileTemplate.Value}' ORDER BY RelatedFileName";

            using (var rdr = ExecuteReader(sqlString))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), TemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                    list.Add(info);
                }
                rdr.Close();
            }
            return(list);
        }
Пример #16
0
        public void Page_Load(object sender, EventArgs e)
        {
            if (IsForbidden)
            {
                return;
            }

            PageUtils.CheckRequestParameter("PublishmentSystemID");

            TemplateInfo templateInfo = null;

            if (Body.GetQueryInt("TemplateID") > 0)
            {
                var templateId = Body.GetQueryInt("TemplateID");
                _isCopy      = Body.GetQueryBool("IsCopy");
                templateInfo = TemplateManager.GetTemplateInfo(PublishmentSystemId, templateId);
                if (templateInfo != null)
                {
                    _theTemplateType = templateInfo.TemplateType;
                }
            }
            else
            {
                _theTemplateType = ETemplateTypeUtils.GetEnumType(Request.QueryString["TemplateType"]);
            }
            TemplateTypeString = ETemplateTypeUtils.GetText(_theTemplateType);

            if (_theTemplateType == ETemplateType.IndexPageTemplate || _theTemplateType == ETemplateType.FileTemplate)
            {
                CreatedFileFullNameRow.Visible = true;
            }
            else
            {
                CreatedFileFullNameRow.Visible = false;
            }

            if (!IsPostBack)
            {
                var pageTitle = Body.GetQueryInt("TemplateID") > 0 ? "编辑模板" : "添加模板";
                BreadCrumb(AppManager.Cms.LeftMenu.IdTemplate, pageTitle, AppManager.Cms.Permission.WebSite.Template);

                ltlPageTitle.Text = pageTitle;

                var isCodeMirror = PublishmentSystemInfo.Additional.ConfigTemplateIsCodeMirror;
                btnEditorType.Text   = isCodeMirror ? "采用纯文本编辑模式" : "采用代码编辑模式";
                phCodeMirror.Visible = isCodeMirror;

                EFileSystemTypeUtils.AddWebPageListItems(CreatedFileExtNameDropDownList);

                ECharsetUtils.AddListItems(Charset);

                if (Body.GetQueryInt("TemplateID") > 0)
                {
                    if (templateInfo != null)
                    {
                        Content.Text = StlCacheManager.FileContent.GetTemplateContent(PublishmentSystemInfo, templateInfo);

                        if (_isCopy)
                        {
                            TemplateName.Text        = templateInfo.TemplateName + "_复件";
                            RelatedFileName.Text     = PathUtils.RemoveExtension(templateInfo.RelatedFileName) + "_复件";
                            CreatedFileFullName.Text = PathUtils.RemoveExtension(templateInfo.CreatedFileFullName) + "_复件";
                        }
                        else
                        {
                            TemplateName.Text        = templateInfo.TemplateName;
                            RelatedFileName.Text     = PathUtils.RemoveExtension(templateInfo.RelatedFileName);
                            CreatedFileFullName.Text = PathUtils.RemoveExtension(templateInfo.CreatedFileFullName);

                            LtlCommands.Text +=
                                $@"<a href=""javascript:;"" class=""btn btn-info"" onclick=""{ModalProgressBar.GetOpenWindowStringWithCreateByTemplate(PublishmentSystemId, templateInfo.TemplateId)}"">生成页面</a><a href=""javascript:;"" class=""btn btn-info"" onclick=""{ModalTemplateRestore.GetOpenLayerString(PublishmentSystemId, templateInfo.TemplateId, string.Empty)}"">还原历史版本</a>";

                            if (Body.GetQueryInt("TemplateLogID") > 0)
                            {
                                var templateLogId = Body.GetQueryInt("TemplateLogID");
                                if (templateLogId > 0)
                                {
                                    Content.Text = DataProvider.TemplateLogDao.GetTemplateContent(templateLogId);
                                    SuccessMessage("已导入历史版本的模板内容,点击确定保存模板");
                                }
                            }
                        }

                        ControlUtils.SelectListItemsIgnoreCase(Charset, ECharsetUtils.GetValue(templateInfo.Charset));

                        ControlUtils.SelectListItems(CreatedFileExtNameDropDownList, GetTemplateFileExtension(templateInfo));
                        TemplateType.Value = ETemplateTypeUtils.GetValue(templateInfo.TemplateType);
                    }
                }
                else
                {
                    RelatedFileName.Text = "T_";
                    if (_theTemplateType == ETemplateType.ChannelTemplate)
                    {
                        CreatedFileFullName.Text = "index";
                    }
                    else
                    {
                        CreatedFileFullName.Text = "@/";
                    }
                    ControlUtils.SelectListItemsIgnoreCase(Charset, PublishmentSystemInfo.Additional.Charset);
                    ControlUtils.SelectListItems(CreatedFileExtNameDropDownList, EFileSystemTypeUtils.GetValue(EFileSystemType.Html));
                    TemplateType.Value = Body.GetQueryString("TemplateType");
                }
            }
        }
Пример #17
0
        public List <TemplateInfo> GetTemplateInfoListBySiteId(int siteId)
        {
            var list = new List <TemplateInfo>();

            var parms = new IDataParameter[]
            {
                GetParameter(ParmSiteId, DataType.Integer, siteId)
            };

            using (var rdr = ExecuteReader(SqlSelectAllTemplateBySiteId, parms))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), TemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                    list.Add(info);
                }
                rdr.Close();
            }
            return(list);
        }
Пример #18
0
        public override void Submit_OnClick(object sender, EventArgs e)
        {
            if (!Page.IsPostBack || !Page.IsValid)
            {
                return;
            }

            if (_fileName != null)
            {
                var isChanged = false;
                if (PathUtils.RemoveExtension(_fileName) != PathUtils.RemoveExtension(TbRelatedFileName.Text))//文件名改变
                {
                    var fileNames = DirectoryUtils.GetFileNames(_directoryPath);
                    foreach (var theFileName in fileNames)
                    {
                        var fileNameWithoutExtension = PathUtils.RemoveExtension(theFileName);
                        if (fileNameWithoutExtension == TbRelatedFileName.Text.ToLower())
                        {
                            FailMessage("脚本文件修改失败,脚本文件已存在!");
                            return;
                        }
                    }

                    isChanged = true;
                }

                var previousFileName = string.Empty;
                if (isChanged)
                {
                    previousFileName = _fileName;
                }

                var currentFileName = TbRelatedFileName.Text + ".js";
                var charset         = ECharsetUtils.GetEnumType(DdlCharset.SelectedValue);
                FileUtils.WriteText(PathUtils.Combine(_directoryPath, currentFileName), charset, TbContent.Text);
                if (!string.IsNullOrEmpty(previousFileName))
                {
                    FileUtils.DeleteFileIfExists(PathUtils.Combine(_directoryPath, previousFileName));
                }
                AuthRequest.AddSiteLog(SiteId, "修改脚本文件", $"脚本文件:{currentFileName}");
                SuccessMessage("脚本文件修改成功!");
                AddWaitAndRedirectScript(PageTemplateJs.GetRedirectUrl(SiteId));
            }
            else
            {
                var currentFileName = TbRelatedFileName.Text + ".js";

                var fileNames = DirectoryUtils.GetFileNames(_directoryPath);
                foreach (var theFileName in fileNames)
                {
                    if (StringUtils.EqualsIgnoreCase(theFileName, currentFileName))
                    {
                        FailMessage("脚本文件添加失败,脚本文件文件已存在!");
                        return;
                    }
                }

                var charset = ECharsetUtils.GetEnumType(DdlCharset.SelectedValue);
                FileUtils.WriteText(PathUtils.Combine(_directoryPath, currentFileName), charset, TbContent.Text);
                AuthRequest.AddSiteLog(SiteId, "添加脚本文件", $"脚本文件:{currentFileName}");
                SuccessMessage("脚本文件添加成功!");
                AddWaitAndRedirectScript(PageTemplateJs.GetRedirectUrl(SiteId));
            }
        }
Пример #19
0
        public TemplateInfo GetTemplateById(int siteId, TemplateType type, string tId)
        {
            TemplateInfo info  = null;
            var          parms = new IDataParameter[]
            {
                GetParameter(ParmSiteId, DataType.Integer, siteId),
                GetParameter(ParmTemplateType, DataType.VarChar, 50, type.Value),
                GetParameter(ParmId, DataType.Integer, tId)
            };

            using (var rdr = ExecuteReader(SqlSelectTemplateById, parms))
            {
                if (rdr.Read())
                {
                    var i = 0;
                    info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), TemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                }
                rdr.Close();
            }
            return(info);
        }
Пример #20
0
        public void Page_Load(object sender, EventArgs e)
        {
            if (IsForbidden)
            {
                return;
            }

            PageUtils.CheckRequestParameter("siteId", "RelatedPath", "FileName", "IsCreate");
            _relatedPath = Body.GetQueryString("RelatedPath").Trim('/');
            if (!_relatedPath.StartsWith("@"))
            {
                _relatedPath = "@/" + _relatedPath;
            }
            _theFileName = Body.GetQueryString("FileName");
            _isCreate    = Body.GetQueryBool("IsCreate");
            _fileCharset = ECharset.utf_8;
            if (SiteInfo != null)
            {
                _fileCharset = ECharsetUtils.GetEnumType(SiteInfo.Additional.Charset);
            }

            if (_isCreate == false)
            {
                var filePath = SiteInfo != null
                    ? PathUtility.MapPath(SiteInfo, PathUtils.Combine(_relatedPath, _theFileName))
                    : PathUtils.MapPath(PathUtils.Combine(_relatedPath, _theFileName));

                if (!FileUtils.IsFileExists(filePath))
                {
                    PageUtils.RedirectToErrorPage("此文件不存在!");
                    return;
                }
            }

            if (IsPostBack)
            {
                return;
            }

            DdlCharset.Items.Add(new ListItem("默认", string.Empty));
            ECharsetUtils.AddListItems(DdlCharset);

            if (_isCreate == false)
            {
                var filePath = SiteInfo != null?PathUtility.MapPath(SiteInfo, PathUtils.Combine(_relatedPath, _theFileName)) : PathUtils.MapPath(PathUtils.Combine(_relatedPath, _theFileName));

                TbFileName.Text    = _theFileName;
                TbFileName.Enabled = false;
                TbFileContent.Text = FileUtils.ReadText(filePath, _fileCharset);
            }

            if (_isCreate)
            {
                return;
            }

            if (SiteInfo != null)
            {
                LtlOpen.Text =
                    $@"<a class=""btn btn-default m-l-10"" href=""{PageUtility.ParseNavigationUrl(SiteInfo,
                        PageUtils.Combine(_relatedPath, _theFileName), true)}"" target=""_blank"">浏 览</a>";
            }
            else
            {
                LtlOpen.Text =
                    $@"<a class=""btn btn-default m-l-10"" href=""{PageUtils.ParseConfigRootUrl(PageUtils.Combine(_relatedPath, _theFileName))}"" target=""_blank"">浏 览</a>";
            }
            LtlView.Text = $@"<a class=""btn btn-default m-l-10"" href=""{ModalFileView.GetRedirectUrl(SiteId, _relatedPath, _theFileName)}"">查 看</a>";
        }
Пример #21
0
        public void Page_Load(object sender, EventArgs e)
        {
            if (IsForbidden)
            {
                return;
            }

            PageUtils.CheckRequestParameter("PublishmentSystemID", "RelatedPath", "FileName", "IsCreate");
            _relatedPath = Body.GetQueryString("RelatedPath").Trim('/');
            if (!_relatedPath.StartsWith("@"))
            {
                _relatedPath = "@/" + _relatedPath;
            }
            _theFileName = Body.GetQueryString("FileName");
            _isCreate    = Body.GetQueryBool("IsCreate");
            _fileCharset = ECharset.utf_8;
            if (PublishmentSystemInfo != null)
            {
                _fileCharset = ECharsetUtils.GetEnumType(PublishmentSystemInfo.Additional.Charset);
            }

            if (_isCreate == false)
            {
                string filePath;
                if (PublishmentSystemInfo != null)
                {
                    filePath = PathUtility.MapPath(PublishmentSystemInfo, PathUtils.Combine(_relatedPath, _theFileName));
                }
                else
                {
                    filePath = PathUtils.MapPath(PathUtils.Combine(_relatedPath, _theFileName));
                }
                if (!FileUtils.IsFileExists(filePath))
                {
                    PageUtils.RedirectToErrorPage("此文件不存在!");
                    return;
                }
            }

            if (!IsPostBack)
            {
                Charset.Items.Add(new ListItem("默认", string.Empty));
                ECharsetUtils.AddListItems(Charset);

                if (_isCreate == false)
                {
                    var filePath = string.Empty;
                    if (PublishmentSystemInfo != null)
                    {
                        filePath = PathUtility.MapPath(PublishmentSystemInfo, PathUtils.Combine(_relatedPath, _theFileName));
                    }
                    else
                    {
                        filePath = PathUtils.MapPath(PathUtils.Combine(_relatedPath, _theFileName));
                    }
                    FileName.Text           = _theFileName;
                    FileName.Enabled        = false;
                    FileContentTextBox.Text = FileUtils.ReadText(filePath, _fileCharset);
                }

                if (!_isCreate)
                {
                    if (PublishmentSystemInfo != null)
                    {
                        ltlOpen.Text =
                            $@"<a href=""{PageUtility.ParseNavigationUrl(PublishmentSystemInfo,
                                PageUtils.Combine(_relatedPath, _theFileName))}"" target=""_blank"">浏 览</a>&nbsp;&nbsp;";
                    }
                    else
                    {
                        ltlOpen.Text =
                            $@"<a href=""{PageUtils.ParseConfigRootUrl(PageUtils.Combine(_relatedPath, _theFileName))}"" target=""_blank"">浏 览</a>&nbsp;&nbsp;";
                    }
                    ltlView.Text = $@"<a href=""{ModalFileView.GetRedirectUrl(PublishmentSystemId, _relatedPath, _theFileName)}"">属 性</a>";
                }
            }
        }
Пример #22
0
        public ArrayList GetTemplateInfoArrayListOfFile(int publishmentSystemId)
        {
            var arraylist = new ArrayList();

            string sqlString =
                $"SELECT TemplateID, PublishmentSystemID, TemplateName, TemplateType, RelatedFileName, CreatedFileFullName, CreatedFileExtName, Charset, IsDefault FROM siteserver_Template WHERE PublishmentSystemID = {publishmentSystemId} AND TemplateType = '{ETemplateTypeUtils.GetValue(ETemplateType.FileTemplate)}' ORDER BY RelatedFileName";

            using (var rdr = ExecuteReader(sqlString))
            {
                while (rdr.Read())
                {
                    var i    = 0;
                    var info = new TemplateInfo(GetInt(rdr, i++), GetInt(rdr, i++), GetString(rdr, i++), ETemplateTypeUtils.GetEnumType(GetString(rdr, i++)), GetString(rdr, i++), GetString(rdr, i++), GetString(rdr, i++), ECharsetUtils.GetEnumType(GetString(rdr, i++)), GetBool(rdr, i));
                    arraylist.Add(info);
                }
                rdr.Close();
            }
            return(arraylist);
        }