コード例 #1
0
        /// <summary>
        /// Handles the ServerClick event of the btnAddAndClose control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        void btnAddAndClose_ServerClick(object sender, EventArgs e)
        {
            CustomPageEntity page = null;

            if (!this.IsAdmin)
            {
                page = CustomPageManager.GetCustomPage(PageUid, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
            }
            else
            {
                page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
            }

            // if template is changed we should recalculate control places and save data
            if (page.TemplateId != this.selectedUid)
            {
                TemplateChange(page);
            }
            else             // else just save data (to ensure that changes are made for appropriate layer)
            {
                PerformSaveData(page);
            }

            this.ForcePostback = true;

            CommandParameters cp = new CommandParameters("MC_Workspace_EditTemplate");

            Mediachase.Ibn.Web.UI.WebControls.CommandHandler.RegisterCloseOpenedFrameScript(this.Page, cp.ToString());
        }
コード例 #2
0
        public async Task <CustomPageDto> Handle(CreateCustomPageCommand request, CancellationToken cancellationToken)
        {
            var uid        = Guid.NewGuid();
            var customPage = new CustomPageEntity
            {
                Id              = uid,
                Title           = request.Title.Trim(),
                Slug            = request.Slug.ToLower().Trim(),
                MetaDescription = request.MetaDescription,
                CreateOnUtc     = DateTime.UtcNow,
                HtmlContent     = request.HtmlContent,
                CssContent      = request.CssContent,
                HideSidebar     = request.HideSidebar,
                IsPublished     = request.IsPublished
            };

            await _context.CustomPage.AddAsync(customPage, cancellationToken);

            await _context.SaveChangesAsync(cancellationToken);

            return(new CustomPageDto()
            {
                Id = customPage.Id,
                Title = customPage.Title.Trim(),
                CreateOnUtc = customPage.CreateOnUtc,
                CssContent = customPage.CssContent,
                RawHtmlContent = customPage.HtmlContent,
                HideSidebar = customPage.HideSidebar,
                Slug = customPage.Slug.Trim().ToLower(),
                MetaDescription = customPage.MetaDescription?.Trim(),
                UpdatedOnUtc = customPage.UpdatedOnUtc,
                IsPublished = customPage.IsPublished
            });
        }
コード例 #3
0
        public void OrderChange(string newLayout, string contextKey)
        {
            LayoutContextKey key = UtilHelper.JsonDeserialize <LayoutContextKey>(contextKey);

            if (!key.IsAdmin)
            {
                key.ProfileId = null;
                key.UserId    = Mediachase.IBN.Business.Security.CurrentUser.UserID;
            }

            CustomPageEntity page = CustomPageManager.GetCustomPage(key.PageUid, key.ProfileId, key.UserId);

            if (page == null)
            {
                throw new ArgumentException(String.Format("Cant read setting for page: {0}", key.PageUid));
            }

            if (!(key.IsAdmin || Mediachase.Ibn.Business.Customization.ProfileManager.CheckPersonalization()))
            {
                UserLightPropertyCollection pc = Mediachase.IBN.Business.Security.CurrentUser.Properties;
                pc["userCollapseExpand_" + key.PageUid.ToString("N")] = newLayout;
            }
            else
            {
                CustomPageManager.UpdateCustomPage(key.PageUid, newLayout, page.TemplateId, key.ProfileId, key.UserId);
            }
        }
コード例 #4
0
        private void BindInfo()
        {
            // Title
            if (CustomPageId != Guid.Empty)
            {
                CustomPageEntity entity = (CustomPageEntity)BusinessManager.Load(CustomPageEntity.ClassName, (PrimaryKeyId)CustomPageId);
                if (entity != null)
                {
                    PageLabel.Text = CHelper.GetResFileString(entity.Title);
                }
            }

            if (ProfileId.HasValue)
            {
                // Link to profile
                LayerLabel.Text = String.Concat(GetGlobalResourceObject("IbnFramework.Profile", "PortalProfile").ToString(), ":");
                CustomizationProfileEntity profile = (CustomizationProfileEntity)BusinessManager.Load(CustomizationProfileEntity.ClassName, (PrimaryKeyId)ProfileId.Value);
                if (profile != null)
                {
                    LayerLink.Text        = CHelper.GetResFileString(profile.Name);
                    LayerLink.NavigateUrl = String.Format(CultureInfo.InvariantCulture,
                                                          "~/Apps/MetaUIEntity/Pages/EntityView.aspx?ClassName={0}&ObjectId={1}&Tab=PageCustomization",
                                                          CustomizationProfileEntity.ClassName,
                                                          ProfileId.Value);

                    ClearUserSettingsButton.Attributes.Add("onclick",
                                                           String.Concat("return confirm('", GetGlobalResourceObject("IbnFramework.Global", "_mc_WsAdminConfirmation").ToString(), "?');"));
                }

                // Clear settings
                ClearUserSettingsButton.Text = GetGlobalResourceObject("IbnFramework.Global", "_mc_WsAdminPageApply").ToString();
            }
        }
コード例 #5
0
ファイル: UndoPageHandler.cs プロジェクト: alex765022/IBN
        public void Invoke(object Sender, object Element)
        {
            if (Element is CommandParameters)
            {
                CommandParameters cp = (CommandParameters)Element;

                CustomPageEntity page = (CustomPageEntity)BusinessManager.Load(CustomPageEntity.ClassName, PrimaryKeyId.Parse(cp.CommandArguments["primaryKeyId"]));
                if (page != null)
                {
                    HttpRequest request = HttpContext.Current.Request;

                    // ProfileId
                    int?profileId = null;
                    if (String.Compare(request["ClassName"], CustomizationProfileEntity.ClassName, true) == 0 &&
                        !String.IsNullOrEmpty(request["ObjectId"]))
                    {
                        profileId = int.Parse(request["ObjectId"]);
                    }

                    // UserId
                    int?userId = null;
                    if (String.Compare(request["ClassName"], "Principal", true) == 0 &&
                        !String.IsNullOrEmpty(request["ObjectId"]))
                    {
                        userId = int.Parse(request["ObjectId"]);
                    }

                    CustomPageManager.ResetCustomPage(page.Uid, profileId, userId);
                }
            }
        }
コード例 #6
0
        private void BindTitle()
        {
            CustomPageEntity page = CustomPageManager.GetCustomPage(PageUid, (int?)ProfileId, (int?)UserId);

            if (page != null)
            {
                ctrlTitleText.Text = page.Title;
            }
        }
コード例 #7
0
ファイル: CustomPageEdit.ascx.cs プロジェクト: alex765022/IBN
 private void BindData()
 {
     if (CustomPageId != PrimaryKeyId.Empty)
     {
         CustomPageEntity page = (CustomPageEntity)BusinessManager.Load(CustomPageEntity.ClassName, CustomPageId);
         ctrlTitleText.Text   = page.Title;
         DescriptionText.Text = page.Description;
         CHelper.SafeSelect(TemplateList, page.TemplateId.ToString().ToLowerInvariant());
     }
 }
コード例 #8
0
ファイル: CustomPageView.aspx.cs プロジェクト: alex765022/IBN
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack && !String.IsNullOrEmpty(Request["PageUid"]))
     {
         CustomPageEntity page = CustomPageManager.GetCustomPage(new Guid(Request["PageUid"]), null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
         if (page != null)
         {
             pT.Title = CHelper.GetResFileString(page.Title);
         }
     }
 }
