private List <ScreenField> GetChangelogFields(int projectId) { List <UserIssuesView> changelogView = null; changelogView = HttpSessionManager.Get <List <UserIssuesView> >(Constants.ChangelogSessionView, null); if (changelogView == null && CurrentCard.Options.ContainsKey(AppGuid)) { var view = CurrentCard.Options[AppGuid].FromJson <PageSettings>(); if (view.DisplayColumns.Count > 0) { changelogView = view.DisplayColumns; } } if (changelogView != null) { return(GridManager.GetUserView(changelogView)); } else { return(GridManager.GetUserView(ProjectTemplatePageType.Custom)); } }
/// <summary> /// 初始化Session /// </summary> private void InitSession(IUserToken userToken) { var sessionID = string.Empty; if (!this.Request.Cookies.ContainsKey(ConstHelper.SESSIONID)) { sessionID = HttpSessionManager.GeneratID(); } else { sessionID = this.Request.Cookies[ConstHelper.SESSIONID].Value; } this.Session = HttpSessionManager.SetAndGet(sessionID); var domain = userToken.ID; if (this.Request.Headers.ContainsKey("Host")) { domain = this.Request.Headers["Host"]; if (domain.IndexOf("www.", StringComparison.InvariantCultureIgnoreCase) == 0) { domain = StringHelper.Substring(domain, 3); } HttpCookie.DefaultDomain = domain; } this.Response.Cookies[ConstHelper.SESSIONID] = new HttpCookie(ConstHelper.SESSIONID, sessionID); }
public override WidgetResult Show(IssueDto issue = null) { WidgetResult result = new WidgetResult(); List <int> selectedProjects = new List <int>(); ReportOptions options = new ReportOptions(); SummaryModel model = new SummaryModel(); IssuesGridFilter tmp = new IssuesGridFilter(); try { if (CurrentCard.IsNew || !CurrentCard.Options.ContainsKey(AppGuid)) { tmp = new IssuesGridFilter(HttpSessionManager.GetFilter(CurrentCard.Id, CurrentCard.Filter)); if (tmp == null) { tmp = CurrentCard.Options[AppGuid].FromJson <IssuesGridFilter>(); } if (tmp.Projects == Constants.AllProjectsId.ToString()) { selectedProjects.Add(Constants.AllProjectsId); } else { selectedProjects = tmp.GetProjects(); } } else { options = CurrentCard.Options[AppGuid].FromJson <ReportOptions>(); if (options.AllProjectsSelected) { selectedProjects.Add(Constants.AllProjectsId); } else if (options.ProjectIds.Count > 0) { selectedProjects.AddRange(options.ProjectIds); } } } catch (Exception ex) { tmp = new IssuesGridFilter(HttpSessionManager.GetFilter(CurrentCard.Id, IssuesFilter.CreateProjectFilter(UserContext.User.Entity.Id, UserContext.Project.Entity.Id))); selectedProjects = tmp.GetProjects(); } model.ProjectList = GetProjectFilter(selectedProjects); model.Options = options; result.Markup = new WidgetMarkup("views\\Summary.cshtml", model); result.Success = true; return(result); }
private bool NoSettings() { HttpSessionManager.Set("Apps", SessionKey.ConfigureTab); HttpSessionManager.Set(Constants.AppId, SessionKey.ConfigureSubTab); return(LucidChartsConsumer.consumerKey.IsEmpty() || LucidChartsConsumer.consumerSecret.IsEmpty()); }
public ActionResult ReorderColumns(int projectId, int versionId, string from, string to) { var userView = HttpSessionManager.Get <List <UserIssuesView> >(Constants.ChangelogSessionView, null); if (userView == null) { userView = GridManager.GetUserViewColumns(ProjectTemplatePageType.Custom); } var view = GridManager.ReorderUserView(from, to, ProjectTemplatePageType.Custom, userView); HttpSessionManager.Set(view, Constants.ChangelogSessionView); return(JsonSuccess(view)); }
public ActionResult GetColumns(int projectId) { ColumnsModel model = new ColumnsModel(); List <ScreenField> fields = GetChangelogFields(projectId); IssuesFilter filter = HttpSessionManager.GetFilter(CurrentCard.Id); filter = ItemFilterManager.TransformFilter(IssuesFilter.CreateProjectFilter(CurrentUser.Entity.Id, projectId)); SetCurrentProjectFromFilter(filter); model.Columns = GridManager.GetAvailableColumns(filter.GetProjects(), IssueFilterHelper.AggregateTypes(filter, ProjectManager, MetaManager), fields); return(JsonSuccess(RenderPartialViewToString(this, "~/Views/Items/ColumnSelector.cshtml", model))); }
public ActionResult SetColumns(ColumnsModel columnsModel, int projectId, int versionId) { List <ListItem> selected = columnsModel.Columns.FindAll(c => c.IsSelected); List <UserIssuesView> currentView = GridManager.GetUserViewColumns(ProjectTemplatePageType.Custom); int sequence = 0; // Remove all properties that are not in the new view. currentView.RemoveAll(v => !v.IsCustomField && selected.Find(s => s.ItemId == ((int)v.Attribute).ToString()) == null); currentView.RemoveAll(v => v.IsCustomField && selected.Find(s => s.ItemId == v.CustomFieldId) == null); var extra = selected.FindAll(s => currentView.Find(v => !v.IsCustomField && s.ItemId == ((int)v.Attribute).ToString() || v.IsCustomField && s.ItemId == v.CustomFieldId) == null); foreach (var selectedCol in extra) { UserIssuesView column = new UserIssuesView(); column.UserId = CurrentUser.Entity.Id; column.ProjectId = projectId; column.Sequence = 999; column.ViewType = ProjectTemplatePageType.Custom; if (selectedCol.ItemId.StartsWith("cf_", StringComparison.InvariantCulture)) { column.CustomFieldId = selectedCol.ItemId; } else { column.Attribute = (ItemAttributeVisibility)selectedCol.ItemId.ToInt(); } currentView.Add(column); } currentView.ForEach(v => { v.Sequence = sequence++; v.UserId = CurrentUser.Entity.Id; }); HttpSessionManager.Set(currentView, Constants.ChangelogSessionView); return(JsonSuccess(new { view = currentView })); }
/// <summary> /// 处理业务逻辑 /// </summary> /// <param name="userToken"></param> /// <param name="httpMessage"></param> public virtual void HttpHandle(IUserToken userToken, HttpMessage httpMessage) { Request.Init(httpMessage); string sessionID; if (!Request.Cookies.ContainsKey(ConstHelper.SESSIONID)) { sessionID = HttpSessionManager.GeneratID(); } else { sessionID = Request.Cookies[ConstHelper.SESSIONID].Value; } this.Session = HttpSessionManager.GetIfNotExistsSet(sessionID); var domain = userToken.ID; if (this.Request.Headers.ContainsKey("Host")) { domain = Request.Headers["Host"]; if (domain.IndexOf("www.", StringComparison.InvariantCultureIgnoreCase) == 0) { domain = StringHelper.Substring(domain, 3); } HttpCookie.DefaultDomain = domain; } if (userToken != null && userToken.Socket != null && userToken.Socket.Connected) { Request.Headers["REMOTE_ADDR"] = ((IPEndPoint)userToken.Socket.RemoteEndPoint).Address.ToString(); if (Request.Headers.ContainsKey("HTTP_X_FORWARDED_FOR")) { Request.Headers["HTTP_X_FORWARDED_FOR"] += "," + this.Request.Headers["REMOTE_ADDR"]; } Response.Init(_webHost, userToken, Request.Protocal, _webHost.WebConfig.IsZiped); Response.Cookies[ConstHelper.SESSIONID] = new HttpCookie(ConstHelper.SESSIONID, sessionID); } }
public override WidgetResult Show(IssueDto issue = null) { var filter = IsSessionFilter() || CurrentCard.CardType != ProjectTemplatePageType.Custom && "app/projectAdmin/view".Equals(CurrentCard.Url, StringComparison.InvariantCultureIgnoreCase) ? HttpSessionManager.GetFilter(CurrentCard.Id, IssuesFilter.CreateProjectFilter(CurrentUser.Entity.Id, CurrentProject.Entity.Id)) : CurrentCard.Filter; HttpSessionManager.SetFilter(CurrentCard.Id, filter); int?currentProjectId = 0; HttpSessionManager.Set <List <UserIssuesView> >(null, Constants.ProjectAdminSessionView); // Safety check required because of http://gemini.countersoft.com/project/DEV/21/item/5088 PageSettings pageSettings = null; try { if (CurrentCard.Options.ContainsKey(AppGuid)) { pageSettings = CurrentCard.Options[AppGuid].FromJson <PageSettings>(); if (pageSettings.PageData != null) { currentProjectId = pageSettings.PageData.projectId; } } } catch (Exception ex) {} //If no project is selected, select the first workspace project. if ((!currentProjectId.HasValue || currentProjectId.Value == 0) && filter.Projects.HasValue()) { try { var workspaceProjects = filter.Projects.Split('|'); if (workspaceProjects.Count() > 0) { currentProjectId = Convert.ToInt32(workspaceProjects[0]); } } catch (Exception ex) { } } var viewableProjects = ProjectManager.GetAppViewableProjects(this).ToList(); //If you can't view the selected project, select first from viewable projects if (!viewableProjects.Any(s => s.Entity.Id == currentProjectId.Value)) { currentProjectId = viewableProjects.Count > 0 ? viewableProjects.First().Entity.Id : 0; } UserContext.Project = ProjectManager.Convert(Cache.Projects.Get(currentProjectId.Value)); ProjectAdminAppModel model = BuildModelData(); model.ProjectList = new SelectList(viewableProjects, "Entity.Id", "Entity.Name", currentProjectId.GetValueOrDefault()); if (pageSettings == null) { pageSettings = new PageSettings(); } pageSettings.PageData.projectId = currentProjectId.GetValueOrDefault(); CurrentCard.Options[AppGuid] = pageSettings.ToJson(); return(new WidgetResult() { Success = true, Markup = new WidgetMarkup("views/ProjectAdmin.cshtml", model) }); }
public static void IniciarHttpRequest() { HttpSessionManager.InitSession(); }
public static void TerminarHttpRequest() { HttpSessionManager.CloseSession(); }
public RepeaterModel GetRepeatingModel() { RepeaterModel model = new RepeaterModel(); var filter = new IssuesFilter(); if (IsSessionFilter() || !CurrentCard.Options.ContainsKey(AppGuid)) { filter = HttpSessionManager.GetFilter(CurrentCard.Id, IssuesFilter.CreateProjectFilter(CurrentUser.Entity.Id, CurrentProject.Entity.Id)); } else if (CurrentCard.Options.ContainsKey(AppGuid)) { filter = CurrentCard.Options[AppGuid].FromJson <IssuesFilter>(); } else { filter = CurrentCard.Filter; } if (filter.Repeat.IsEmpty() || filter.Repeat == "-|3") { filter.Repeat = "-|1"; } var transformedFilter = ItemFilterManager.TransformFilter(filter); SetCurrentProjectFromFilter(transformedFilter); model.Filter = IssueFilterHelper.PopulateModel(model.Filter, filter, transformedFilter, PermissionsManager, ItemFilterManager, IssueFilterHelper.GetViewableFields(filter, ProjectManager, MetaManager), false); model.GeminiDateFormat = CurrentUser.GeminiDateFormat; model.BaseUrl = string.Format("{0}workspace/{1}/", UserContext.Url, CurrentCard.Id); var allIssues = IssueManager.GetFiltered(filter); var allIssuesRelatedRepeating = allIssues.Count > 0 ? allIssues.FindAll(s => s.Repeated.HasValue() || s.Entity.OriginatorData.HasValue() && s.Entity.OriginatorType == IssueOriginatorType.Repeat) : new List <IssueDto>(); var masterIssues = allIssuesRelatedRepeating.Count > 0 ? allIssuesRelatedRepeating.FindAll(i => i.Repeated.HasValue()) : new List <IssueDto>(); List <string> repeatValues = new List <string>(); repeatValues.Add("-|1"); repeatValues.Add("-|2"); repeatValues.Add("-|3"); int totalNumberOfRepeatedItems = 0; if (masterIssues.Count > 0) { foreach (var masterIssue in masterIssues) { ItemsGrid item = new ItemsGrid(); item.MasterItem = masterIssue; item.RepeatedItems = allIssuesRelatedRepeating.FindAll(s => s.OriginatorData.HasValue() && s.OriginatorData.Equals(masterIssue.Entity.Id.ToString())); if (item.RepeatedItems.Count > 0 || filter.Repeat == "-|2" || !repeatValues.Contains(filter.Repeat)) { item.RepeatedItems = item.RepeatedItems.OrderBy("Created").ToList(); IssueDto lastRepeated = IssueManager.GetLastCreatedIssueForOriginator(IssueOriginatorType.Repeat, masterIssue.Id.ToString()); if (lastRepeated != null) { item.LastRepitition = lastRepeated.Created.ToString(UserContext.User.DateFormat); } } //Create Next repitition RepeatParser repeat = new RepeatParser(masterIssue.Repeated); for (DateTime date = DateTime.Today; item.NextRepitition.IsEmpty(); date = date.AddDays(1)) { repeat.CurrentDateTime = date; DateTime lastRepeatedDate = masterIssue.Created; if (item.RepeatedItems.Count > 0) { lastRepeatedDate = item.RepeatedItems.Last().Entity.Created; } if (item.RepeatedItems.Count >= repeat.MaximumRepeats) { break; } if (repeat.NeedsToRepeat(lastRepeatedDate)) { item.NextRepitition = date.ToShortDateString(); break; } } totalNumberOfRepeatedItems += item.RepeatedItems.Count; model.Items.Add(item); } } else if (allIssuesRelatedRepeating.Count > 0) { foreach (var repeatedIssue in allIssuesRelatedRepeating) { ItemsGrid item = new ItemsGrid() { MasterItem = repeatedIssue, RepeatedItems = new List <IssueDto>() }; model.Items.Add(item); } } model.ItemCount = masterIssues.Count + totalNumberOfRepeatedItems; return(model); }
public override WidgetResult Show(IssueDto args) { _projectManager = new ProjectManager(Cache, UserContext, GeminiContext); _projectDocumentManager = new ProjectDocumentManager(Cache, UserContext, GeminiContext); IssuesGridFilter tmp = new IssuesGridFilter(); HttpSessionManager HttpSessionManager = new HttpSessionManager(); var projects = new List <int>(); int selectedFolderKey = 0; // Safety check required because of http://gemini.countersoft.com/project/DEV/21/item/5088 try { if (CurrentCard.IsNew) { tmp = new IssuesGridFilter(HttpSessionManager.GetFilter(CurrentCard.Id, CurrentCard.Filter)); if (tmp == null) { tmp = CurrentCard.Options[AppGuid].FromJson <IssuesGridFilter>(); } projects = tmp.GetProjects(); } else { var cardOptions = CurrentCard.Options[AppGuid].FromJson <DocumentAppNavCard>(); projects.Add(cardOptions.projectId); selectedFolderKey = cardOptions.folderKey; } } catch (Exception ex) { tmp = new IssuesGridFilter(HttpSessionManager.GetFilter(CurrentCard.Id, IssuesFilter.CreateProjectFilter(UserContext.User.Entity.Id, UserContext.Project.Entity.Id))); projects = tmp.GetProjects(); } var activeProjects = _projectManager.GetActive(); var viewableProjects = new List <ProjectDto>(); int?currentProjectId = projects.Count > 0 ? projects.First() : 0; if (activeProjects == null || activeProjects.Count == 0) { activeProjects = new List <ProjectDto>(); } else { viewableProjects = ProjectManager.GetAppViewableProjects(this); } if (!viewableProjects.Any(s => s.Entity.Id == currentProjectId.Value)) { currentProjectId = viewableProjects.Count > 0 ? viewableProjects.First().Entity.Id : 0; } var model = new DocumentsModel { Projects = viewableProjects, FolderList = _projectDocumentManager.GetFolders(currentProjectId), MaxFileUpload = GeminiApp.Config.MaxFileUploadSizeBytes }; model.ProjectList = new SelectList(model.Projects, "Entity.Id", "Entity.Name", currentProjectId); model.Projects = viewableProjects; model.SelectedFolder = selectedFolderKey; model.HeaderText.Add(new HeaderTextItem(ResourceKeys.Documents)); if (!model.FolderList.Any() && currentProjectId > 0) { var entity = new ProjectDocument { Name = ResourceKeys.Documents, IsFolder = true, ProjectId = currentProjectId }; model.FolderList.Add(_projectDocumentManager.Create(entity)); } if (ProjectManager.GetAppEditableProjects(this).Count > 0) { ViewBag.EditPermission = true; } else { ViewBag.EditPermission = false; } WidgetResult result = new WidgetResult(); result.Markup = new WidgetMarkup("views\\Documents.cshtml", model); result.Success = true; return(result); }
public override WidgetResult Show(IssueDto issue = null) { var filter = IsSessionFilter() || CurrentCard.CardType != ProjectTemplatePageType.Custom && "app/changelog/view".Equals(CurrentCard.Url, StringComparison.InvariantCultureIgnoreCase) ? HttpSessionManager.GetFilter(CurrentCard.Id, IssuesFilter.CreateProjectFilter(CurrentUser.Entity.Id, CurrentProject.Entity.Id)) : CurrentCard.Filter; HttpSessionManager.SetFilter(CurrentCard.Id, filter); var workspaceProjects = new List <int>(); int?currentProjectId = 0; int versionId = 0; HttpSessionManager.Set <List <UserIssuesView> >(null, Constants.ChangelogSessionView); // Safety check required because of http://gemini.countersoft.com/project/DEV/21/item/5088 PageSettings pageSettings = null; try { if (CurrentCard.Options.ContainsKey(AppGuid)) { pageSettings = CurrentCard.Options[AppGuid].FromJson <PageSettings>(); if (pageSettings.PageData != null) { currentProjectId = pageSettings.PageData.projectId; versionId = pageSettings.PageData.versionId; } } } catch (Exception ex) {} var activeProjects = ProjectManager.GetActive(); var viewableProjects = new List <ProjectDto>(); if (activeProjects == null || activeProjects.Count == 0) { activeProjects = new List <ProjectDto>(); } else { viewableProjects = ProjectManager.GetAppViewableProjects(this); } if (!viewableProjects.Any(s => s.Entity.Id == currentProjectId.Value)) { currentProjectId = viewableProjects.Count > 0 ? viewableProjects.First().Entity.Id : 0; } UserContext.Project = ProjectManager.Get(currentProjectId); IEnumerable <Countersoft.Gemini.Commons.Entity.Version> versions = null; // get all versions that are released or not according to settings passed (BUT - NEVER show archived projects) versions = Cache.Versions.GetAll().Where(v => v.ProjectId == currentProjectId && v.Released == true && v.Archived == false).OrderBy(o => o.Sequence); if (versionId == 0) { VersionDto version = VersionManager.GetFirstChangeLogVersion(UserContext.Project.Entity.Id); if (version != null) { versionId = version.Entity.Id; } else { versionId = versions.Count() > 0 ? versions.First().Id : 0; } } Changelog.Models.ChangelogpAppModel model = BuildModelData(versionId, versions); model.ProjectList = new SelectList(viewableProjects, "Entity.Id", "Entity.Name", currentProjectId.GetValueOrDefault()); if (pageSettings == null) { pageSettings = new PageSettings(); } pageSettings.PageData.versionId = versionId; pageSettings.PageData.projectId = currentProjectId.GetValueOrDefault(); CurrentCard.Options[AppGuid] = pageSettings.ToJson(); return(new WidgetResult() { Success = true, Markup = new WidgetMarkup("views/Changelog.cshtml", model) }); }
public ActionResult GetChangelog(int versionId, int projectId) { UserContext.Project = ProjectManager.Get(projectId); IssuesFilter filter = null; if (Request.Form.Keys.Count > 0) { filter = new IssuesFilter(); string[] sort = Request.Form[0].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); StringBuilder sortField = new StringBuilder(); StringBuilder sortDirection = new StringBuilder(); for (int i = 0; i < sort.Length; i += 2) { sortField.Append(sort[i]); sortField.Append('|'); sortDirection.Append(sort[i + 1] == "0" ? (int)SortDirection.Ascending : (int)SortDirection.Descending); sortDirection.Append('|'); } filter.SortField = sortField.ToString(); filter.SortOrder = sortDirection.ToString(); filter.ShowSequenced = false; } if (filter == null) { filter = HttpSessionManager.GetFilter(CurrentCard.Id, new IssuesFilter()); filter.ShowSequenced = false; } IEnumerable <Countersoft.Gemini.Commons.Entity.Version> versions = Cache.Versions.GetAll().Where(v => v.ProjectId == projectId && v.Released == true && v.Archived == false).OrderBy(o => o.Sequence); // get all versions that are released or not according to settings passed (BUT - NEVER show archived projects) if (!versions.Any(s => s.Id == versionId)) { VersionDto newVersion = VersionManager.GetFirstChangeLogVersion(UserContext.Project.Entity.Id); if (newVersion != null) { versionId = newVersion.Entity.Id; } else { versionId = versions.Count() > 0 ? versions.First().Id : 0; } } var version = VersionManager.Get(versionId); List <IssueDto> issues = new List <IssueDto>(); if (version != null && version.Entity.Released) { issues = IssueManager.GetRoadmap(UserContext.Project.Entity.Id, filter, versionId); } Changelog.Models.ChangelogpAppModel model = BuildModelData(versionId, versions, filter); model.Issues = issues; return(JsonSuccess(new { success = true, grid = RenderPartialViewToString(this, "~/Views/Shared/DisplayTemplates/IssueDto.cshtml", model), statusBar = RenderPartialViewToString(this, AppManager.Instance.GetAppUrl("20A79C86-9FB4-4160-A4FD-29E37E185673", "views/StatusBar.cshtml"), model), versions = RenderPartialViewToString(this, AppManager.Instance.GetAppUrl("20A79C86-9FB4-4160-A4FD-29E37E185673", "views/VersionProgress.cshtml"), model) })); }
public override WidgetResult Show(IssueDto issue = null) { var filter = IsSessionFilter() || CurrentCard.CardType != ProjectTemplatePageType.Custom && "app/roadmap/view".Equals(CurrentCard.Url, StringComparison.InvariantCultureIgnoreCase) ? HttpSessionManager.GetFilter(CurrentCard.Id, IssuesFilter.CreateProjectFilter(CurrentUser.Entity.Id, CurrentProject.Entity.Id)) : CurrentCard.Filter; HttpSessionManager.SetFilter(CurrentCard.Id, filter); int? currentProjectId = 0; bool includeSubversions = false; int versionId = 0; HttpSessionManager.Set <List <UserIssuesView> >(null, Constants.RoadmapSessionView); // Safety check required because of http://gemini.countersoft.com/project/DEV/21/item/5088 PageSettings pageSettings = null; try { if (CurrentCard.Options.ContainsKey(AppGuid)) { pageSettings = CurrentCard.Options[AppGuid].FromJson <PageSettings>(); if (pageSettings.PageData != null) { currentProjectId = pageSettings.PageData.projectId; versionId = pageSettings.PageData.versionId; includeSubversions = pageSettings.PageData.includeSubversions; } } } catch { } //If no project is selected, select the first workspace project. if ((!currentProjectId.HasValue || currentProjectId.Value == 0) && filter.Projects.HasValue()) { try { var workspaceProjects = filter.Projects.Split('|'); if (workspaceProjects.Count() > 0) { currentProjectId = Convert.ToInt32(workspaceProjects[0]); } } catch { } } var viewableProjects = ProjectManager.GetAppViewableProjects(this).ToList(); if (!viewableProjects.Any(s => s.Entity.Id == currentProjectId.Value)) { currentProjectId = viewableProjects.Count > 0 ? viewableProjects.First().Entity.Id : 0; } UserContext.Project = ProjectManager.Get(currentProjectId); IEnumerable <Countersoft.Gemini.Commons.Entity.Version> versions = null; // get all versions that are released or not according to settings passed (BUT - NEVER show archived projects) versions = Cache.Versions.GetAll().Where(v => v.ProjectId == currentProjectId && v.Released == false && v.Archived == false).OrderBy(o => o.Sequence); if (versionId == 0) { VersionDto version = VersionManager.GetFirstRoadmapVersion(UserContext.Project.Entity.Id); if (version != null) { versionId = version.Entity.Id; } else { versionId = versions.Count() > 0 ? versions.First().Id : 0; } } List <IssueDto> issues; issues = IssueManager.GetRoadmap(UserContext.Project.Entity.Id, filter, versionId); if (includeSubversions) { var child = versions.Where(v => v.ParentId == versionId).ToList(); AddChildVersions(versions.ToList(), UserContext.Project.Entity.Id, filter, child, ref issues); } RoadmapAppModel model = BuildModelData(versionId, versions, issues); model.ProjectList = new SelectList(viewableProjects, "Entity.Id", "Entity.Name", currentProjectId.GetValueOrDefault()); model.IncludeSubVersions = includeSubversions; if (pageSettings == null) { pageSettings = new PageSettings(); } pageSettings.PageData.versionId = versionId; pageSettings.PageData.projectId = currentProjectId.GetValueOrDefault(); CurrentCard.Options[AppGuid] = pageSettings.ToJson(); //var view = RenderPartialViewToString(this, "~/views/Roadmap.cshtml", model); return(new WidgetResult() { Success = true, Markup = new WidgetMarkup("views/Roadmap.cshtml", model) }); }