Beispiel #1
0
 public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     base.Validate(_context, _transaction);
     FileFolder = $"{MixService.GetTemplateUploadFolder(Specificulture)}";
     if (MediaFile?.FileStream != null)
     {
         MediaFile.Filename   = $"{SeoHelper.GetSEOString(MediaFile.Filename).ToLower()}-{ DateTime.UtcNow.Ticks}";
         MediaFile.FileFolder = FileFolder;
         var isSaved = MixFileRepository.Instance.SaveWebFile(MediaFile);
         if (isSaved)
         {
             Extension  = MediaFile.Extension.ToLower();
             FileName   = MediaFile.Filename;
             FileFolder = MediaFile.FileFolder;
             if (string.IsNullOrEmpty(Title))
             {
                 Title = FileName;
             }
         }
         else
         {
             IsValid = false;
         }
     }
     else
     {
         if (File != null)
         {
             FileName  = $"{SeoHelper.GetSEOString(File.FileName[..File.FileName.LastIndexOf('.')]).ToLower()}-{ DateTime.UtcNow.Ticks}";
Beispiel #2
0
 public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     Id              = 1;
     Name            = SeoHelper.GetSEOString(Title);
     CreatedDateTime = DateTime.UtcNow;
     return(base.ParseModel(_context, _transaction));
 }
Beispiel #3
0
        /// <summary>
        /// Step 4
        ///     - Init default theme
        /// </summary>
        /// <param name="siteName"></param>
        /// <param name="_context"></param>
        /// <param name="_transaction"></param>
        /// <returns></returns>
        public async Task <RepositoryResponse <bool> > InitThemesAsync(string siteName
                                                                       , MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot);

            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };
            var getThemes = ViewModels.MixThemes.InitViewModel.Repository.GetModelList(_context: context, _transaction: transaction);

            if (!context.MixTheme.Any())
            {
                ViewModels.MixThemes.InitViewModel theme = new ViewModels.MixThemes.InitViewModel(new MixTheme()
                {
                    Id              = 1,
                    Title           = siteName,
                    Name            = SeoHelper.GetSEOString(siteName),
                    CreatedDateTime = DateTime.UtcNow,
                    CreatedBy       = "Admin",
                    Status          = (int)MixContentStatus.Published,
                }, context, transaction);

                var saveResult = await theme.SaveModelAsync(true, context, transaction);

                ViewModelHelper.HandleResult(saveResult, ref result);
            }
            UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction);

            return(new RepositoryResponse <bool>()
            {
                IsSucceed = result.IsSucceed
            });
        }
Beispiel #4
0
 public override void Validate(SioCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (MediaFile?.FileStream != null)
     {
         MediaFile.Filename   = SeoHelper.GetSEOString(MediaFile.Filename) + Guid.NewGuid().ToString("N");
         MediaFile.FileFolder = CommonHelper.GetFullPath(new[] {
             //SioService.GetConfig<string>("UploadFolder"),
             SioService.GetTemplateUploadFolder(Specificulture),
             DateTime.UtcNow.ToString("yyyy-MM")
         });;
         var isSaved = FileRepository.Instance.SaveWebFile(MediaFile);
         if (isSaved)
         {
             Extension  = MediaFile.Extension;
             FileName   = MediaFile.Filename;
             FileFolder = MediaFile.FileFolder;
         }
         else
         {
             IsValid = false;
         }
     }
     FileType = FileType ?? "image";
     base.Validate(_context, _transaction);
 }
Beispiel #5
0
        protected static void InitPages(string culture, MixCmsContext context, IDbContextTransaction transaction)
        {
            /* Init Languages */
            var pages   = FileRepository.Instance.GetFile(MixConstants.CONST_FILE_PAGES, "data", true, "{}");
            var obj     = JObject.Parse(pages.Content);
            var arrPage = obj["data"].ToObject <List <MixPage> >();

            foreach (var page in arrPage)
            {
                page.Specificulture       = culture;
                page.SeoTitle             = page.Title.ToLower();
                page.SeoName              = SeoHelper.GetSEOString(page.Title);
                page.SeoDescription       = page.Title.ToLower();
                page.SeoKeywords          = page.Title.ToLower();
                page.CreatedDateTime      = DateTime.UtcNow;
                page.CreatedBy            = "SuperAdmin";
                context.Entry(page).State = EntityState.Added;
                var alias = new MixUrlAlias()
                {
                    Id              = page.Id,
                    SourceId        = page.Id.ToString(),
                    Type            = (int)UrlAliasType.Page,
                    Specificulture  = culture,
                    CreatedDateTime = DateTime.UtcNow,
                    Alias           = page.Title.ToLower(),
                    Status          = (int)MixContentStatus.Published
                };
                context.Entry(alias).State = EntityState.Added;
            }
        }