コード例 #9
0
        /// <summary>
        /// Performs the save data.
        /// </summary>
        private void PerformSaveData()
        {
            string[] Ids = GetCheckedItems();

            List <CpInfo> userList = new List <CpInfo>();

            CustomPageEntity page = null;

            if (!this.IsAdmin)
            {
                page = CustomPageManager.GetCustomPage(PageUid, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
            }
            else
            {
                page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
            }
            string userData    = page.JsonData;
            Guid   templateUid = page.TemplateId;

            userList = UtilHelper.JsonDeserialize <List <CpInfo> >(userData.Replace("\\", ""));

            foreach (CpInfo cpItem in userList)
            {
                if (cpItem.Id == this.ColumnId)
                {
                    foreach (string id in Ids)
                    {
                        CpInfoItem newItem = new CpInfoItem();
                        newItem.Collapsed   = "false";
                        newItem.Id          = id;
                        newItem.InstanseUid = Guid.NewGuid().ToString("N");
                        cpItem.Items.Add(newItem);
                    }
                }
            }

            string newJsonData = UtilHelper.JsonSerialize(userList);

            //Perform save to storage
            if (!IsAdmin)
            {
                CustomPageManager.UpdateCustomPage(PageUid, newJsonData, templateUid, null, Mediachase.IBN.Business.Security.UserID);
            }
            else
            {
                CustomPageManager.UpdateCustomPage(PageUid, newJsonData, templateUid, ProfileId, UserId);
            }
        }
コード例 #10
0
        /// <summary>
        /// Performs the save data.
        /// </summary>
        /// <param name="page">The page.</param>
        private void PerformSaveData(CustomPageEntity page)
        {
            string userData    = page.JsonData;
            Guid   templateUid = page.TemplateId;

            List <CpInfo> userList = UtilHelper.JsonDeserialize <List <CpInfo> >(userData.Replace("\\", ""));

            string jsonData = UtilHelper.JsonSerialize(userList);

            //Perform save to storage
            if (!IsAdmin)
            {
                CustomPageManager.UpdateCustomPage(PageUid, jsonData, templateUid, null, Mediachase.IBN.Business.Security.UserID);
            }
            else
            {
                CustomPageManager.UpdateCustomPage(PageUid, jsonData, templateUid, ProfileId, UserId);
            }
        }
コード例 #11
0
        private CustomPage EntityToCustomPage(CustomPageEntity entity)
        {
            if (null == entity)
            {
                return(null);
            }

            return(new CustomPage
            {
                Id = entity.Id,
                Title = entity.Title.Trim(),
                CreateOnUtc = entity.CreateOnUtc,
                CssContent = entity.CssContent,
                RawHtmlContent = _htmlCodec.HtmlDecode(entity.HtmlContent),
                HideSidebar = entity.HideSidebar,
                RouteName = entity.RouteName.Trim().ToLower(),
                UpdatedOnUtc = entity.UpdatedOnUtc
            });
        }
コード例 #12
0
        private CustomPage EntityToCustomPage(CustomPageEntity entity)
        {
            if (null == entity)
            {
                return(null);
            }

            return(new CustomPage
            {
                Id = entity.Id,
                Title = entity.Title.Trim(),
                CreateOnUtc = entity.CreateOnUtc,
                CssContent = entity.CssContent,
                RawHtmlContent = entity.HtmlContent,
                HideSidebar = entity.HideSidebar,
                Slug = entity.Slug.Trim().ToLower(),
                MetaDescription = entity.MetaDescription?.Trim(),
                UpdatedOnUtc = entity.UpdatedOnUtc
            });
        }
コード例 #13
0
        public Task <Response <Guid> > CreatePageAsync(CreateCustomPageRequest request)
        {
            return(TryExecuteAsync <Guid>(async() =>
            {
                var uid = Guid.NewGuid();
                var customPage = new CustomPageEntity
                {
                    Id = uid,
                    Title = request.Title.Trim(),
                    RouteName = request.RouteName.ToLower().Trim(),
                    CreateOnUtc = DateTime.UtcNow,
                    HtmlContent = _htmlCodec.HtmlEncode(request.HtmlContent),
                    CssContent = request.CssContent,
                    HideSidebar = request.HideSidebar
                };

                await _customPageRepository.AddAsync(customPage);
                return new SuccessResponse <Guid>(uid);
            }));
        }
コード例 #14
0
        public Task <Response <Guid> > CreatePageAsync(CreateCustomPageRequest request)
        {
            return(TryExecuteAsync <Guid>(async() =>
            {
                var uid = Guid.NewGuid();
                var customPage = new CustomPageEntity
                {
                    Id = uid,
                    Title = request.Title.Trim(),
                    RouteName = request.RouteName.ToLower().Trim(),
                    CreateOnUtc = DateTime.UtcNow,
                    HtmlContent = request.HtmlContent,
                    CssContent = request.CssContent,
                    HideSidebar = request.HideSidebar
                };

                await _customPageRepository.AddAsync(customPage);
                await _moongladeAudit.AddAuditEntry(EventType.Content, AuditEventId.PageCreated, $"Page '{customPage.Id}' created.");

                return new SuccessResponse <Guid>(uid);
            }));
        }
コード例 #15
0
ファイル: WsViewer.ascx.cs プロジェクト: alex765022/IBN
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init"></see> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs"></see> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            string valueData     = string.Empty;
            string valueTemplate = string.Empty;

            CustomPageEntity page = null;

            if (!this.IsAdmin)
            {
                page = CustomPageManager.GetCustomPage(PageUid, null, (PrimaryKeyId)Mediachase.IBN.Business.Security.CurrentUser.UserID);
            }
            else
            {
                page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
//				CHelper.AddToContext("pageUid", this.PageUid);
            }

            cpManager.DataSource = page.TemplateId.ToString();

            cpManager.PageUid         = this.PageUid;
            cpManagerExtender.PageUid = this.PageUid;
            cpManagerExtender.IsAdmin = this.IsAdmin;
            LayoutContextKey key = new LayoutContextKey(this.PageUid, this.IsAdmin);

            if (IsAdmin)
            {
                key.ProfileId = ProfileId;
                key.UserId    = UserId;
            }

            cpManagerExtender.ContextKey = key;
            cpManager.IsAdmin            = this.IsAdmin;
            if (!IsPostBack)
            {
                cpManager.DataBind();
            }
        }
