Example #1
0
 public static void CopyTo(this Article a2, ref ArticleEditModel newArticle)
 {
     newArticle.Body = a2.Body;
     newArticle.Keywords = a2.Keywords;
     newArticle.Description = a2.Description;
     newArticle.Menu = a2.Menu;
     newArticle.RedirectToUrl = a2.RedirectToUrl;
     newArticle.EventFrom = a2.EventFrom;
     newArticle.EventTo = a2.EventTo;
 }
        public virtual ActionResult Save(ArticleEditModel article)
        {
            Article dbArticle = null;
            if (article.ArticleId == 0)
            {
                // Create new article
                dbArticle = new Article();
                article.UpdateArticle(ref dbArticle);
                articleService.Add(dbArticle);
            }
            else
            {
                dbArticle = articleService.GetById(article.ArticleId);
                article.UpdateArticle(ref dbArticle);
                articleService.SaveDraft(dbArticle);

            }
            return Redirect(dbArticle.LinkTo());
        }
        public virtual ActionResult RenderByCode(string code, Language language, string parentcode = null)
        {
            if (language == Language.Nedolocen) language = System.Web.HttpContext.Current.Language();
            if (language != Language.Nedolocen) language = System.Web.HttpContext.Current.SetLanguage(language);

            if (code.Empty())
                code = DependencyResolver.Current.GetService<ISettingsProvider>().Settings.SitemapRootCode;
            if (parentcode.NotEmpty()) code = parentcode + "/" + code;

            Article article = null;

            if (System.Web.HttpContext.Current.UserIsEditor())
            {
                article = articleService.GetInternal(code, language);
                if (article != null && article.Status == ArticleStatus.Archived)
                {
                    articleService.CreateEditableCopy(article);
                    RenderByCode(code, language);
                }
            }

            if (article == null)
            {
                article = articleService.GetPublic(code, language);
            }

            if (article == null)
            {
                if (System.Web.HttpContext.Current.UserIsEditor())
                {
                    var newArticle = new ArticleEditModel()
                    {
                        Code = code,
                        Language = language,
                        Guid = Guid.NewGuid(),
                        Created = DateTime.Now
                    };
                    // Try to copy data from an existing article in another language
                    var allLangs =
                        DependencyResolver.Current.GetService<ISettingsProvider>().Settings.SupportedLanguages;
                    foreach (var supportedLanguage in allLangs)
                    {
                        Article a2 = articleService.GetInternal(code, supportedLanguage.Value);
                        if (a2 != null)
                        {
                            a2.CopyTo(ref newArticle);
                            break;
                        }
                    }

                    // If not copied from another language, try making a copy from ArticleTempalte
                    if (newArticle.Body.Empty())
                    {
                        Article a2 = articleService.GetInternal("ArticleTemplate", System.Web.HttpContext.Current.Language());
                        if (a2 != null) a2.CopyTo(ref newArticle);
                    }

                    IAlertsProvider alertsProvider = DependencyResolver.Current.GetService<IAlertsProvider>();
                    alertsProvider.AddForUser(System.Web.HttpContext.Current.GetSessionId(),
                        new Alert(string.Format("Stran {0} ne obstaja - ustvari novo.", code)));

                    return View("Edit", newArticle);
                }
                var suggestions = articleService.FindPublic(code, language);
                return View("Predlagaj", suggestions);
            }

            saveArticleMetadataToRequestCache(article);
            var redirect = requestCacheService.Redirect;

            if (redirect.NotEmpty())
            {

                if (System.Web.HttpContext.Current.UserIsEditor())
                {
                    IAlertsProvider alertsProvider = DependencyResolver.Current.GetService<IAlertsProvider>();
                    alertsProvider.AddForUser(System.Web.HttpContext.Current.GetSessionId(),
                        new Alert(string.Format("Članek <b>{0}</b> preusmerja na <a href='{1}'>{1}</a>.", code, redirect)));
                }
                else
                {
                    return Redirect(redirect);
                }

            }

            if (System.Web.HttpContext.Current.UserIsEditor())
            {
                return View(MVC.Article.Views.RenderForEdit,
                    new ArticleDisplayForEditModel(article.Body, article.Language, article.Status, article.Code,
                        article.ArticleId, false, articleService.GetRelatedArticles(article),
                        articleService.GetAllLanguages(article.Code),
                        DependencyResolver.Current.GetService<ISettingsProvider>().Settings.SupportedLanguages));
            }
            else
            {
                if (article.Body.Empty())
                {
                    if (
                        DependencyResolver.Current.GetService<IPictureDataProvider>()
                            .PicturesForGallery(article.Code)
                            .Any())
                    {
                        return Redirect("/Picture/Show/" + article.Code)
                            ;
                    }

                }

                var body = loadPartiasIntoArticle(article.Body);

                return View(MVC.Article.Views.Render,
                    new ArticleDisplayModel(article.Code, article.Language, body, article.Keywords));
            }
        }