Beispiel #6
0
		public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
		{
			this.set_Id(1);
			this.set_Name(SeoHelper.GetSEOString(this.get_Title(), '-'));
			this.set_CreatedDateTime(DateTime.get_UtcNow());
			return this.ParseModel(_context, _transaction);
		}
Beispiel #7
0
        private void GenerateSEO()
        {
            if (string.IsNullOrEmpty(this.SeoName))
            {
                this.SeoName = SeoHelper.GetSEOString(this.Title);
            }
            int    i    = 1;
            string name = SeoName;

            while (Repository.CheckIsExists(a => a.SeoName == name && a.Specificulture == Specificulture && a.Id != Id))
            {
                name = SeoName + "_" + i;
                i++;
            }
            SeoName = name;

            if (string.IsNullOrEmpty(this.SeoTitle))
            {
                this.SeoTitle = SeoHelper.GetSEOString(this.Title);
            }

            if (string.IsNullOrEmpty(this.SeoDescription))
            {
                this.SeoDescription = SeoHelper.GetSEOString(this.Title);
            }

            if (string.IsNullOrEmpty(this.SeoKeywords))
            {
                this.SeoKeywords = SeoHelper.GetSEOString(this.Title);
            }
        }
Beispiel #8
0
 protected static void InitPages(string culture, MixCmsContext context, IDbContextTransaction transaction)
 {
     V_0 = JObject.Parse(FileRepository.get_Instance().GetFile("pages.json", "data", true, "{}").get_Content()).get_Item("data").ToObject <List <MixPage> >().GetEnumerator();
     try
     {
         while (V_0.MoveNext())
         {
             V_1 = V_0.get_Current();
             V_1.set_Specificulture(culture);
             V_1.set_SeoTitle(V_1.get_Title().ToLower());
             V_1.set_SeoName(SeoHelper.GetSEOString(V_1.get_Title(), '-'));
             V_1.set_SeoDescription(V_1.get_Title().ToLower());
             V_1.set_SeoKeywords(V_1.get_Title().ToLower());
             V_1.set_CreatedDateTime(DateTime.get_UtcNow());
             V_1.set_CreatedBy("SuperAdmin");
             context.Entry <MixPage>(V_1).set_State(4);
             stackVariable43 = new MixUrlAlias();
             stackVariable43.set_Id(V_1.get_Id());
             stackVariable43.set_SourceId(V_1.get_Id().ToString());
             stackVariable43.set_Type(0);
             stackVariable43.set_Specificulture(culture);
             stackVariable43.set_CreatedDateTime(DateTime.get_UtcNow());
             stackVariable43.set_Alias(V_1.get_Title().ToLower());
             stackVariable43.set_Status(2.ToString());
             context.Entry <MixUrlAlias>(stackVariable43).set_State(4);
         }
     }
     finally
     {
         ((IDisposable)V_0).Dispose();
     }
     return;
 }
Beispiel #9
0
		private void GenerateSEO()
		{
			V_0 = new Mix.Cms.Lib.ViewModels.MixPosts.UpdateViewModel.u003cu003ec__DisplayClass220_0();
			V_0.u003cu003e4__this = this;
			if (string.IsNullOrEmpty(this.get_SeoName()))
			{
				this.set_SeoName(SeoHelper.GetSEOString(this.get_Title(), '-'));
			}
			V_1 = 1;
			V_0.name = this.get_SeoName();
			while (ViewModelBase<MixCmsContext, MixPost, Mix.Cms.Lib.ViewModels.MixPosts.UpdateViewModel>.Repository.CheckIsExists(new Func<MixPost, bool>(V_0.u003cGenerateSEOu003eb__0), null, null))
			{
				V_0.name = string.Concat(this.get_SeoName(), "_", V_1.ToString());
				V_1 = V_1 + 1;
			}
			this.set_SeoName(V_0.name);
			if (string.IsNullOrEmpty(this.get_SeoTitle()))
			{
				this.set_SeoTitle(SeoHelper.GetSEOString(this.get_Title(), '-'));
			}
			if (string.IsNullOrEmpty(this.get_SeoDescription()))
			{
				this.set_SeoDescription(SeoHelper.GetSEOString(this.get_Title(), '-'));
			}
			if (string.IsNullOrEmpty(this.get_SeoKeywords()))
			{
				this.set_SeoKeywords(SeoHelper.GetSEOString(this.get_Title(), '-'));
			}
			return;
		}
