private WidgetTypeData[] GetWidgetTypes(WidgetSpaceData widgetSpaceData) { if (widgetSpaceData.Scope == WidgetSpaceScope.SmartDesktop) { // pass in relevant list of roles to widget lookup // show commerce widgets to admins and commerceadmins only EkEnumeration.CmsRoleIds[] roles = new EkEnumeration.CmsRoleIds[0]; if (_contentApi.IsAdmin() && _contentApi.IsARoleMember(EkEnumeration.CmsRoleIds.CommerceAdmin)) { roles = new EkEnumeration.CmsRoleIds[1]; roles[0] = EkEnumeration.CmsRoleIds.CommerceAdmin; } // We are in the Workarea return WidgetTypeFactory.GetModel().FindAll(WidgetSpaceScope.SmartDesktop, roles); } // We are in a site return WidgetTypeFactory.GetModel().FindAll(widgetSpaceData.ID); }
void IWidgetSpaceView.View(WidgetSpaceData widgetSpace) { _widgetSpace = widgetSpace; m_refMsg = _contentApi.EkMsgRef; // Get private pages only if the pages being retrieved // belong to the user who is logged in, or if the logged in // user is an admin. bool bIsAdmin = _siteApi.IsAdmin(); Ektron.Cms.API.Community.CommunityGroup cg = new Ektron.Cms.API.Community.CommunityGroup(); bIsAdmin = bIsAdmin || cg.IsCommunityGroupAdmin(_siteApi.UserId, _foreignID); bool bGetPrivatePages = false; Guid? anonymousId; switch (widgetSpace.Scope) { case WidgetSpaceScope.CommunityGroup: bGetPrivatePages = (cg.IsUserInCommunityGroup(_foreignID, _siteApi.UserId) && _siteApi.IsLoggedIn == true) || bIsAdmin; break; case WidgetSpaceScope.User: bGetPrivatePages = (IsAllowAnonymous(out anonymousId)) || (_siteApi.UserId == _foreignID && _siteApi.IsLoggedIn == true) || bIsAdmin; break; case WidgetSpaceScope.SmartDesktop: bGetPrivatePages = true; _isInWorkarea = true; break; } ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Editable", "Ektron.Personalization.SetEditable(" + bGetPrivatePages.ToString().ToLower() + ");", true); if (bIsAdmin) { liDone.Visible = this.EditDefault; liEditDefaultWidgets.Visible = liResetWidgets.Visible = !this.EditDefault; } else { liDone.Visible = false; liEditDefaultWidgets.Visible = false; liResetWidgets.Visible = true; } ulTabOptions.Visible = liOptions.Visible = _Editable = bGetPrivatePages; //if the page is editable, set the widgetTrayHandle to visible aWidgetTrayHandle.Visible = bGetPrivatePages; if (IsAllowAnonymous(out anonymousId)) { _pages = _widgetSpace.GetPages(new Guid(anonymousId.ToString()), bGetPrivatePages); } else { _pages = _widgetSpace.GetPages((this.EditDefault ? 0 : _foreignID), bGetPrivatePages); } repTabs.Controls.Clear(); RenderTabs(); phWidgetPages.Controls.Clear(); //int index = 0; foreach (WidgetPageData page in _pages) { LoadPage(page, bGetPrivatePages, false); } if (_pages.Length > 0) { SelectTab(_activePage); } else { //Show No Tabs Message if (_siteApi.IsLoggedIn && errorMessages.Controls.Count < 1) { Literal lit = new Literal(); lit.Text = @"<html><body ><h2 class=""error"">"+m_refMsg.GetMessage("Alert no tabs created")+"</h2></body></html>"; errorMessages.Controls.Add(lit); } } if (bGetPrivatePages) { repWidgetTypes.DataSource = GetWidgetTypes(widgetSpace); repWidgetTypes.DataBind(); } }