public String tryDeleteArticle(ContentPage article, bool isRecursive) { var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { return(ResHelper.S("itemisfrozen")); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } AuditLogDbContext.getInstance().createAuditLogContentPageAction(_article, AuditLogDbContext.ACTION_DELETE); if (isRecursive) { getArticleDb().RemoveRange(getArticleDb().Where((acc) => acc.BaseArticleID == _article.BaseArticleID)); } else { getArticleDb().Remove(article); } db.SaveChanges(); return(null); }
public string tryUnpublishArticle(Article article, bool allLocales) { using (var db = new BaseDbContext()) { var _article = article; if (_article == null) { return("Item not found"); } if (!_article.isApproved) { return("Item not approved"); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } deletePublishedArticlesByBaseArticle(article); var local = db.articleDb .Local .FirstOrDefault(f => f.BaseArticleID == _article.BaseArticleID); if (local != null) { db.Entry(local).State = EntityState.Detached; } db.Entry(_article).State = EntityState.Modified; _article.isPublished = false; _article.datePublished = null; _article.publishedBy = null; db.SaveChanges(); if (allLocales) { var _localeArticles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = false; _a.datePublished = null; _a.publishedBy = null; db.SaveChanges(); } } AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_UNPUBLISH); return(null); } }
public String tryCreateNewLocaleArticle(Article article) { var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(article); if (error != null) { return(error); } if (article.BaseArticleID != 0) { if (article.Version == 0) { var latestArticle = findLatestArticleByBaseArticle(article, article.Lang); article.Version = latestArticle.Version; error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(latestArticle); if (error != null) { return(error); } } } if (articleWithSameVersionAndLangAlreadyPresents(article)) { return("Article with the same version and language already presents"); } using (var db = new BaseDbContext()) { article.createdBy = SessionPersister.account.AccountID; if (article.Desc != null) { article.Desc = article.Desc.Replace("cms/ckfinder/userfiles", "ckfinder/userfiles"); } db.articleDb.Add(article); db.SaveChanges(); if (article.BaseArticleID == 0) { db.Entry(article).State = EntityState.Modified; article.BaseArticleID = article.ArticleID; db.SaveChanges(); } } return(null); }
public String tryDeleteArticle(Article article, bool isRecursive) { using (var db = new BaseDbContext()) { var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { return(ResHelper.S("itemisfrozen")); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } AuditLogDbContext.getInstance().createAuditLogArticleAction(_article, AuditLogDbContext.ACTION_DELETE); if (isRecursive) { if (frozenArticleAlreadyPresents(_article)) { error = ResHelper.S("itemisfrozen"); return(error); } var articlesToDelete = db.articleDb.Where((acc) => acc.BaseArticleID == _article.BaseArticleID); foreach (var a in articlesToDelete) { db.Entry(a).State = EntityState.Deleted; } db.SaveChanges(); return(null); } else { db.Entry(article).State = EntityState.Deleted; } db.SaveChanges(); return(null); } }
public String tryEditArticleProperties(ContentPage article, bool allLocales) { if (article.categoryID == -1) { article.categoryID = null; } var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { return(ResHelper.S("itemisfrozen")); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } db.Entry(_article).State = EntityState.Modified; _article.Url = article.Url; _article.Slug = article.Slug; _article.categoryID = article.categoryID; if (allLocales) { var _localeArticles = findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.Url = article.Url; _article.Slug = article.Slug; _article.categoryID = article.categoryID; } } db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogContentPageAction(_article, AuditLogDbContext.ACTION_EDIT_PROPERTIES); return(null); }
// ARTICLE PUBLISHER ONLY public string tryPublishArticle(ContentPage article, bool allLocales) { var _article = ContentPageDbContext.getInstance().findArticleByVersionAndLang(article.BaseArticleID, article.Version, "en"); if (_article == null) { return("Item not found"); } if (!_article.isApproved) { return("Item not approved"); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } deletePublishedArticlesByBaseArticle(article); addArticleToPublished(article); db.Entry(_article).State = EntityState.Modified; _article.isPublished = true; _article.datePublished = DateTimeExtensions.GetServerTime(); _article.publishedBy = SessionPersister.account.AccountID; if (allLocales) { var _localeArticles = ContentPageDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = true; _a.datePublished = DateTimeExtensions.GetServerTime(); _a.publishedBy = SessionPersister.account.AccountID; } } db.SaveChanges(); return(null); }
// ARTICLE EDITOR & APPROVER ONLY #region "Approval" // ARTICLE EDITOR REQUEST FOR APPROVAL public String trySubmitRequestForApproval(Article article, bool allLocales) { var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { return(ResHelper.S("itemisfrozen")); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } using (var db = new BaseDbContext()) { db.Entry(_article).State = EntityState.Modified; _article.isRequestingApproval = true; _article.isFrozen = true; if (allLocales) { var _localeArticles = findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _article.isRequestingApproval = true; _article.isFrozen = true; } } db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_SUBMIT_FOR_APPROVAL); return(null); } }
// ARTICLE EDITOR REQUEST FOR APPROVAL public String trySubmitRequestForApproval(ContentPage article, bool allLocales) { var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { return(ResHelper.S("itemisfrozen")); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } db.Entry(_article).State = EntityState.Modified; _article.isRequestingApproval = true; _article.isFrozen = true; if (allLocales) { var _localeArticles = findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _article.isRequestingApproval = true; _article.isFrozen = true; } } db.SaveChanges(); return(null); }
public String tryEditArticle(ContentPage article) { if (article.categoryID == -1) { article.categoryID = null; } var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { return(ResHelper.S("itemisfrozen")); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } db.Entry(_article).State = EntityState.Modified; _article.Name = article.Name; _article.Desc = article.Desc; _article.Url = article.Url; _article.Keywords = article.Keywords; _article.MetaData = article.MetaData; _article.MetaKeywords = article.MetaKeywords; _article.Excerpt = article.Excerpt; db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogContentPageAction(_article, AuditLogDbContext.ACTION_EDIT); return(null); }
public String tryCreateNewLocaleArticle(ContentPage article) { if (article.BaseArticleID != 0) { if (article.Version == 0) { var latestArticle = findLatestArticleByBaseArticle(article, article.Lang); article.Version = latestArticle.Version; var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(latestArticle); if (error != null) { return(error); } } } if (articleWithSameVersionAndLangAlreadyPresents(article)) { return("ContentPage with the same version and language already presents"); } article.createdBy = SessionPersister.account.AccountID; getArticleDb().Add(article); db.SaveChanges(); if (article.BaseArticleID == 0) { db.Entry(article).State = EntityState.Modified; article.BaseArticleID = article.ArticleID; db.SaveChanges(); } return(null); }
public String tryEditArticleProperties(Article article, bool allLocales) { if (article.categoryID == -1) { article.categoryID = null; } var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { if (!ConstantDbContext.getInstance().ALLOW_EDIT_AFTER_PUBLISH()) { return(ResHelper.S("itemisfrozen")); } } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } List <string> modified_fields = new List <string>(); using (var db = new BaseDbContext()) { db.Entry(_article).State = EntityState.Modified; if (_article.Url != article.Url) { modified_fields.Add("Url"); } if (_article.Slug != article.Slug) { modified_fields.Add("Slug"); } if (_article.categoryID != article.categoryID) { modified_fields.Add("categoryID"); } _article.Url = article.Url; _article.Slug = article.Slug; _article.categoryID = article.categoryID; if (allLocales) { var _localeArticles = findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; if (_a.Url != article.Url) { modified_fields.Add("Url"); } if (_a.Slug != article.Slug) { modified_fields.Add("Slug"); } if (_a.categoryID != article.categoryID) { modified_fields.Add("categoryID"); } _a.Url = article.Url; _a.Slug = article.Slug; _a.categoryID = article.categoryID; } } db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_EDIT_PROPERTIES, modified_fields); return(null); } }
public String tryEditArticle(Article article) { var _article = findArticleByID(article.ArticleID); if (_article == null) { return("Item not found"); } if (_article.isFrozen) { if (!ConstantDbContext.getInstance().ALLOW_EDIT_AFTER_PUBLISH()) { return(ResHelper.S("itemisfrozen")); } } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } using (var db = new BaseDbContext()) { List <string> modified_fields = new List <string>(); if (_article.Name != article.Name) { modified_fields.Add("Name"); } if (_article.Desc != article.Desc) { modified_fields.Add("Desc"); } if (_article.Slug != article.Slug) { modified_fields.Add("Slug"); } if (_article.Keywords != article.Keywords) { modified_fields.Add("Keywords"); } if (_article.MetaData != article.MetaData) { modified_fields.Add("MetaData"); } if (_article.MetaKeywords != article.MetaKeywords) { modified_fields.Add("MetaKeywords"); } if (_article.Excerpt != article.Excerpt) { modified_fields.Add("Excerpt"); } db.Entry(_article).State = EntityState.Modified; _article.Name = article.Name; _article.Desc = article.Desc; if (_article.Desc != null) { _article.Desc = _article.Desc.Replace("cms/ckfinder/userfiles", "ckfinder/userfiles"); } _article.Slug = article.Slug; _article.Keywords = article.Keywords; _article.MetaData = article.MetaData; _article.MetaKeywords = article.MetaKeywords; _article.Excerpt = article.Excerpt; db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_EDIT, modified_fields); return(null); } }
// ARTICLE EDITOR ONLY #region "Create" public String tryCreateNewArticle(Article article) { var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(article); if (error != null) { return(error); } Article latestArticle = null; if (article.categoryID == -1) { article.categoryID = null; } if (article.BaseArticleID != 0) { if (String.IsNullOrEmpty(article.Lang)) { article.Lang = "en"; } if (!article.Lang.Equals("en")) { return(tryCreateNewLocaleArticle(article)); } latestArticle = findLatestArticleByBaseArticle(article, null); article = latestArticle.makeNewArticleByCloningContent(); article.Version = latestArticle.Version; article.Version = article.Version + 1; article.createdBy = SessionPersister.account.AccountID; } else { article.Version = 1; } if (String.IsNullOrEmpty(article.Lang)) { article.Lang = "en"; } if (articleWithSameVersionAndLangAlreadyPresents(article)) { return("Article already presents"); } using (var db = new BaseDbContext()) { article.createdBy = SessionPersister.account.AccountID; if (article.Desc != null) { article.Desc = article.Desc.Replace("cms/ckfinder/userfiles", "ckfinder/userfiles"); } db.articleDb.Add(article); db.SaveChanges(); if (article.BaseArticleID == 0) { db.Entry(article).State = EntityState.Modified; article.BaseArticleID = article.ArticleID; db.SaveChanges(); } // try clone new locale for this new article if (latestArticle != null && article != null) { tryCloningNewLocaleArticleForNewArticleVersion(latestArticle, article); } if (article.Version == 1) { AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_CREATE); } else { AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_CREATE_NEW_VERSION); } } return(null); }
// ARTICLE PUBLISHER ONLY #region "Publish / Unpublish" public string tryPublishArticle(Article article, bool allLocales) { using (var db = new BaseDbContext()) { var _article = article; if (_article == null) { return("Item not found"); } if (!_article.isApproved) { return("Item not approved"); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } deletePublishedArticlesByBaseArticle(article); addArticleToPublished(article); var local = db.articleDb .Local .FirstOrDefault(f => f.BaseArticleID == _article.BaseArticleID); if (local != null) { db.Entry(local).State = EntityState.Detached; } } using (var db = new BaseDbContext()) { var _article = article; db.Entry(_article).State = EntityState.Modified; _article.isPublished = true; _article.datePublished = DateTimeExtensions.GetServerTime(); _article.datePublishStart = article.datePublishStart; _article.datePublishEnd = article.datePublishEnd; _article.publishedBy = SessionPersister.account.AccountID; if (allLocales) { var _localeArticles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = true; _a.datePublished = DateTimeExtensions.GetServerTime(); _a.datePublishStart = article.datePublishStart; _a.datePublishEnd = article.datePublishEnd; _a.publishedBy = SessionPersister.account.AccountID; } } var allArticles = ArticleDbContext.getInstance().findArticlesGroupByBaseVersionApproved(_article.BaseArticleID, "en", db); foreach (Article a in allArticles) { if (_article.ArticleID == a.ArticleID) { continue; } db.Entry(a).State = EntityState.Modified; a.isPublished = false; a.datePublished = null; a.publishedBy = null; if (allLocales) { var _localeArticles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(a, a.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = false; _a.datePublished = null; _a.publishedBy = null; } } } db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_PUBLISH); return(null); } }