Beispiel #10
0
        private void GenerateSEO(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            if (string.IsNullOrEmpty(this.SeoName))
            {
                this.SeoName = SeoHelper.GetSEOString(this.Title);
            }
            int    i    = 1;
            string name = SeoName;

            while (UpdateViewModel.Repository.CheckIsExists(a => a.SeoName == name && a.Specificulture == Specificulture && a.Id != Id, _context, _transaction))
            {
                name = SeoName + "_" + i;
                i++;
            }
            SeoName = name;

            if (string.IsNullOrEmpty(this.SeoTitle))
            {
                this.SeoTitle = this.Title;
            }

            if (string.IsNullOrEmpty(this.Excerpt))
            {
                this.SeoDescription = this.Excerpt;
            }

            if (string.IsNullOrEmpty(this.SeoKeywords))
            {
                this.SeoKeywords = SeoHelper.GetSEOString(this.Title);
            }
        }
Beispiel #11
0
        [RequestFormSizeLimit(valueCountLimit: 214748364)] // 200Mb
        public async Task <RepositoryResponse <Cms.Lib.ViewModels.MixThemes.InitViewModel> > Save([FromForm] string model, [FromForm] IFormFile assets, [FromForm] IFormFile theme)
        {
            var json = JObject.Parse(model);
            var data = json.ToObject <Lib.ViewModels.MixThemes.InitViewModel>();

            if (theme != null)
            {
                string importFolder = $"Imports/Themes/{DateTime.UtcNow.ToString("dd-MM-yyyy")}/{data.Name}";
                FileRepository.Instance.SaveWebFile(theme, theme.FileName, importFolder);
                data.TemplateAsset = new Lib.ViewModels.FileViewModel(theme, importFolder);
            }
            else
            {
                if (data.IsCreateDefault)
                {
                    data.TemplateAsset = new Lib.ViewModels.FileViewModel()
                    {
                        Filename   = "default",
                        Extension  = ".zip",
                        FileFolder = "Imports/Themes"
                    };
                }
                else
                {
                    data.TemplateAsset = new Lib.ViewModels.FileViewModel()
                    {
                        Filename   = "default_blank",
                        Extension  = ".zip",
                        FileFolder = "Imports/Themes"
                    };
                }
            }

            if (data != null)
            {
                string culture = MixService.GetConfig <string>("DefaultCulture");
                data.Title          = MixService.GetConfig <string>("SiteName", culture);
                data.Name           = SeoHelper.GetSEOString(data.Title);
                data.CreatedBy      = User.Claims.FirstOrDefault(c => c.Type == "Username")?.Value ?? "Init";
                data.Specificulture = _lang;
                var result = await data.SaveModelAsync(true);

                if (result.IsSucceed)
                {
                    // MixService.SetConfig<string>("SiteName", _lang, data.Title);
                    MixService.LoadFromDatabase();
                    MixService.SetConfig("InitStatus", 3);
                    MixService.SetConfig("IsInit", false);
                    MixService.SaveSettings();
                    _ = MixCacheService.RemoveCacheAsync();
                    MixService.Reload();
                }
                return(result);
            }
            return(new RepositoryResponse <Lib.ViewModels.MixThemes.InitViewModel>()
            {
                Status = 501
            });
        }
