Ejemplo n.º 1
0
        private string loadArticle(string articleId, string parentDirId
                                   , ref articlesViewModel viewModel)
        {
            string ret = "";
            // load directories
            tblArticle tbart  = new tblArticle();
            article    parent = null;

            viewModel.subjects = new List <article>();
            article art = null;

            if (!string.IsNullOrWhiteSpace(articleId))
            {
                art = tbart.GetArticleById(articleId);
                if (art != null)
                {
                    viewModel.articleTitle       = art.articleTitle;
                    viewModel.articleType        = art.articleType;
                    viewModel.articleHtmlContent = art.articleHtmlContent;
                    if (string.IsNullOrWhiteSpace(parentDirId))
                    {
                        parentDirId = art.belongToArticleDirId.ToString();
                    }
                }
            }
            if (art == null)
            {
                viewModel.articleTitle       = "";
                viewModel.articleType        = "";
                viewModel.articleHtmlContent = "";
            }
            if (!string.IsNullOrWhiteSpace(parentDirId))
            {
                parent = tbart.GetArticleById(parentDirId);
            }
            if (parent == null)
            {
                viewModel.parentDirId    = "";
                viewModel.parentDirTitle = "";
            }
            else
            {
                viewModel.parentDirId       = parent.articleId.ToString();
                viewModel.parentDirTitle    = parent.articleTitle;
                parent.belongToArticleDirId = parent.articleId;
                viewModel.subjects.Add(parent);
            }
            viewModel.directories = tbart.directoriesByParentArticleId(parentDirId);
            // load subjects
            viewModel.subjects.AddRange(tbart.subjectsByParentArticleId(parentDirId));
            // the article of the current directory, should be listed at the top of the subject list
            // and view its content when click on it
            return(ret);
        }
Ejemplo n.º 2
0
        public IActionResult Articles(string articleId, string parentDirId)
        {
            articlesViewModel viewModel = new articlesViewModel();
            string            err       = "";

            err = loadArticle(articleId, parentDirId, ref viewModel);
            viewModel.errorMsg = err;
            //viewModel.articleId = articleId;
            //todo !!... full text search for articles

            //todo !!... special layout dir(left top), subject(right top), content(bottom most left), relation link (bottom rightmost)
            return(View(viewModel));
        }
Ejemplo n.º 3
0
        public ActionResult Articles(string articleId, string parentDirId)
        {
            articlesViewModel viewModel = new articlesViewModel();
            string            err       = "";

            err = loadArticle(articleId, parentDirId, ref viewModel);
            viewModel.errorMsg = err;
            //viewModel.articleId = articleId;
            //todo !!...(5) full text search for articles
            //(1) when click on a subject in subject list: 1. need to show currently selected subject in content pane
            //2. need to enable edit/reply to two button (disabled before then)
            // special layout dir(left top), subject(right top), content(bottom most left), relation link (bottom rightmost)

            // first level cannot create article, allow only project(s), one project one article
            return(View(viewModel));
        }
Ejemplo n.º 4
0
        private string loadArticle(string articleId, string parentDirId
                                   , ref articlesViewModel viewModel)
        {
            string ret = "";
            // load directories
            tblArticle tbart  = new tblArticle();
            Article    parent = null;

            if (!string.IsNullOrWhiteSpace(articleId))
            {
                Article art = tbart.GetArticleById(articleId);
                viewModel.articleTitle       = art.ArticleTitle;
                viewModel.articleHtmlContent = art.ArticleHtmlContent;
                parentDirId = art.BelongToArticleDirId.ToString();
            }
            else
            {
                viewModel.articleTitle = "";
            }
            if (!string.IsNullOrWhiteSpace(parentDirId))
            {
                parent = tbart.GetArticleById(parentDirId);
            }
            if (parent == null)
            {
                viewModel.parentDirId    = "";
                viewModel.parentDirTitle = "";
            }
            else
            {
                viewModel.parentDirId    = parent.ArticleId.ToString();
                viewModel.parentDirTitle = parent.ArticleTitle;
            }
            viewModel.directories = tbart.directoriesByParentArticleId(parentDirId);
            // load subjects
            viewModel.subjects = tbart.subjectsByParentArticleId(parentDirId);
            return(ret);
        }
