果园合作
Orchard collaboration
最近在用orchard做网页,想用orchard collaboration做一个问答页面。我知道通过使用票务仪表板,我可以在单击票务仪表板时轻松得出 this.The questions will be divided into different groups according to the project it is about. But right now I am thinking of letting the administrator to see each project's project-dashboard 这样的结果。谁能告诉我该怎么做?非常感谢!
有一些选项可以帮助您。我想到的其中之一就是这个。
为像 "ProjectTicketDashboard" 这样的新 DisplayType 自定义 ProjectDriver。如果您查看 ProjectDriver.Display 方法,它会为 Detail 显示类型呈现 ProjectDetail(其中包含 portlet)。您可以在此处为新的 DisplayType 添加一个新的 "case statement"。对于新的显示类型,您可以代表一个工单仪表板。像这样:
case "ProjectTicketDashboard":
// Query the counts of the whole tickets in the system based on stateId
dynamic state = new JObject();
var contentQuery = this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published);
state.ContentTypes = "Ticket";
contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state);
state.Project_Id = part.Id;
contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "AttachToProjectFilter", "Id", state);
var ticketCountsByStateIds = groupQuery.GetCount(contentQuery, "TicketPartRecord", "StatusRecord.Id");
model.AllTickets = new Collection<dynamic>();
CRMHelper.AddStatusGroupRecordsToModel(statusRecords, ticketCountsByStateIds, model.AllTickets);
state.MaxDueDate = DateTime.UtcNow.Date;
contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.TicketDueDateType, state);
model.AllOverrudeItemsCount = contentQuery.Count();
return ContentShape("Parts_Project_Dashboard",
() => shapeHelper.Parts_Project_Dashboard(
Model: model
));
- 您需要 Parts_Project_Dashboard 的相应视图和 placement.info 中的关联条目。对于视图,可以复用Orchard.CRM.Core/Views/Parts/Dashboard.cshtml
中视图的代码
- 下一步,您可以创建一个自定义查询,以获取具有形状布局和 DisplayType = "ProjectTicketDashboard" 的所有项目。
- 最后,使用投影在主页中显示之前的查询
如果您还有其他问题,请告诉我。
西亚曼德
最近在用orchard做网页,想用orchard collaboration做一个问答页面。我知道通过使用票务仪表板,我可以在单击票务仪表板时轻松得出 this.The questions will be divided into different groups according to the project it is about. But right now I am thinking of letting the administrator to see each project's project-dashboard 这样的结果。谁能告诉我该怎么做?非常感谢!
有一些选项可以帮助您。我想到的其中之一就是这个。
为像 "ProjectTicketDashboard" 这样的新 DisplayType 自定义 ProjectDriver。如果您查看 ProjectDriver.Display 方法,它会为 Detail 显示类型呈现 ProjectDetail(其中包含 portlet)。您可以在此处为新的 DisplayType 添加一个新的 "case statement"。对于新的显示类型,您可以代表一个工单仪表板。像这样:
case "ProjectTicketDashboard": // Query the counts of the whole tickets in the system based on stateId dynamic state = new JObject(); var contentQuery = this.services.ContentManager.HqlQuery().ForVersion(VersionOptions.Published); state.ContentTypes = "Ticket"; contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "Content", "ContentTypes", state); state.Project_Id = part.Id; contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, "AttachToProjectFilter", "Id", state); var ticketCountsByStateIds = groupQuery.GetCount(contentQuery, "TicketPartRecord", "StatusRecord.Id"); model.AllTickets = new Collection<dynamic>(); CRMHelper.AddStatusGroupRecordsToModel(statusRecords, ticketCountsByStateIds, model.AllTickets); state.MaxDueDate = DateTime.UtcNow.Date; contentQuery = this.projectionManagerWithDynamicSort.ApplyFilter(contentQuery, TicketFieldsFilter.CategoryName, TicketFieldsFilter.TicketDueDateType, state); model.AllOverrudeItemsCount = contentQuery.Count(); return ContentShape("Parts_Project_Dashboard", () => shapeHelper.Parts_Project_Dashboard( Model: model ));
- 您需要 Parts_Project_Dashboard 的相应视图和 placement.info 中的关联条目。对于视图,可以复用Orchard.CRM.Core/Views/Parts/Dashboard.cshtml 中视图的代码
- 下一步,您可以创建一个自定义查询,以获取具有形状布局和 DisplayType = "ProjectTicketDashboard" 的所有项目。
- 最后,使用投影在主页中显示之前的查询
如果您还有其他问题,请告诉我。 西亚曼德