Beispiel #12
0
        public override RepositoryResponse <bool> SaveSubModels(MixTheme parent, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            RepositoryResponse <bool> result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            // Create default template if create new without import template assets
            if (Id == 0 && (TemplateAsset.Content == null && TemplateAsset.FileStream == null))
            {
                string defaultFolder = CommonHelper.GetFullPath(new string[] {
                    MixConstants.Folder.TemplatesFolder,
                    "Default"
                });
                bool   copyResult          = FileRepository.Instance.CopyDirectory(defaultFolder, TemplateFolder);
                string defaultAssetsFolder = CommonHelper.GetFullPath(new string[] {
                    MixConstants.Folder.WebRootPath,
                    MixConstants.Folder.FileFolder,
                    MixConstants.Folder.TemplatesAssetFolder,
                    "Default"
                });
                copyResult = FileRepository.Instance.CopyDirectory(defaultAssetsFolder, CommonHelper.GetFullPath(new string[] {
                    MixConstants.Folder.WebRootPath, AssetFolder
                }));

                var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder);
                //TODO: Create default asset
                foreach (var file in files)
                {
                    string content = file.Content.Replace($"/Content/Templates/Default/",
                                                          $"/Content/Templates/{SeoHelper.GetSEOString(Name)}/");
                    MixTemplates.InitViewModel template = new MixTemplates.InitViewModel(
                        new MixTemplate()
                    {
                        FileFolder      = file.FileFolder,
                        FileName        = file.Filename,
                        Content         = content,
                        Extension       = file.Extension,
                        CreatedDateTime = DateTime.UtcNow,
                        LastModified    = DateTime.UtcNow,
                        ThemeId         = Model.Id,
                        ThemeName       = Model.Name,
                        FolderType      = file.FolderName,
                        ModifiedBy      = CreatedBy
                    }, _context, _transaction);
                    var saveResult = template.SaveModel(true, _context, _transaction);
                    result.IsSucceed = result.IsSucceed && saveResult.IsSucceed;
                    if (!saveResult.IsSucceed)
                    {
                        result.Exception = saveResult.Exception;
                        result.Errors.AddRange(saveResult.Errors);
                        break;
                    }
                }
            }

            return(result);
        }
Beispiel #13
0
        protected async Task <List <TView> > GetListAsync <TView>(Expression <Func <TModel, bool> > predicate, string key, ODataQueryOptions <TModel> queryOptions)
            where TView : ODataViewModelBase <TDbContext, TModel, TView>
        {
            if (queryOptions.Filter != null)
            {
                ODataHelper <TModel> .ParseFilter(queryOptions.Filter.FilterClause.Expression, ref predicate);
            }
            int?          top     = queryOptions.Top?.Value;
            var           skip    = queryOptions.Skip?.Value ?? 0;
            RequestPaging request = new RequestPaging()
            {
                PageIndex = 0,
                PageSize  = top.HasValue ? top + top * (skip / top + 1) : null,
                OrderBy   = queryOptions.OrderBy?.RawValue
                            //Top = queryOptions.Top?.Value,
                            //Skip = queryOptions.Skip?.Value
            };
            var          cacheKey = $"odata_{_lang}_{typeof(TView).FullName}_{key}_{SeoHelper.GetSEOString(queryOptions.Filter?.RawValue, '_')}_ps-{request.PageSize}";
            List <TView> data     = null;

            //if (MixService.GetConfig<bool>("IsCache"))
            //{
            //    var getData = await MixCacheService.GetAsync<RepositoryResponse<PaginationModel<TView>>>(cacheKey);
            //    if (getData != null)
            //    {
            //        data = getData.Data.Items;
            //    }
            //}

            if (data == null)
            {
                if (predicate != null)
                {
                    var getData = await ODataDefaultRepository <TDbContext, TModel, TView> .Instance.GetModelListByAsync(predicate,
                                                                                                                         request.OrderBy, request.Direction, request.PageSize, request.PageIndex, request.Skip, request.Top).ConfigureAwait(false);

                    //if (getData.IsSucceed)
                    //{
                    //    await MixCacheService.SetAsync(cacheKey, getData);
                    //    data = getData.Data.Items;
                    //}
                }
                else
                {
                    var getData = await ODataDefaultRepository <TDbContext, TModel, TView> .Instance.GetModelListAsync(
                        request.OrderBy, request.Direction, request.PageSize, request.PageIndex
                        , null, null).ConfigureAwait(false);

                    //if (getData.IsSucceed)
                    //{
                    //    await MixCacheService.SetAsync(cacheKey, getData);
                    //    data = getData.Data.Items;
                    //}
                }
            }

            return(data);
        }
        public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(MixTheme parent, MixCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            RepositoryResponse <bool> result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            if (Id == 0)
            {
                // Clone Default templates
                Name = SeoHelper.GetSEOString(Title);
                string defaultTemplateFolder = CommonHelper.GetFullPath(new string[] {
                    MixConstants.Folder.TemplatesFolder,
                    "Default"
                });
                bool copyResult = FileRepository.Instance.CopyDirectory(defaultTemplateFolder, TemplateFolder);


                string defaultAssetsFolder = CommonHelper.GetFullPath(new string[] {
                    MixConstants.Folder.WebRootPath,
                    MixConstants.Folder.FileFolder,
                    MixConstants.Folder.TemplatesAssetFolder,
                    "Default"
                });
                copyResult = FileRepository.Instance.CopyDirectory(defaultAssetsFolder, AssetFolder);

                var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder);
                //TODO: Create default asset
                foreach (var file in files)
                {
                    MixTemplates.InitViewModel template = new MixTemplates.InitViewModel(
                        new MixTemplate()
                    {
                        FileFolder      = file.FileFolder,
                        FileName        = file.Filename,
                        Content         = file.Content,
                        Extension       = file.Extension,
                        CreatedDateTime = DateTime.UtcNow,
                        LastModified    = DateTime.UtcNow,
                        ThemeId         = Model.Id,
                        ThemeName       = Model.Name,
                        FolderType      = file.FolderName,
                        ModifiedBy      = CreatedBy
                    }, _context, _transaction);
                    var saveResult = template.SaveModel(true, _context, _transaction);
                    result.IsSucceed = result.IsSucceed && saveResult.IsSucceed;
                    if (!saveResult.IsSucceed)
                    {
                        result.Exception = saveResult.Exception;
                        result.Errors.AddRange(saveResult.Errors);
                        break;
                    }
                }
            }

            return(result);
        }