Ejemplo n.º 5
0
        public IActionResult Articles(articlesViewModel viewModel)
        {
            IActionResult ret;
            var           selectedArticle = Request.Form["selectedArticle"];
            string        err             = loadArticle(viewModel.articleId, viewModel.parentDirId, ref viewModel);

            viewModel.errorMsg = err;
            articleEditViewModel aevm;
            tblArticle           ta;
            Article art = null;

            switch (viewModel.cmd)
            {
            case "create":
                //if (viewModel.editingArticle==null ||
                //    viewModel.editingArticle.BelongToArticleDirId==null)
                //{
                //    //todo !!... show error message
                //    ret = View(viewModel);
                //    break;
                //}
                //string BelongToArticleDirId = viewModel.parentDirId;
                aevm = new articleEditViewModel();
                if (!string.IsNullOrWhiteSpace(viewModel.parentDirId))
                {
                    aevm.BelongToArticleDirId = Guid.Parse(viewModel.parentDirId);
                    ta  = new tblArticle();
                    art = ta.GetArticleById(viewModel.parentDirId);
                    aevm.parentDirTitle = art.ArticleTitle;
                }
                aevm.changeMode = ARTICLE_CHANGE_MODE.CREATE;
                TempData["articleEditViewModel"] = jsonUtl.encodeJson(aevm);
                //viewModel.editingArticle = new Article();
                //if (!string.IsNullOrWhiteSpace(BelongToArticleDirId))
                //    viewModel.editingArticle.BelongToArticleDirId = Guid.Parse(BelongToArticleDirId);
                ret = RedirectToAction("EditArticle");
                break;

            case "edit":
                //if (viewModel.editingArticle == null ||
                //    viewModel.editingArticle.BelongToArticleDirId == null)
                //{
                //    //todo !!... show error message
                //    ret = View(viewModel);
                //    break;
                //}
                ta   = new tblArticle();
                art  = ta.GetArticleById(viewModel.articleId);
                aevm = jsonUtl.decodeJson <articleEditViewModel>(jsonUtl.encodeJson(art));
                //aevm = new articleEditViewModel();
                if (art == null || art.BelongToArticleDirId == null)
                {
                    aevm.parentDirTitle = EMPTY_PARENT_TITLE;
                }
                else
                {
                    Article artParent = ta.GetArticleById(art.BelongToArticleDirId.ToString());
                    aevm.parentDirTitle = artParent.ArticleTitle;
                }
                // undone !!... there is a huge big issue here, if there is image base64, then edit will crash, then crash the whole web project
                //aevm.ArticleContent = null;
                //aevm.ArticleHtmlContent = null;
                aevm.changeMode = ARTICLE_CHANGE_MODE.EDIT;
                string json = jsonUtl.encodeJson(aevm);
                TempData["articleEditViewModel"] = json;
                ret = RedirectToAction("EditArticle");
                break;

            case "replyTo":
                aevm = new articleEditViewModel();
                aevm.BelongToArticleDirId        = new Guid(viewModel.articleId);
                aevm.parentDirTitle              = viewModel.articleTitle;
                aevm.changeMode                  = ARTICLE_CHANGE_MODE.REPLY_TO;
                TempData["articleEditViewModel"] = jsonUtl.encodeJson(aevm);
                ret = RedirectToAction("EditArticle");
                break;

            case "delete":
                //todo !!.. delete confirm
                ViewBag.confirmDelete = "1";
                ret = View(viewModel);
                break;

            case "realDelete":
                //todo !!.. to real delete
                ret = View(viewModel);
                break;

            default:
                ret = View(viewModel);
                break;
            }
            TempData["articlesViewModel"] = jsonUtl.encodeJson(viewModel);
            return(ret);
        }
