Exemple #1
0
        public JsonResult Remove(int id = -1)
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                using (var db = new KbVaultContext())
                {
                    // Update all articles owned by deleted user
                    var admin = db.KbUsers.First(a => a.Role == "Admin").Id;
                    KBVaultHelperFunctions.UpdateArticlesOwner(id, admin);
                    //KBVaultHelperFunctions.UpdateActivitiesOwner(id);

                    // Delete user after updating articles
                    db.KbUsers.Remove(db.KbUsers.First(u => u.Id == id));

                    db.SaveChanges();
                    result.Successful = true;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
        public Settings CreateModel(SettingsViewModel settings)
        {
            var set = new Settings
            {
                CompanyName = settings.CompanyName,
                ArticleCountPerCategoryOnHomePage = settings.ArticleCountPerCategoryOnHomePage,
                DisqusShortName     = settings.DisqusShortName,
                JumbotronText       = settings.JumbotronText,
                ShareThisPublicKey  = settings.ShareThisPublicKey,
                TagLine             = settings.TagLine,
                IndexFileExtensions = settings.IndexFileExtensions,
                ArticlePrefix       = settings.ArticlePrefix,
                AnalyticsAccount    = settings.AnalyticsAccount,
                Author     = KBVaultHelperFunctions.UserAsKbUser(HttpContext.Current.User).Id,
                BackupPath = settings.BackupPath,
                ShowTotalArticleCountOnFrontPage = settings.ShowTotalArticleCountOnFrontPage,
                LockSite = settings.LockSite
            };

            if (!string.IsNullOrEmpty(set.BackupPath))
            {
                if (!set.BackupPath.EndsWith("\\") && !set.BackupPath.StartsWith("~"))
                {
                    set.BackupPath += "\\";
                }

                if (!set.BackupPath.EndsWith("/") && set.BackupPath.StartsWith("~"))
                {
                    set.BackupPath += "/";
                }
            }

            return(set);
        }
Exemple #3
0
        public JsonResult Remove(string id)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            result.Successful = false;
            try
            {
                var parts = id.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                if (parts.Length == 2)
                {
                    var attachmentHash = parts[0];
                    var attachmentId   = parts[1];

                    Attachment at = new Attachment()
                    {
                        Id = Convert.ToInt64(attachmentId)
                    };
                    at.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                    KbVaultAttachmentHelper.RemoveAttachment(attachmentHash, KBVaultHelperFunctions.UserAsKbUser(User).Id);
                    KbVaultLuceneHelper.RemoveAttachmentFromIndex(at);
                    result.Successful = true;
                    return(Json(result));
                }
                throw new ArgumentOutOfRangeException("Invalid file hash");
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
Exemple #4
0
        public ActionResult Edit(CategoryViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        var parentId = model.ParentId > 0 ? model.ParentId : (int?)null;
                        var author   = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                        var category = CategoryFactory.CreateCategory(model.Name, model.IsHot, model.SefName, model.Icon, author, parentId);
                        category.Id = model.Id;
                        CategoryRepository.Update(category);
                        ShowOperationMessage(UIResources.CategoryPageEditSuccessMessage);
                        return(RedirectToAction("List", new { id = model.Id, page = 1 }));
                    }
                    catch (ArgumentNullException)
                    {
                        ModelState.AddModelError("Category Not Found", ErrorMessages.CategoryNotFound);
                    }
                }

                return(View(model));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                ModelState.AddModelError("Exception", ex.Message);
                return(View(model));
            }
        }
Exemple #5
0
        public ActionResult Create([Bind(Exclude = "Category.Name")] ArticleViewModel model)
        {
            try
            {
                ModelState.Remove("Category.Name");
                if (ModelState.IsValid)
                {
                    var article = ArticleFactory.CreateArticleFromViewModel(model, KBVaultHelperFunctions.UserAsKbUser(User).Id);
                    var id      = ArticleRepository.Add(article, model.Tags);
                    if (article.IsDraft == 0)
                    {
                        KbVaultLuceneHelper.AddArticleToIndex(article);
                    }

                    ShowOperationMessage(UIResources.ArticleCreatePageCreateSuccessMessage);
                    return(RedirectToAction("Edit", "Article", new { id = article.Id }));
                }

                return(View(model));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                ModelState.AddModelError("Exception", ex.Message);
                return(View(model));
            }
        }