Beispiel #15
0
        public static async Task <RepositoryResponse <InitViewModel> > InitTheme(string model, string userName, string culture, IFormFile assets, IFormFile theme)
        {
            var json = JObject.Parse(model);
            var data = json.ToObject <InitViewModel>();

            if (data != null)
            {
                data.CreatedBy = userName;
                data.Status    = MixContentStatus.Published;
                string importFolder = $"{MixFolders.ImportFolder}/" +
                                      $"{DateTime.UtcNow.ToString("dd-MM-yyyy")}";
                if (theme != null)
                {
                    MixFileRepository.Instance.SaveWebFile(theme, $"{importFolder}");
                    data.TemplateAsset = new FileViewModel(theme, importFolder);
                }
                else
                {
                    if (data.IsCreateDefault)
                    {
                        data.TemplateAsset = new FileViewModel()
                        {
                            Filename   = "default",
                            Extension  = MixFileExtensions.Zip,
                            FileFolder = MixFolders.ImportFolder
                        };
                    }
                    else
                    {
                        data.TemplateAsset = new FileViewModel()
                        {
                            Filename   = "default_blank",
                            Extension  = MixFileExtensions.Zip,
                            FileFolder = MixFolders.ImportFolder
                        };
                    }
                }

                data.Title          = MixService.GetConfig <string>(MixAppSettingKeywords.SiteName, culture);
                data.Name           = SeoHelper.GetSEOString(data.Title);
                data.Specificulture = culture;
                var result = await data.SaveModelAsync(true);

                if (result.IsSucceed)
                {
                    // MixService.SetConfig<string>(MixAppSettingKeywords.SiteName, _lang, data.Title);
                    MixService.LoadFromDatabase();
                    MixService.SetConfig("InitStatus", 3);
                    MixService.SetConfig(MixAppSettingKeywords.IsInit, false);
                    MixService.SaveSettings();
                    _ = Mix.Services.MixCacheService.RemoveCacheAsync();
                    MixService.Reload();
                }
                return(result);
            }
            return(new RepositoryResponse <InitViewModel>());
        }
Beispiel #16
0
 public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (Id == 0)
     {
         Id              = Repository.Max(m => m.Id).Data + 1;
         Name            = SeoHelper.GetSEOString(Title);
         CreatedDateTime = DateTime.UtcNow;
     }
     return(base.ParseModel(_context, _transaction));
 }