Ejemplo n.º 6
0
        public ActionResult Articles(articlesViewModel viewModel)
        {
            ActionResult ar;
            var          selectedDirectory = Request.Form["selectedDirectory"];
            var          selectedArticle   = Request.Form["selectedArticle"];

            if (!string.IsNullOrWhiteSpace(selectedDirectory))
            {
                string[] dirs = selectedDirectory.Split(',');
                viewModel.selectedDirId = new List <string>(dirs);
            }
            if (!string.IsNullOrWhiteSpace(selectedArticle))
            {
                string[] arts = selectedArticle.Split(',');
                viewModel.selectedArticleId = new List <string>(arts);
            }
            var confirmDelete = TempData["confirmDelete"];
            var tmpVM         = TempData["articlesViewModel"];
            articlesViewModel tmpViewModel = null;

            if (tmpVM != null)
            {
                tmpViewModel = (articlesViewModel)tmpVM;
                if (confirmDelete != null && (int)confirmDelete == 1)
                {
                    viewModel.selectedDirId     = tmpViewModel.selectedDirId;
                    viewModel.selectedArticleId = tmpViewModel.selectedArticleId;
                }
            }
            string err = loadArticle(viewModel.articleId, viewModel.parentDirId, ref viewModel);

            viewModel.errorMsg = err;
            articleEditViewModel aevm;
            tblArticle           ta;
            article art;

            switch (viewModel.cmd)
            {
            case "create":
                aevm = new articleEditViewModel();
                if (!string.IsNullOrWhiteSpace(viewModel.parentDirId))
                {
                    aevm.editModel.belongToArticleDirId = Guid.Parse(viewModel.parentDirId);
                    ta  = new tblArticle();
                    art = ta.GetArticleById(viewModel.parentDirId);
                    aevm.parentDirTitle = art.articleTitle;
                }
                aevm.changeMode = ARTICLE_CHANGE_MODE.CREATE;
                aevm.pageStatus = (int)modelsfwk.PAGE_STATUS.ADD;
                TempData["articleEditViewModel"] = aevm;
                ar = RedirectToAction("EditArticle");
                return(ar);

            case "edit":
                ta  = new tblArticle();
                art = ta.GetArticleById(viewModel.articleId);
                //aevm = jsonUtl.decodeJson<articleEditViewModel>(jsonUtl.encodeJson(art));
                aevm           = new articleEditViewModel();
                aevm.editModel = art;
                if (art == null || art.belongToArticleDirId == null)
                {
                    aevm.parentDirTitle = EMPTY_PARENT_TITLE;
                }
                else
                {
                    article artParent = ta.GetArticleById(art.belongToArticleDirId.ToString());
                    aevm.parentDirTitle = artParent.articleTitle;
                }
                aevm.changeMode = ARTICLE_CHANGE_MODE.EDIT;
                aevm.pageStatus = (int)modelsfwk.PAGE_STATUS.EDIT;
                TempData["articleEditViewModel"] = aevm;
                ar = RedirectToAction("EditArticle");
                return(ar);

            case "replyTo":
                aevm = new articleEditViewModel();
                aevm.editModel.belongToArticleDirId = new Guid(viewModel.articleId);
                aevm.parentDirTitle = viewModel.articleTitle;
                aevm.changeMode     = ARTICLE_CHANGE_MODE.REPLY_TO;
                aevm.pageStatus     = (int)modelsfwk.PAGE_STATUS.ADD;
                TempData["articleEditViewModel"] = aevm;
                ar = RedirectToAction("EditArticle");
                return(ar);

            case "parentDir":
                ar = RedirectToAction("Articles", new { articleId = viewModel.parentDirId });
                return(ar);

            case "delete":
                // delete confirm
                if (viewModel.selectedDirId.Count > 0 || viewModel.selectedArticleId.Count > 0)
                {
                    ViewBag.confirmDelete     = "1";
                    TempData["confirmDelete"] = 1;
                }
                ar = View(viewModel);
                break;

            case "realDelete":
                // to real delete
                //SASDdbBase db = new SASDdbBase();
                string               err1        = "";
                tblArticle           tart        = new tblArticle();
                DbContextTransaction transaction = tart.BeginTransaction();
                try
                {
                    foreach (string articleId in viewModel.selectedDirId)
                    {
                        err1 = tart.DeleteArticleOrDir(articleId);
                        if (err1.Length > 0)
                        {
                            throw new Exception(err1);
                        }
                    }
                    foreach (string articleId in viewModel.selectedArticleId)
                    {
                        err1 = tart.DeleteArticleOrDir(articleId);
                        if (err1.Length > 0)
                        {
                            throw new Exception(err1);
                        }
                    }
                    tart.SaveChanges();
                    transaction.Commit();
                    viewModel.successMsg = "selected directory(s) or article(s) successfully deleted";
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    viewModel.errorMsg  += ex.Message;
                    viewModel.successMsg = "";
                }
                err = loadArticle(viewModel.articleId, viewModel.parentDirId, ref viewModel);
                viewModel.errorMsg += err;
                // at last no matter what result, clear selection
                viewModel.selectedDirId.Clear();
                viewModel.selectedArticleId.Clear();
                ar = View(viewModel);
                break;

            default:
                ar = View(viewModel);
                break;
            }
            TempData["articlesViewModel"] = viewModel;
            return(ar);
        }