Exemple #1
0
        public override Widget build(BuildContext context)
        {
            if (this.viewModel.articleHistory.Count == 0)
            {
                return(new BlankView("暂无浏览文章记录"));
            }

            return(new Container(
                       color: CColors.background3,
                       child: ListView.builder(
                           physics: new AlwaysScrollableScrollPhysics(),
                           itemCount: this.viewModel.articleHistory.Count,
                           itemBuilder: (cxt, index) => {
                var model = this.viewModel.articleHistory[index];
                var child = new ArticleCard(
                    model,
                    () => this.actionModel.pushToArticleDetail(model.id),
                    () => ReportManager.showReportView(this.viewModel.isLoggedIn,
                                                       model.id,
                                                       ReportType.article, this.actionModel.pushToLogin, this.actionModel.pushToReport,
                                                       this.actionModel.pushToBlock
                                                       ),
                    model.fullName,
                    new ObjectKey(model.id)
                    );

                return CustomDismissible.builder(
                    Key.key(model.id),
                    child,
                    new CustomDismissibleDrawerDelegate(),
                    secondaryActions: new List <Widget> {
                    new GestureDetector(
                        onTap: () => this.actionModel.deleteArticleHistory(model.id),
                        child: new Container(
                            color: CColors.Separator2,
                            width: 80,
                            alignment: Alignment.center,
                            child: new Container(
                                width: 44,
                                height: 44,
                                alignment: Alignment.center,
                                decoration: new BoxDecoration(
                                    CColors.White,
                                    borderRadius: BorderRadius.circular(22)
                                    ),
                                child: new Icon(Icons.delete_outline, size: 28, color: CColors.Error)
                                )
                            )
                        )
                },
                    controller: this._controller
                    );
            }
                           )
                       ));
        }
Exemple #2
0
        private void New_Click(object sender, RoutedEventArgs e)
        {
            Article     article1 = new Article();
            ArticleCard article  = new ArticleCard()
            {
                Margin = new Thickness(25)
            };

            article.OpenArticleMouseClick   += ArticleCard_OpenArticleMouseClick;
            article.DeleteArticleMouseClick += Add_DeleteArticleMouseClick;
            article.UpdateArticleMouseClick += Add_UpdateArticleMouseClick;
            var currentPage = ((MainWindow)Application.Current.MainWindow).CurrentPage.Content;

            if (currentPage == null || (currentPage != null && currentPage.GetType().Name == "AnonimPage"))
            {
                article.Add.Visibility   = Visibility.Hidden;
                article.Tresh.Visibility = Visibility.Hidden;
                article.Pen.Visibility   = Visibility.Hidden;
                article.Visibility       = Visibility.Collapsed;
            }
            else if (currentPage == null || (currentPage != null && currentPage.GetType().Name == "UserPage"))
            {
                article.Add.Visibility   = Visibility.Visible;
                article.Tresh.Visibility = Visibility.Collapsed;
                article.Pen.Visibility   = Visibility.Collapsed;
                article.Visibility       = Visibility.Collapsed;
            }
            else if (currentPage == null || (currentPage != null && currentPage.GetType().Name == "AdminPage"))
            {
                article.Add.Visibility   = Visibility.Hidden;
                article.Tresh.Visibility = Visibility.Visible;
                article.Pen.Visibility   = Visibility.Visible;
                article.Visibility       = Visibility.Visible;
            }

            db.Articles.Add(article1);
            db.SaveChanges();
            db.Articles.Load();
            SearchResultList.ItemsSource = db.Articles.Local;
        }
        public async Task <Page <DomainArticle> > MapArticleToPage(Article article)
        {
            var htmlRenderer = new HtmlRenderer();
            var landingPage  = await _contentService.GetEntry <LandingPage>(article.LandingPage.Sys.Id);

            var page = new Page <DomainArticle>
            {
                Slug            = article.Slug,
                Title           = article.Title,
                HubType         = (HubType)Enum.Parse(typeof(HubType), article.HubType),
                MetaDescription = article.MetaDescription,
                PageTitle       = article.PageTitle
            };

            var domainArticle = new DomainArticle
            {
                LandingPageSlug  = landingPage.Slug,
                LandingPageTitle = landingPage.Title,
                Sections         = new List <DomainArticleSection>(),
                Summary          = article.Summary
            };

            foreach (var section in article.Sections)
            {
                await UpdateArticleSectionLookup(section.Sys.Id, article.Sys.Id);

                var articleSectionType = section.Sys.ContentType.SystemProperties.Id;

                if (articleSectionType == "articleTable")
                {
                    var contentArticleSection = await _contentService.GetEntry <ArticleTable>(section.Sys.Id);

                    if (contentArticleSection != null)
                    {
                        var tableHtml = GetTableHtml((JProperty)contentArticleSection.Table.First);

                        var articleSection = new DomainArticleSection();
                        articleSection.Title = contentArticleSection.Title;
                        articleSection.Body  = new HtmlString(tableHtml);
                        domainArticle.Sections.Add(articleSection);
                    }
                }
                else
                {
                    var contentArticleSection = await _contentService.GetEntry <ArticleSection>(section.Sys.Id);

                    if (contentArticleSection != null)
                    {
                        var articleSection = new DomainArticleSection();
                        articleSection.Title = contentArticleSection.Title;
                        articleSection.Slug  = contentArticleSection.Slug;
                        articleSection.Body  = new HtmlString(htmlRenderer.ToHtml(contentArticleSection.Body).Result);
                        domainArticle.Sections.Add(articleSection);
                    }
                }
            }

            page.Content = domainArticle;

            var articleCard = new ArticleCard();

            articleCard.HubType          = page.HubType;
            articleCard.LandingPageSlug  = domainArticle.LandingPageSlug;
            articleCard.LandingPageTitle = domainArticle.LandingPageTitle;
            articleCard.Summary          = domainArticle.Summary;
            articleCard.Title            = page.Title;
            articleCard.Slug             = page.Slug;

            await _cacheService.Set($"articleCard_{article.Slug}", JsonConvert.SerializeObject(articleCard));

            return(page);
        }