Beispiel #17
0
        public static async Task <RepositoryResponse <InitViewModel> > InitTheme(string model, string culture, IFormFile assets, IFormFile theme)
        {
            var json = JObject.Parse(model);
            var data = json.ToObject <Lib.ViewModels.MixThemes.InitViewModel>();

            if (data != null)
            {
                string importFolder = $"Imports/Themes/{DateTime.UtcNow.ToString("dd-MM-yyyy")}/{data.Name}";
                if (theme != null)
                {
                    Repositories.FileRepository.Instance.SaveWebFile(theme, theme.FileName, importFolder);
                    data.TemplateAsset = new Lib.ViewModels.FileViewModel(theme, importFolder);
                }
                else
                {
                    if (data.IsCreateDefault)
                    {
                        data.TemplateAsset = new Lib.ViewModels.FileViewModel()
                        {
                            Filename   = "default",
                            Extension  = ".zip",
                            FileFolder = "Imports/Themes"
                        };
                    }
                    else
                    {
                        data.TemplateAsset = new Lib.ViewModels.FileViewModel()
                        {
                            Filename   = "default_blank",
                            Extension  = ".zip",
                            FileFolder = "Imports/Themes"
                        };
                    }
                }

                data.Title          = MixService.GetConfig <string>("SiteName", culture);
                data.Name           = SeoHelper.GetSEOString(data.Title);
                data.Specificulture = culture;
                var result = await data.SaveModelAsync(true);

                if (result.IsSucceed)
                {
                    // MixService.SetConfig<string>("SiteName", _lang, data.Title);
                    MixService.LoadFromDatabase();
                    MixService.SetConfig("InitStatus", 3);
                    MixService.SetConfig("IsInit", false);
                    MixService.SaveSettings();
                    _ = Mix.Services.CacheService.RemoveCacheAsync();
                    MixService.Reload();
                }
                return(result);
            }
            return(new RepositoryResponse <InitViewModel>());
        }
Beispiel #18
0
 public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (!FileFolder.StartsWith(MixFolders.UploadsFolder))
     {
         FileFolder = $"{MixFolders.UploadsFolder}/{FileFolder}";
     }
     if (MediaFile?.FileStream != null)
     {
         FileFolder           = $"{MixService.GetTemplateUploadFolder(Specificulture)}";
         MediaFile.Filename   = $"{SeoHelper.GetSEOString(MediaFile.Filename).ToLower()}-{ DateTime.UtcNow.Ticks}";
         MediaFile.FileFolder = FileFolder;
         var isSaved = MixFileRepository.Instance.SaveWebFile(MediaFile);
         if (isSaved)
         {
             Extension  = MediaFile.Extension.ToLower();
             FileName   = MediaFile.Filename;
             FileFolder = MediaFile.FileFolder;
             if (string.IsNullOrEmpty(Title))
             {
                 Title = FileName;
             }
         }
         else
         {
             IsValid = false;
         }
     }
     else
     {
         if (File != null)
         {
             var saveFile = MixFileRepository.Instance.SaveWebFile(File, FileFolder);
             if (saveFile == null)
             {
                 IsValid = false;
                 Errors.Add("Cannot save file");
             }
             else
             {
                 if (string.IsNullOrEmpty(Title))
                 {
                     Title = FileName;
                 }
                 FileName  = saveFile.Filename;
                 Extension = saveFile.Extension;
             }
         }
     }
     FileType = FileType ?? "image";
     base.Validate(_context, _transaction);
 }
 public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (MediaFile?.FileStream != null)
     {
         FileFolder           = $"{MixService.GetTemplateUploadFolder(Specificulture)}/{DateTime.UtcNow.ToString("yyyy-MM")}";
         MediaFile.Filename   = $"{SeoHelper.GetSEOString(MediaFile.Filename).ToLower()}-{ DateTime.UtcNow.Ticks}";
         MediaFile.FileFolder = FileFolder;
         var isSaved = FileRepository.Instance.SaveWebFile(MediaFile);
         if (isSaved)
         {
             Extension  = MediaFile.Extension.ToLower();
             FileName   = MediaFile.Filename;
             FileFolder = MediaFile.FileFolder;
             if (string.IsNullOrEmpty(Title))
             {
                 Title = FileName;
             }
         }
         else
         {
             IsValid = false;
         }
     }
     else
     {
         if (File != null)
         {
             FileFolder = $"{MixService.GetTemplateUploadFolder(Specificulture)}/{DateTime.UtcNow.ToString("yyyy-MM")}";
             FileName   = SeoHelper.GetSEOString(File.FileName.Substring(0, File.FileName.LastIndexOf('.'))) + DateTime.UtcNow.Ticks;
             Extension  = File.FileName.Substring(File.FileName.LastIndexOf('.'));
             var saveFile = FileRepository.Instance.SaveWebFile(File, $"{FileName}{Extension}", FileFolder);
             if (saveFile.IsSucceed)
             {
                 IsValid = false;
                 Errors.AddRange(saveFile.Errors);
             }
             if (string.IsNullOrEmpty(Title))
             {
                 Title = FileName;
             }
         }
     }
     FileType = FileType ?? "image";
     base.Validate(_context, _transaction);
 }