コード例 #16
0
        public async Task <Guid> CreateAsync(CreateCustomPageRequest request)
        {
            var uid        = Guid.NewGuid();
            var customPage = new CustomPageEntity
            {
                Id              = uid,
                Title           = request.Title.Trim(),
                Slug            = request.Slug.ToLower().Trim(),
                MetaDescription = request.MetaDescription,
                CreateOnUtc     = DateTime.UtcNow,
                HtmlContent     = request.HtmlContent,
                CssContent      = request.CssContent,
                HideSidebar     = request.HideSidebar,
                IsPublished     = request.IsPublished
            };

            await _customPageRepository.AddAsync(customPage);

            await _blogAudit.AddAuditEntry(EventType.Content, AuditEventId.PageCreated, $"Page '{customPage.Id}' created.");

            return(uid);
        }
コード例 #17
0
        /// <summary>
        /// Performs the save template.
        /// </summary>
        private void PerformSaveTemplate()
        {
            CustomPageEntity page = null;

            if (!IsAdmin)
            {
                page = CustomPageManager.GetCustomPage(PageUid, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
            }
            else
            {
                page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
            }

            if (!IsAdmin)
            {
                CustomPageManager.UpdateCustomPage(PageUid, page.JsonData, new Guid(this.selectedUid), null, Mediachase.IBN.Business.Security.UserID);
            }
            else
            {
                CustomPageManager.UpdateCustomPage(PageUid, page.JsonData, new Guid(this.selectedUid), ProfileId, UserId);
            }
        }
コード例 #18
0
        public void Delete(string newLayout, string contextKey)
        {
            //ToDo: Clear ControlProperties collection for deleted node (do it in provider)
            LayoutContextKey key = UtilHelper.JsonDeserialize <LayoutContextKey>(contextKey);

            if (!key.IsAdmin)
            {
                key.ProfileId = null;
                key.UserId    = Mediachase.IBN.Business.Security.CurrentUser.UserID;
            }

            CustomPageEntity page = CustomPageManager.GetCustomPage(key.PageUid, key.ProfileId, key.UserId);

            if (page == null)
            {
                throw new ArgumentException(String.Format("Cant read setting for page: {0}", key.PageUid));
            }


            if (!key.IsAdmin)
            {
                List <CpInfo> list = UtilHelper.JsonDeserialize <List <CpInfo> >(page.JsonData);
                foreach (CpInfo item in list)
                {
                    foreach (CpInfoItem internalItem in item.Items)
                    {
                        if (!newLayout.Contains(internalItem.InstanseUid))
                        {
                            //ToDo: make method to get "wrapControl{0}_{1}"
                            ControlProperties.Provider.DeleteValue(String.Format("wrapControl{0}_{1}", internalItem.Id.ToLower().Replace("-", ""), internalItem.InstanseUid));
                        }
                    }
                }
            }

            CustomPageManager.UpdateCustomPage(key.PageUid, newLayout, page.TemplateId, key.ProfileId, key.UserId);
        }
コード例 #19
0
        /// <summary>
        /// Binds the rep templates.
        /// </summary>
        private void BindRepTemplates()
        {
            if (this.selectedUid == Guid.Empty)
            {
                CustomPageEntity page = null;
                if (!this.IsAdmin)
                {
                    page = CustomPageManager.GetCustomPage(PageUid, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
                }
                else
                {
                    page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
                }

                this.selectedUid = page.TemplateId;
            }

            repTemplates.DataSource = GenTemplatesDataSource();
            repTemplates.DataBind();

            foreach (RepeaterItem item in repTemplates.Items)
            {
                Button             btn = (Button)item.FindControl("btnCommand");
                HtmlGenericControl div = (HtmlGenericControl)item.FindControl("mainItemDiv");

                if (btn != null && div != null)
                {
                    if (new Guid(btn.CommandArgument.ToString()) == this.selectedUid)
                    {
                        div.Attributes.Add("class", "customizeWSTemplateItemSelected");
                    }

                    div.Attributes.Add("onclick", this.Page.ClientScript.GetPostBackEventReference(btn, btn.CommandArgument));
                }
            }
        }
コード例 #20
0
        /// <summary>
        /// Templates the change.
        /// </summary>
        /// <param name="page">The page.</param>
        private void TemplateChange(CustomPageEntity page)
        {
            string userSettings = page.JsonData;

            List <CpInfo> list = UtilHelper.JsonDeserialize <List <CpInfo> >(userSettings);

            WorkspaceTemplateInfo wti = WorkspaceTemplateFactory.GetTemplateInfo(this.selectedUid.ToString());

            if (wti == null)
            {
                throw new NullReferenceException(String.Format("Cant find template: {0}", this.selectedUid));
            }

            List <ColumnInfo> templateColumn = UtilHelper.JsonDeserialize <List <ColumnInfo> >(wti.ColumnInfo);

            if (templateColumn.Count == 0)
            {
                throw new ArgumentException("Template must contain minumum 1 column");
            }

            if (list.Count == 0)
            {
                throw new ArgumentException("Invalid workspace personalize data");
            }

            int       counter      = 0;
            ArrayList deletedItems = new ArrayList();

            foreach (CpInfo info in list)
            {
                if (!templateColumn.Contains(new ColumnInfo(info.Id)))
                {
                    info.Id = templateColumn[0].Id;

                    if (counter > 0)
                    {
                        foreach (CpInfoItem item in info.Items)
                        {
                            list[0].Items.Add(item);
                        }

                        deletedItems.Add(info);
                    }
                }

                counter++;
            }

            if (deletedItems.Count > 0)
            {
                foreach (CpInfo info in deletedItems)
                {
                    list.Remove(info);
                }
            }

            string jsonData = UtilHelper.JsonSerialize(list);

            if (!this.IsAdmin)
            {
                CustomPageManager.UpdateCustomPage(PageUid, jsonData, this.selectedUid, null, Mediachase.IBN.Business.Security.UserID);
            }
            else
            {
                CustomPageManager.UpdateCustomPage(PageUid, jsonData, this.selectedUid, ProfileId, UserId);
            }
        }
コード例 #21
0
        /// <summary>
        /// Gets the ids for control place.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <returns></returns>
        String GetIdsForControlPlace(string id)
        {
            String retVal       = String.Empty;
            string userSettings = string.Empty;

            // using if getting old settings from database(controls without instanceUid)
            bool _updateUidFlag = false;

            CustomPageEntity page = null;

            if (!IsAdmin)
            {
                page = CustomPageManager.GetCustomPage(PageUid, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
            }
            else
            {
                page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
            }
            userSettings = page.JsonData;

            List <CpInfo> list = UtilHelper.JsonDeserialize <List <CpInfo> >(userSettings);

            foreach (CpInfo cpInfo in list)
            {
                if (cpInfo.Id == id)
                {
                    for (int i = 0; i < cpInfo.Items.Count; i++)
                    {
                        if (String.IsNullOrEmpty(cpInfo.Items[i].InstanseUid))
                        {
                            cpInfo.Items[i].InstanseUid = Guid.NewGuid().ToString("N");
                            _updateUidFlag = true;
                        }
                        retVal += String.Format("{0}^{1}^{2}:", cpInfo.Items[i].Id, cpInfo.Items[i].Collapsed, cpInfo.Items[i].InstanseUid);                         //cpInfo.Items[i].Id + ":";
                    }
                }
            }

            #region Update InstanceUid to database
            if (_updateUidFlag)
            {
                string userData = UtilHelper.JsonSerialize(list);

                if (!IsAdmin)
                {
                    CustomPageManager.UpdateCustomPage(PageUid, userData, page.TemplateId, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
                }
                else
                {
                    CustomPageManager.UpdateCustomPage(PageUid, userData, page.TemplateId, ProfileId, UserId);
                }
            }
            #endregion


            if (retVal.Length > 0)
            {
                retVal = retVal.TrimEnd(':');
            }

            return(retVal);
        }
コード例 #22
0
ファイル: CustomPageEdit.ascx.cs プロジェクト: alex765022/IBN
        protected void SaveButton_ServerClick(object sender, EventArgs e)
        {
            string className      = string.Empty;
            string objectIdString = string.Empty;
            int    objectId       = 0;

            if (int.TryParse(Request["ObjectId"], out objectId))                // for portal level we can get "{QueryString:ObjectId}"
            {
                objectIdString = objectId.ToString();
                className      = Request["ClassName"];
            }

            PrimaryKeyId pageId = PrimaryKeyId.Empty;

            if (CustomPageId == PrimaryKeyId.Empty)             // new
            {
                Guid pageUid = Guid.NewGuid();

                CustomPageEntity page = BusinessManager.InitializeEntity <CustomPageEntity>(CustomPageEntity.ClassName);
                page.Title       = ctrlTitleText.Text;           //TitleText.Text;
                page.Description = DescriptionText.Text;
                page.TemplateId  = new Guid(TemplateList.SelectedValue);
                page.ProfileId   = ProfileId;
                page.UserId      = UserId;
                page.Uid         = pageUid;

                // Json
                List <CpInfo>         list           = new List <CpInfo>();
                WorkspaceTemplateInfo wti            = WorkspaceTemplateFactory.GetTemplateInfo(TemplateList.SelectedValue);
                List <ColumnInfo>     columnInfoList = UtilHelper.JsonDeserialize <List <ColumnInfo> >(wti.ColumnInfo);
                foreach (ColumnInfo columnInfo in columnInfoList)
                {
                    CpInfo cpInfo = new CpInfo();
                    cpInfo.Id    = columnInfo.Id;
                    cpInfo.Items = new List <CpInfoItem>();
                    list.Add(cpInfo);
                }
                page.JsonData = UtilHelper.JsonSerialize(list);
                //

                pageId = BusinessManager.Create(page);

                Response.Redirect(
                    String.Format(CultureInfo.InvariantCulture,
                                  "~/Apps/WidgetEngine/Pages/CustomPageDesign.aspx?id={0}&ClassName={1}&ObjectId={2}&PageUid={3}",
                                  pageId,
                                  className,
                                  objectIdString,
                                  pageUid)
                    );
            }
            else             // edit
            {
                CustomPageEntity page          = (CustomPageEntity)BusinessManager.Load(CustomPageEntity.ClassName, CustomPageId);
                Guid             pageUid       = page.Uid;
                Guid             newTemplateId = new Guid(TemplateList.SelectedValue);

                // if we edit the page from the current layer
                if ((page.UserId.HasValue && UserId.HasValue && (int)page.UserId.Value == UserId.Value)
                    ||
                    (page.ProfileId.HasValue && ProfileId.HasValue && (int)page.ProfileId.Value == ProfileId.Value)
                    ||
                    (!page.UserId.HasValue && !page.ProfileId.HasValue && !UserId.HasValue && !ProfileId.HasValue && !page.Properties.Contains(LocalDiskEntityObjectPlugin.IsLoadDiskEntityPropertyName)))
                {
                    page.Title       = ctrlTitleText.Text;              // TitleText.Text;
                    page.Description = DescriptionText.Text;

                    if (page.TemplateId != newTemplateId)
                    {
                        page.TemplateId = newTemplateId;
                        page.JsonData   = GetNewJson(page.JsonData, newTemplateId);
                    }

                    BusinessManager.Update(page);
                }
                else                 // if we edit the page from the above layer
                {
                    CustomPageEntity newPage = BusinessManager.InitializeEntity <CustomPageEntity>(CustomPageEntity.ClassName);
                    newPage.Title       = ctrlTitleText.Text;              // TitleText.Text;
                    newPage.Description = DescriptionText.Text;
                    newPage.ProfileId   = ProfileId;
                    newPage.UserId      = UserId;
                    newPage.Uid         = pageUid;
                    newPage.TemplateId  = newTemplateId;
                    if (page.TemplateId != newTemplateId)
                    {
                        page.JsonData = GetNewJson(page.JsonData, newTemplateId);
                    }
                    else
                    {
                        newPage.JsonData = page.JsonData;
                    }

                    BusinessManager.Create(newPage);
                }

                Response.Redirect(GetLinkToList());
            }
        }
コード例 #23
0
        /// <summary>
        /// Handles the ItemCommand event of the grdMain control.
        /// </summary>
        /// <param name="source">The source of the event.</param>
        /// <param name="e">The <see cref="System.Web.UI.WebControls.DataGridCommandEventArgs"/> instance containing the event data.</param>
        void grdMain_ItemCommand(object source, DataGridCommandEventArgs e)
        {
            if (e.CommandName == "Add")
            {
                string        Ids      = e.CommandArgument.ToString();
                List <CpInfo> userList = new List <CpInfo>();

                CustomPageEntity page = null;
                if (!this.IsAdmin)
                {
                    page = CustomPageManager.GetCustomPage(PageUid, null, Mediachase.IBN.Business.Security.CurrentUser.UserID);
                }
                else
                {
                    page = CustomPageManager.GetCustomPage(PageUid, ProfileId, UserId);
                }

                string userData    = page.JsonData;
                Guid   templateUid = page.TemplateId;

                List <ColumnInfo> list = new List <ColumnInfo>();
                if (this.IsAdmin)
                {
                    WorkspaceTemplateInfo wti = WorkspaceTemplateFactory.GetTemplateInfo(templateUid.ToString());
                    list = UtilHelper.JsonDeserialize <List <ColumnInfo> >(wti.ColumnInfo);
                }
                userList = UtilHelper.JsonDeserialize <List <CpInfo> >(userData.Replace("\\", ""));

                List <string> currentColumnsId = new List <string>();
                foreach (CpInfo cpItem in userList)
                {
                    currentColumnsId.Add(cpItem.Id);
                }

                List <CpInfo> newUserList = new List <CpInfo>();
                newUserList.AddRange(userList);

                if (this.IsAdmin)
                {
                    foreach (CpInfo cpItem in userList)
                    {
                        foreach (ColumnInfo info in list)
                        {
                            if (currentColumnsId.Contains(info.Id))
                            {
                                continue;
                            }

                            CpInfo cInfo = new CpInfo();
                            cInfo.Id    = info.Id;
                            cInfo.Items = new List <CpInfoItem>();
                            newUserList.Add(cInfo);
                        }
                    }
                }

                foreach (CpInfo cpItem in newUserList)
                {
                    if (cpItem.Id == this.ColumnId)
                    {
                        CpInfoItem newItem = new CpInfoItem();
                        newItem.Collapsed   = "false";
                        newItem.Id          = Ids;
                        newItem.InstanseUid = Guid.NewGuid().ToString("N");
                        cpItem.Items.Add(newItem);
                    }
                }

                string newJsonData = UtilHelper.JsonSerialize(newUserList);

                // Perform save to storage
                if (!IsAdmin)
                {
                    CustomPageManager.UpdateCustomPage(PageUid, newJsonData, templateUid, null, Mediachase.IBN.Business.Security.UserID);
                }
                else
                {
                    CustomPageManager.UpdateCustomPage(PageUid, newJsonData, templateUid, ProfileId, UserId);
                }

                divTemplateUpdate.Style.Add(HtmlTextWriterStyle.Display, "block");
                this.ForcePostback = true;
            }
        }