Exemple #6
0
        public JsonResult Edit(string pk, string value)
        {
            var result = new JsonOperationResponse();

            try
            {
                using (var db = new KbVaultContext())
                {
                    var tagId = Convert.ToInt64(pk);
                    var tag   = db.Tags.First(t => t.Id == tagId);
                    if (tag != null)
                    {
                        tag.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                        tag.Name   = value;
                        db.SaveChanges();
                        result.Successful = true;
                        return(Json(result));
                    }
                }

                return(null);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
Exemple #7
0
        public JsonResult Remove(int id = -1)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            result.Successful = false;
            try
            {
                using (var db = new KbVaultContext())
                {
                    Tag tag = db.Tags.First(t => t.Id == id);
                    if (tag != null)
                    {
                        tag.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                        db.Tags.Remove(tag);
                        TagRepository.RemoveTagFromArticles(id);
                        db.SaveChanges();
                        result.Successful   = true;
                        result.ErrorMessage = UIResources.TagListRemoveSuccessful;
                    }
                    else
                    {
                        result.ErrorMessage = ErrorMessages.TagNotFound;
                    }
                }
                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
Exemple #8
0
        public JsonResult Remove(int id)
        {
            var result = new JsonOperationResponse();

            try
            {
                using (var db = new KbVaultContext())
                {
                    var currentUserId = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                    var queryParams   = new SqlParameter[] { new SqlParameter("ArticleId", id) };
                    db.Database.ExecuteSqlCommand("Delete from ArticleTag Where ArticleId = @ArticleId", queryParams);
                    var article = db.Articles.Single(a => a.Id == id);
                    if (article == null)
                    {
                        throw new Exception(ErrorMessages.ArticleNotFound);
                    }

                    while (article.Attachments.Count > 0)
                    {
                        var a = article.Attachments.First();
                        KbVaultAttachmentHelper.RemoveLocalAttachmentFile(a);
                        KbVaultLuceneHelper.RemoveAttachmentFromIndex(a);
                        article.Attachments.Remove(a);

                        /*
                         * Also remove the attachment from db.attachments collection
                         *
                         * http://stackoverflow.com/questions/17723626/entity-framework-remove-vs-deleteobject
                         *
                         * If the relationship is required (the FK doesn't allow NULL values) and the relationship is not
                         * identifying (which means that the foreign key is not part of the child's (composite) primary key)
                         * you have to either add the child to another parent or you have to explicitly delete the child
                         * (with DeleteObject then). If you don't do any of these a referential constraint is
                         * violated and EF will throw an exception when you call SaveChanges -
                         * the infamous "The relationship could not be changed because one or more of the foreign-key properties
                         * is non-nullable" exception or similar.
                         */
                        db.Attachments.Remove(a);
                    }

                    article.Author = currentUserId;
                    KbVaultLuceneHelper.RemoveArticleFromIndex(article);
                    db.Articles.Remove(article);
                    db.SaveChanges();
                    result.Data       = id;
                    result.Successful = true;
                    return(Json(result));
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
 public ActionResult Index(SettingsViewModel model)
 {
     try
     {
         if (ModelState.IsValid)
         {
             using (var db = new KbVaultContext())
             {
                 Settings set = db.Settings.FirstOrDefault();
                 if (set != null)
                 {
                     db.Settings.Remove(set);
                 }
                 set             = new Settings();
                 set.CompanyName = model.CompanyName;
                 set.ArticleCountPerCategoryOnHomePage = model.ArticleCountPerCategoryOnHomePage;
                 set.DisqusShortName     = model.DisqusShortName;
                 set.JumbotronText       = model.JumbotronText;
                 set.ShareThisPublicKey  = model.ShareThisPublicKey;
                 set.TagLine             = model.TagLine;
                 set.IndexFileExtensions = model.IndexFileExtensions;
                 set.ArticlePrefix       = model.ArticlePrefix;
                 set.AnalyticsAccount    = model.AnalyticsAccount;
                 set.Author     = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                 set.BackupPath = model.BackupPath;
                 set.ShowTotalArticleCountOnFrontPage = model.ShowTotalArticleCountOnFrontPage;
                 if (!string.IsNullOrEmpty(set.BackupPath))
                 {
                     if (!set.BackupPath.EndsWith("\\") && !set.BackupPath.StartsWith("~"))
                     {
                         set.BackupPath += "\\";
                     }
                     if (!set.BackupPath.EndsWith("/") && set.BackupPath.StartsWith("~"))
                     {
                         set.BackupPath += "/";
                     }
                 }
                 ConfigurationManager.AppSettings["Theme"] = model.SelectedTheme;
                 db.Settings.Add(set);
                 db.SaveChanges();
                 ShowOperationMessage(UIResources.SettingsPageSaveSuccessfull);
             }
         }
         model.Themes.AddRange(Directory.EnumerateDirectories(Server.MapPath("~/Views/Themes")).Select(e => Path.GetFileName(e)).ToList());
         return(View(model));
     }
     catch (Exception ex)
     {
         Log.Error(ex);
         ShowErrorMessage(ex.Message);
         return(RedirectToAction("Index", "Error"));
     }
 }
Exemple #10
0
        public JsonResult Remove(int id)
        {
            JsonOperationResponse result = new JsonOperationResponse();

            try
            {
                if (CategoryRepository.Get(id) != null)
                {
                    if (!CategoryRepository.HasArticleInCategory(id))
                    {
                        var cat = new Category()
                        {
                            Author = KBVaultHelperFunctions.UserAsKbUser(User).Id,
                            Id     = id
                        };
                        if (CategoryRepository.Remove(cat))
                        {
                            result.Successful   = true;
                            result.ErrorMessage = String.Format(ErrorMessages.CategoryRemovedSuccessfully, cat.Name);

                            UrlHelper url = new UrlHelper(Request.RequestContext);
                            cat         = CategoryRepository.GetFirstCategory();
                            result.Data = cat == null
                                ? url.Action("Index", "Dashboard")
                                : url.Action("List", "Category", new { id = cat.Id, page = 1 });
                        }
                    }
                    else
                    {
                        result.Successful   = false;
                        result.ErrorMessage = ErrorMessages.CategoryIsNotEmpty;
                    }
                }
                else
                {
                    result.Successful   = false;
                    result.ErrorMessage = ErrorMessages.CategoryNotFound;
                }


                return(Json(result));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                result.Successful   = false;
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
Exemple #11
0
        public JsonResult Upload()
        {
            var result = new JsonOperationResponse
            {
                Successful = false
            };

            try
            {
                if (Request.Params["ArticleId"] == null)
                {
                    result.ErrorMessage = ErrorMessages.FileUploadArticleNotFound;
                }
                else if (Request.Files.Count == 1)
                {
                    var articleId    = Convert.ToInt64(Request.Params["ArticleId"]);
                    var attachedFile = Request.Files[0];
                    var attachment   = KbVaultAttachmentHelper.SaveAttachment(articleId, attachedFile, KBVaultHelperFunctions.UserAsKbUser(User).Id);
                    attachment.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                    result.Successful = true;
                    result.Data       = new AttachmentViewModel(attachment);
                    using (var db = new KbVaultContext())
                    {
                        var sets = db.Settings.FirstOrDefault();
                        if (sets != null)
                        {
                            var extensions = sets.IndexFileExtensions.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);

                            if (extensions.FirstOrDefault(a => a.ToLowerInvariant() == attachment.Extension.ToLowerInvariant()) != null)
                            {
                                KbVaultLuceneHelper.AddAttachmentToIndex(attachment);
                            }
                        }
                    }
                }
                else
                {
                    result.ErrorMessage = ErrorMessages.FileUploadTooManyFiles;
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                log.Error(ex);
                result.ErrorMessage = ex.Message;
                return(Json(result));
            }
        }
        public ActionResult Edit([Bind(Exclude = "Category.Name,Category.SefName")] ArticleViewModel model)
        {
            try
            {
                ModelState.Remove("Category.Name");
                ModelState.Remove("Category.SefName");
                if (ModelState.IsValid)
                {
                    if (model.PublishEndDate < model.PublishStartDate)
                    {
                        ModelState.AddModelError("PublishDate", ErrorMessages.PublishEndDateMustBeGreater);
                    }
                    else
                    {
                        var article = ArticleRepository.Get(model.Id);
                        article.CategoryId       = model.Category.Id;
                        article.IsDraft          = model.IsDraft ? 1 : 0;
                        article.PublishEndDate   = model.PublishEndDate;
                        article.PublishStartDate = model.PublishStartDate;
                        article.Edited           = DateTime.Now;
                        article.Title            = model.Title;
                        article.Content          = model.Content;
                        article.Author           = KBVaultHelperFunctions.UserAsKbUser(User).Id;
                        article.SefName          = model.SefName;
                        ArticleRepository.Update(article, model.Tags);
                        if (article.IsDraft == 0)
                        {
                            KbVaultLuceneHelper.AddArticleToIndex(article);
                        }
                        else
                        {
                            KbVaultLuceneHelper.RemoveArticleFromIndex(article);
                        }

                        ShowOperationMessage(UIResources.ArticleCreatePageEditSuccessMessage);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                ModelState.AddModelError("Exception", ex.Message);
            }

            return(View("Create", model));
        }
Exemple #13
0
 public ActionResult Create([Bind(Exclude = "Id")] KbUserViewModel model)
 {
     try
     {
         if (ModelState.IsValid)
         {
             using (var db = new KbVaultContext())
             {
                 KbUser usr = KbVaultAuthHelper.CreateUser(model.UserName, model.OldPassword, model.Email, model.Role, KBVaultHelperFunctions.UserAsKbUser(User).Id);
                 usr = db.KbUsers.FirstOrDefault(u => u.Id == usr.Id);
                 if (usr != null)
                 {
                     usr.LastName = model.LastName;
                     usr.Name     = model.Name;
                     db.SaveChanges();
                 }
                 return(RedirectToAction("Users"));
             }
         }
         return(View(model));
     }
     catch (Exception ex)
     {
         Log.Error(ex);
         AddGlobalException(ex);
         return(RedirectToAction("Index", "Error"));
     }
 }
Exemple #14
0
        public ActionResult Create(CategoryViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var parentId = model.ParentId > 0 ? model.ParentId : (int?)null;
                    var category = CategoryFactory.CreateCategory(model.Name, model.IsHot, model.SefName, model.Icon, KBVaultHelperFunctions.UserAsKbUser(User).Id, parentId);
                    var catId    = CategoryRepository.Add(category);
                    ShowOperationMessage(@UIResources.CategoryPageCreateSuccessMessage);
                    return(RedirectToAction("List", new { id = catId, page = 1 }));
                }

                return(View(model));
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                return(RedirectToAction("Index", "Error"));
            }
        }