Beispiel #20
0
 public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (Id == 0)
     {
         Id              = Repository.Max(m => m.Id, _context, _transaction).Data + 1;
         Name            = SeoHelper.GetSEOString(Title);
         CreatedDateTime = DateTime.UtcNow;
         //Import From existing Theme (zip)
         if (string.IsNullOrEmpty(TemplateAsset.Filename))
         {
             TemplateAsset = new Lib.ViewModels.FileViewModel()
             {
                 Filename   = "default_blank",
                 Extension  = MixFileExtensions.Zip,
                 FileFolder = MixFolders.ImportFolder
             };
         }
     }
     return(base.ParseModel(_context, _transaction));
 }
        private void GenerateSEO()
        {
            if (string.IsNullOrEmpty(this.SeoName))
            {
                this.SeoName = SeoHelper.GetSEOString(this.Title);
            }

            if (string.IsNullOrEmpty(this.SeoTitle))
            {
                this.SeoTitle = SeoHelper.GetSEOString(this.Title);
            }

            if (string.IsNullOrEmpty(this.SeoDescription))
            {
                this.SeoDescription = SeoHelper.GetSEOString(this.Title);
            }

            if (string.IsNullOrEmpty(this.SeoKeywords))
            {
                this.SeoKeywords = SeoHelper.GetSEOString(this.Title);
            }
        }
Beispiel #22
0
        private async Task <RepositoryResponse <ViewModels.MixThemes.InitViewModel> > InitThemesAsync(string siteName, MixCmsContext context, IDbContextTransaction transaction)
        {
            var getThemes = ViewModels.MixThemes.InitViewModel.Repository.GetModelList(_context: context, _transaction: transaction);

            if (!context.MixTheme.Any())
            {
                ViewModels.MixThemes.InitViewModel theme = new ViewModels.MixThemes.InitViewModel(new MixTheme()
                {
                    Id              = 1,
                    Title           = siteName,
                    Name            = SeoHelper.GetSEOString(siteName),
                    CreatedDateTime = DateTime.UtcNow,
                    CreatedBy       = "Admin",
                    Status          = (int)MixContentStatus.Published,
                }, context, transaction);

                return(await theme.SaveModelAsync(true, context, transaction));
            }

            return(new RepositoryResponse <ViewModels.MixThemes.InitViewModel>()
            {
                IsSucceed = true
            });
        }
 public override void Validate(SiocCmsContext _context = null, IDbContextTransaction _transaction = null)
 {
     if (MediaFile?.FileStream != null)
     {
         MediaFile.Filename   = SeoHelper.GetSEOString(MediaFile.Filename);
         MediaFile.FileFolder = SwCmsHelper.GetFullPath(new[] {
             SWCmsConstants.Parameters.UploadFolder,
             DateTime.UtcNow.ToString("MM-yyyy")
         });;
         var isSaved = FileRepository.Instance.SaveWebFile(MediaFile);
         if (isSaved)
         {
             Extension  = MediaFile.Extension;
             FileName   = MediaFile.Filename;
             FileFolder = MediaFile.FileFolder;
         }
         else
         {
             IsValid = false;
         }
     }
     FileType = FileType ?? "image";
     base.Validate(_context, _transaction);
 }
Beispiel #24
0
 public static string GetSEOString(string input)
 {
     return(SeoHelper.GetSEOString(input));
 }
