/// <summary> /// Добавление изображения в Priveiw /// </summary> /// <param name="upload">Изображение</param> /// <param name="mapPath">Путь</param> /// <param name="model">Модель поста</param> public void Image(HttpPostedFileBase upload, string mapPath, ModelNewPost model) { if (upload != null) { using (var db = new DataContext()) { var post = db.Posts.FirstOrDefault(x => x.PostID == model.PostID); if (post == null) { var postID = db.Posts.Max(x => x.PostID); postID++; string dir = mapPath + postID; if (!Directory.Exists(dir + "/" + "Preview")) { Directory.CreateDirectory(dir + "/" + "Preview"); } string newFileName = Path.GetFileName(upload.FileName); var newPatch = Path.Combine(mapPath + "/" + postID + "/" + "Preview", newFileName); upload.SaveAs(newPatch); } else { string dir = mapPath + model.PostID; if (!Directory.Exists(dir + "/" + "Preview")) { Directory.CreateDirectory(dir + "/" + "Preview"); } string fileName = Path.GetFileName(upload.FileName); var path = Path.Combine(mapPath + "/" + model.PostID + "/" + "Preview", fileName); upload.SaveAs(path); } } } }
public ActionResult NewPost(ModelNewPost model, int IdCategory, HttpPostedFileBase Upload, int User) { string map = Server.MapPath("~/img/"); AdminServices.ControlPosts.Image(Upload, map, model); AdminServices.ControlPosts.AddPost(model, IdCategory, User); return(RedirectToAction("Index")); }
/// <summary> /// Конвертирует модель ModelPost в Post /// </summary> /// <param name="posts"></param> /// <returns></returns> private static Post ConverModelPost(ModelNewPost posts) { return(new Post { PostID = posts.PostID, AuthorID = posts.AuthorID, dateAddPost = posts.dateAddPost, contentPost = posts.contentPost, NamePost = posts.NamePost, Tags = posts.Tags, upload = posts.upload, Description = posts.Description, }); }
/// <summary> /// Редактирование поста /// </summary> /// <param name="model">Моедль поста</param> /// <param name="IdCategory">ID категории</param> public void EditPost(ModelNewPost model, int IdCategory) { using (var db = new DataContext()) { var category = db.Categories.FirstOrDefault(x => x.Id == IdCategory); var post = db.Posts.FirstOrDefault(x => x.PostID == model.PostID); post.NamePost = model.NamePost; post.SelectCategories = category; post.Description = model.Description; post.Tags = model.Tags; post.dateAddPost = model.dateAddPost; post.contentPost = model.contentPost; post.upload = model.upload; db.SaveChanges(); } }
/// <summary> /// Добавление нового поста /// </summary> /// <param name="model">Модель поста</param> /// <param name="IdCategory">Ид категории</param> /// <param name="UserID">Ид автора</param> public void AddPost(ModelNewPost model, int IdCategory, int UserID) { using (var db = new DataContext()) { var category = db.Categories.FirstOrDefault(x => x.Id == IdCategory); var posts = ConverModelPost(model); posts.Users = db.Users.Where(x => x.Id == UserID).ToList(); posts.AuthorID = UserID; var CollTags = posts.Tags.Split(new string[] { ",", " " }, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (var item in CollTags) { db.Tags.Add(new Tag() { NameTag = item }); db.SaveChanges(); } posts.SelectCategories = category; db.Posts.Add(posts); db.SaveChanges(); } }
/// <summary> /// Создает перемнную в которой находится путь для сохранения файла и далее выполняет метод сохраняющий изображения /// </summary> /// <param name="Upload">Файл</param> /// <param name="CKEditorFuncNum">Идентификационный номер анонимного функции обратного вызова после загрузки</param> /// <returns></returns> public ActionResult AddImage(HttpPostedFileBase Upload, string CKEditorFuncNum, ModelNewPost model) { string map = Server.MapPath("~/img/"); string output = AdminServices.ControlPosts.ProcessRequest(Upload, CKEditorFuncNum, map, model); return(Content(output)); }
/// <summary> /// Загржает изображение на сервер и получает путь к файлу изображения /// </summary> /// <param name="upload">Изображения</param> /// <param name="CKEditorFuncNum">Идентификационный номер анонимного функции обратного вызова после загрузки</param> /// <param name="mapPath">Путь для сохранения файла</param> /// <returns>Возвращает строку с Ajax запросом</returns> public string ProcessRequest(HttpPostedFileBase upload, string CKEditorFuncNum, string mapPath, ModelNewPost model) { if (upload.ContentLength <= 0) { return(null); } using (var db = new DataContext()) { var NewPost = db.Posts.Max(x => x.PostID); NewPost++; const string uploadFolder = "img"; // сохраняем файл в папку img в проекте Directory.CreateDirectory(mapPath + NewPost); var fileName = Path.GetFileName(upload.FileName); var path = Path.Combine(mapPath + "/" + NewPost, fileName); upload.SaveAs(path); var url = string.Format("{0}/{1}/{2}/{3}", "http://localhost:62712/", uploadFolder, NewPost, fileName); const string message = "Ваше изображение успешно сохраненно"; // Ajax запрос для передачи изображение var output = string.Format( "<html><body><script>window.parent.CKEDITOR.tools.callFunction({0}, \"{1}\", \"{2}\");</script></body></html>", CKEditorFuncNum, url, message); return(output); } }