예제 #1
0
 public Entry(BlogEntry data, EntryEditModule editMod, EntryDisplayModule dispMod, ModuleAction editAction, ModuleAction viewAction)
 {
     ObjectSupport.CopyData(data, this);
     ViewAction = viewAction;
     Actions    = new List <ModuleAction>();
     Actions.New(editAction);
 }
예제 #2
0
            public async Task <MenuList> __GetCommandsAsync()
            {
                MenuList actions = new MenuList()
                {
                    RenderMode = ModuleAction.RenderModeEnum.IconsOnly
                };
                EntryDisplayModule dispMod = new EntryDisplayModule();

                actions.New(await dispMod.GetAction_DisplayAsync(Identity), ModuleAction.ActionLocationEnum.GridLinks);
                EntryEditModule editMod = new EntryEditModule();

                actions.New(await editMod.GetAction_EditAsync(Module.EditUrl, Identity), ModuleAction.ActionLocationEnum.GridLinks);
                actions.New(Module.GetAction_Remove(Identity), ModuleAction.ActionLocationEnum.GridLinks);
                return(actions);
            }
예제 #3
0
        public async Task <ActionResult> Blog(DateTime?StartDate = null)
        {
            int category;

            Manager.TryGetUrlArg <int>("BlogCategory", out category);
            BlogConfigData config = await BlogConfigDataProvider.GetConfigAsync();

            using (BlogEntryDataProvider dataProvider = new BlogEntryDataProvider()) {
                List <DataProviderSortInfo> sort = new List <DataProviderSortInfo> {
                    new DataProviderSortInfo {
                        Field = nameof(BlogEntry.DatePublished), Order = DataProviderSortInfo.SortDirection.Descending
                    },
                };
                List <DataProviderFilterInfo> filters = new List <DataProviderFilterInfo> {
                    new DataProviderFilterInfo {
                        Field = nameof(BlogEntry.Published), Operator = "==", Value = true
                    },
                };
                if (category != 0)
                {
                    filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                        Field = nameof(BlogEntry.CategoryIdentity), Operator = "==", Value = category
                    });
                }
                DateTime sdShown = DateTime.MaxValue;
                if (StartDate != null)
                {
                    sdShown = ((DateTime)StartDate).Date;
                    if (sdShown < DateTime.UtcNow)
                    {
                        filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                            Field = nameof(BlogEntry.DatePublished), Operator = "<=", Value = sdShown
                        });
                    }
                    else
                    {
                        sdShown = DateTime.MaxValue;
                    }
                }
                DataProviderGetRecords <BlogEntry> data = await dataProvider.GetItemsAsync(0, config.Entries, sort, filters);

                if (data.Data.Count == 0)
                {
                    return(new EmptyResult());
                }

                string rssUrl = string.IsNullOrWhiteSpace(config.FeedMainUrl) ? Manager.CurrentSite.HomePageUrl : config.FeedMainUrl;
                Manager.LinkAltManager.AddLinkAltTag(AreaRegistration.CurrentPackage.AreaName, "application/rss+xml", config.FeedTitle, rssUrl);

                EntryEditModule    editMod = new EntryEditModule();
                EntryDisplayModule dispMod = new EntryDisplayModule();

                List <Entry> list = new List <Entry>();
                foreach (BlogEntry d in data.Data)
                {
                    ModuleAction viewAction = await dispMod.GetAction_DisplayAsync(d.Identity, ReadMore : d.Summary != d.Text);

                    ModuleAction editAction = await editMod.GetAction_EditAsync(null, d.Identity);

                    list.Add(new Entry(d, editMod, dispMod, editAction, viewAction));
                }
                DisplayModel model = new DisplayModel()
                {
                    BlogEntries      = list,
                    CategoryIdentity = category,
                    StartDate        = sdShown == DateTime.MaxValue ? null : (DateTime?)sdShown,
                };
                return(View(model));
            }
        }