Beispiel #25
0
        public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(SioTheme parent, SioCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            RepositoryResponse <bool> result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            try
            {
                // Clone Default templates
                Name = SeoHelper.GetSEOString(Title);
                string defaultTemplateFolder = $"{SioService.GetConfig<string>(SioConstants.ConfigurationKeyword.DefaultTemplateFolder) }";
                bool   copyResult            = FileRepository.Instance.CopyDirectory(defaultTemplateFolder, TemplateFolder);
                string defaultAssetsFolder   = CommonHelper.GetFullPath(new string[] {
                    SioConstants.Folder.WebRootPath,
                    "assets",
                    SioConstants.Folder.TemplatesAssetFolder,
                    "default"
                });
                copyResult = FileRepository.Instance.CopyDirectory(defaultAssetsFolder, AssetFolder);

                var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder);
                //TODO: Create default asset
                int id = 0;
                foreach (var file in files)
                {
                    id++;
                    string content = file.Content.Replace("/assets/templates/default", $"/{ SioConstants.Folder.FileFolder}/{SioConstants.Folder.TemplatesAssetFolder}/{Name}");
                    SioTemplates.InitViewModel template = new SioTemplates.InitViewModel(
                        new SioTemplate()
                    {
                        Id              = id,
                        FileFolder      = file.FileFolder,
                        FileName        = file.Filename,
                        Content         = content,
                        Extension       = file.Extension,
                        CreatedDateTime = DateTime.UtcNow,
                        LastModified    = DateTime.UtcNow,
                        ThemeId         = Model.Id,
                        ThemeName       = Model.Name,
                        FolderType      = file.FolderName,
                        ModifiedBy      = CreatedBy
                    }, _context, _transaction);
                    var saveResult = await template.SaveModelAsync(true, _context, _transaction);

                    result.IsSucceed = result.IsSucceed && saveResult.IsSucceed;
                    if (!saveResult.IsSucceed)
                    {
                        result.Exception = saveResult.Exception;
                        result.Errors.AddRange(saveResult.Errors);
                        break;
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                result.IsSucceed = false;
                result.Errors.Add(ex.Message);
                result.Exception = ex;
                return(result);
            }
        }
Beispiel #26
0
		public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null)
		{
			stackVariable1 = this.get_MediaFile();
			if (stackVariable1 != null)
			{
				stackVariable2 = stackVariable1.get_FileStream();
			}
			else
			{
				dummyVar0 = stackVariable1;
				stackVariable2 = false;
			}
			if (!stackVariable2)
			{
				if (this.get_File() != null)
				{
					stackVariable14 = MixService.GetTemplateUploadFolder(this.get_Specificulture());
					V_0 = DateTime.get_UtcNow();
					this.set_FileFolder(string.Concat(stackVariable14, "/", V_0.ToString("yyyy-MM")));
					stackVariable33 = SeoHelper.GetSEOString(this.get_File().get_FileName().Substring(0, this.get_File().get_FileName().LastIndexOf('.')), '-');
					V_3 = DateTime.get_UtcNow().get_Ticks();
					this.set_FileName(string.Concat(stackVariable33, V_3.ToString()));
					this.set_Extension(this.get_File().get_FileName().Substring(this.get_File().get_FileName().LastIndexOf('.')));
					V_2 = FileRepository.get_Instance().SaveWebFile(this.get_File(), string.Concat(this.get_FileName(), this.get_Extension()), this.get_FileFolder());
					if (V_2.get_IsSucceed())
					{
						this.set_IsValid(false);
						this.get_Errors().AddRange(V_2.get_Errors());
					}
					if (string.IsNullOrEmpty(this.get_Title()))
					{
						this.set_Title(this.get_FileName());
					}
				}
			}
			else
			{
				stackVariable78 = MixService.GetTemplateUploadFolder(this.get_Specificulture());
				V_0 = DateTime.get_UtcNow();
				this.set_FileFolder(string.Concat(stackVariable78, "/", V_0.ToString("yyyy-MM")));
				stackVariable86 = this.get_MediaFile();
				stackVariable92 = SeoHelper.GetSEOString(this.get_MediaFile().get_Filename(), '-').ToLower();
				V_1 = Guid.NewGuid();
				stackVariable86.set_Filename(string.Concat(stackVariable92, V_1.ToString("N")));
				this.get_MediaFile().set_FileFolder(this.get_FileFolder());
				if (!FileRepository.get_Instance().SaveWebFile(this.get_MediaFile()))
				{
					this.set_IsValid(false);
				}
				else
				{
					this.set_Extension(this.get_MediaFile().get_Extension().ToLower());
					this.set_FileName(this.get_MediaFile().get_Filename());
					this.set_FileFolder(this.get_MediaFile().get_FileFolder());
					if (string.IsNullOrEmpty(this.get_Title()))
					{
						this.set_Title(this.get_FileName());
					}
				}
			}
			stackVariable7 = this.get_FileType();
			if (stackVariable7 == null)
			{
				dummyVar1 = stackVariable7;
				stackVariable7 = "image";
			}
			this.set_FileType(stackVariable7);
			this.Validate(_context, _transaction);
			return;
		}