예제 #1
0
        /// <summary>
        /// Gets the configured Field Editor options. Options determine both the look of Field Editor and the actual fields available for editing.
        /// </summary>
        /// <param name="args">The pipeline arguments. Current item URI is accessible as 'uri' parameter</param>
        /// <param name="form">The form values.</param>
        /// <returns>The options.</returns>
        protected override PageEditFieldEditorOptions GetOptions(ClientPipelineArgs args, NameValueCollection form)
        {
            List <FieldDescriptor> fieldDescriptors = new List <FieldDescriptor>();
            Item item = Database.GetItem(ItemUri.Parse(args.Parameters["uri"]));

            Assert.IsNotNull(item, "item");
            string fields = args.Parameters["fields"];

            Assert.IsNotNullOrEmpty(fields, "Field Editor command expects 'fields' parameter");
            string title = args.Parameters["title"];

            Assert.IsNotNullOrEmpty(title, "Field Editor command expects 'title' parameter");
            string icon = args.Parameters["icon"];

            Assert.IsNotNullOrEmpty(icon, "Field Editor command expects 'icon' parameter");

            foreach (string field in new ListString(fields))
            {
                if (item.Fields[field] != null)
                {
                    fieldDescriptors.Add(new FieldDescriptor(item, field));
                }
            }
            PageEditFieldEditorOptions options = new PageEditFieldEditorOptions(form, fieldDescriptors);

            options.Title = title;
            options.Icon  = icon;
            return(options);
        }
        /// <summary>
        ///     Sheer UI processor methods that orchestrates starting the Field Editor and processing the returned value
        /// </summary>
        /// <param name="args">
        ///     The arguments.
        /// </param>
        protected virtual void StartFieldEditor(ClientPipelineArgs args)
        {
            var current = HttpContext.Current;
            if (current == null)
                return;
            var page = current.Handler as Page;
            if (page == null)
                return;
            var form = page.Request.Form;

            if (!args.IsPostBack)
            {
                SheerResponse.ShowModalDialog(GetOptions(args, form).ToUrlString().ToString(), "720", "520",
                    string.Empty, true);
                args.WaitForPostBack();
            }
            else
            {
                if (!args.HasResult)
                    return;

                var results = PageEditFieldEditorOptions.Parse(args.Result);
                var currentItem = CurrentItem;
                currentItem.Edit(options =>
                {
                    foreach (var field in results.Fields)
                    {
                        currentItem.Fields[field.FieldID].Value = field.Value;
                    }
                });

                PageEditFieldEditorOptions.Parse(args.Result).SetPageEditorFieldValues();
            }
        }
        public static PageEditFieldEditorOptions GetFieldEditorOptions(NameValueCollection form, string pipedFields, Item item)
        {
            var fields  = pipedFields.Split('|').Where(fieldName => item.Fields[fieldName] != null).Select(fieldName => new FieldDescriptor(item, fieldName)).ToList();
            var options = new PageEditFieldEditorOptions(form, fields);

            return(options);
        }
예제 #4
0
        /// <summary>
        /// The save field editor values.
        /// </summary>
        /// <param name="args">
        /// The pipeline args.
        /// </param>
        protected void SaveFieldEditorValues(ClientPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");

            PageEditFieldEditorOptions options = PageEditFieldEditorOptions.Parse(args.Result);

            this.SaveFieldValues(options);
        }
예제 #5
0
 public static PageEditFieldEditorOptions GetFieldEditorOptions(NameValueCollection form, string pipedFields, Item item)
 {
   var fields = pipedFields.Split('|').Where(fieldName => item.Fields[fieldName] != null).Select(fieldName => new FieldDescriptor(item, fieldName)).ToList();
   var options = new PageEditFieldEditorOptions(form, fields)
                 {
                   PreserveSections = true,
                   ShowSections = true
                 };
   return options;
 }
예제 #6
0
        /// <summary>
        ///     Sheer UI processor methods that orchestrates starting the Field Editor and processing the returned value
        /// </summary>
        /// <param name="args">
        ///     The arguments.
        /// </param>
        protected virtual void StartFieldEditor(ClientPipelineArgs args)
        {
            var current = HttpContext.Current;

            if (current == null)
            {
                return;
            }
            var page = current.Handler as Page;

            if (page == null)
            {
                return;
            }
            var form = page.Request.Form;

            if (!args.IsPostBack)
            {
                SheerResponse.ShowModalDialog(
                    GetOptions(args, form).ToUrlString().ToString(),
                    args.Parameters["width"],
                    args.Parameters["height"],
                    string.Empty, true);
                args.WaitForPostBack();
            }
            else
            {
                if (args.HasResult)
                {
                    var results     = PageEditFieldEditorOptions.Parse(args.Result);
                    var currentItem = CurrentItem;
                    currentItem.Edit(options =>
                    {
                        foreach (var field in results.Fields)
                        {
                            currentItem.Fields[field.FieldID].Value = field.Value;
                        }
                    });

                    PageEditFieldEditorOptions.Parse(args.Result).SetPageEditorFieldValues();
                }
                var strJobId = args.Parameters["jobHandle"];
                if (!String.IsNullOrEmpty(strJobId))
                {
                    var jobHandle = Handle.Parse(strJobId);
                    var job       = JobManager.GetJob(jobHandle);
                    if (job != null)
                    {
                        job.MessageQueue.PutResult(args.HasResult ? "ok" : "cancel");
                    }
                }
            }
        }
 private PageEditFieldEditorOptions GetOptions(ClientPipelineArgs args, NameValueCollection form)
 {
     Item item = Database.GetItem(ItemUri.Parse(args.Parameters["uri"]));
     List<FieldDescriptor> fieldDescriptors = new List<FieldDescriptor>();
     fieldDescriptors.Add(new FieldDescriptor(item, Data.ProjectFieldId.ToString()));
     List<FieldDescriptor> fieldDescriptors1 = fieldDescriptors;
     Assert.IsNotNull(item, "item");
     PageEditFieldEditorOptions pageEditFieldEditorOption = new PageEditFieldEditorOptions(form, fieldDescriptors1);
     pageEditFieldEditorOption.Title = "Select Project";
     pageEditFieldEditorOption.Icon = "";
     pageEditFieldEditorOption.DialogTitle = "Select Project";
     PageEditFieldEditorOptions pageEditFieldEditorOption1 = pageEditFieldEditorOption;
     return pageEditFieldEditorOption1;
 }
 protected virtual PageEditFieldEditorOptions GetOptions(ClientPipelineArgs args, NameValueCollection form)
 {
     EnsureContext(args);
     var settingsItem = SettingsItem;
     var options = new PageEditFieldEditorOptions(form, BuildListWithFieldsToShow())
     {
         Title = settingsItem[Header],
         Icon = settingsItem[Icon]
     };
     options.Parameters["contentitem"] = CurrentItemUri.ToString();
     options.PreserveSections = args.Parameters[PreserveSectionsParameter] == "1";
     options.DialogTitle = settingsItem[Header];
     options.SaveItem = true;
     return options;
 }
예제 #9
0
        protected virtual PageEditFieldEditorOptions GetOptions(ClientPipelineArgs args, NameValueCollection form)
        {
            EnsureContext(args);
            var options = new PageEditFieldEditorOptions(form, BuildListWithFieldsToShow(args.Parameters["fields"]))
            {
                Title = args.Parameters["section"],
                Icon  = args.Parameters["icon"]
            };

            options.Parameters["contentitem"] = CurrentItem.Uri.ToString();
            options.PreserveSections          = args.Parameters[PreserveSectionsParameter] == "1";
            options.DialogTitle = args.Parameters["title"];
            options.SaveItem    = true;
            return(options);
        }
예제 #10
0
        /// <summary>
        /// Sheer UI processor methods that orchestrates starting the Field Editor and processing the returned value
        /// </summary>
        /// <param name="args">The arguments.</param>
        protected new void StartFieldEditor(ClientPipelineArgs args)
        {
            HttpContext current = HttpContext.Current;

            if (current != null)
            {
                Page handler = current.Handler as Page;

                if (handler != null)
                {
                    NameValueCollection form = handler.Request.Form;

                    if (form != null)
                    {
                        if (!args.IsPostBack)
                        {
                            SheerResponse.ShowModalDialog(this.GetOptions(args, form).ToUrlString().ToString(), "720", "480", string.Empty, true);

                            args.WaitForPostBack();
                        }

                        else if (args.HasResult)
                        {
                            foreach (FieldDescriptor fd in PageEditFieldEditorOptions.Parse(args.Result).Fields)
                            {
                                Item item = Context.ContentDatabase.GetItem(fd.ItemUri.ToDataUri());

                                if (item.Fields[fd.FieldID].Name == "__Tracking")
                                {
                                    continue;
                                }

                                using (new SecurityDisabler())
                                {
                                    using (new EditContext(item))
                                    {
                                        item[fd.FieldID] = fd.Value;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
예제 #11
0
        /// <summary>
        /// Saves the page editor field values.
        /// </summary>
        /// <param name="options">The options.</param>
        protected virtual void SaveFieldValues(PageEditFieldEditorOptions options)
        {
            Item item = Database.GetItem(options.Fields.First().ItemUri);

            if (item == null)
            {
                AjaxScriptManager.Current.ShowError(Translate.Text(Texts.TheOrderCannotBeSaved), Translate.Text(Texts.ThisOrderDoesNotExist));
                return;
            }

            using (new EditContext(item, SecurityCheck.Enable))
            {
                foreach (FieldDescriptor descr in options.Fields)
                {
                    item[descr.FieldID] = descr.Value;
                }
            }
        }
        protected void StartFieldEditor(ClientPipelineArgs args)
        {
            NameValueCollection nameValueCollection = HttpContext.Current?.Handler is Page handler
                ? handler.Request.Form
                : null;

            if (nameValueCollection == null)
            {
                return;
            }

            Assert.ArgumentNotNull(args, nameof(args));

            if (!args.IsPostBack)
            {
                SheerResponse.ShowModalDialog(
                    this.GetOptions(args, nameValueCollection).ToUrlString().ToString(),
                    "720",
                    "520",
                    string.Empty,
                    true);

                args.WaitForPostBack();
            }
            else
            {
                if (!args.HasResult)
                {
                    return;
                }

                PageEditFieldEditorOptions
                .Parse(args.Result)
                .SetPageEditorFieldValues(nameValueCollection);

                SheerResponse.Eval(
                    "ExperienceEditor.ribbonDocument().querySelector('[data-sc-id=\"QuickSave\"]').click();");
            }
        }
        /// <summary>
        /// Gets all option as base class, only the fields are get via private function, because
        /// they are not passed through pipeline.
        /// </summary>
        /// <param name="args">
        /// The arguments which come from click-command in webedit button item's field "Click".
        /// </param>
        /// <param name="form">
        /// The current form for the current page in which the webedit button is clicked.
        /// </param>
        /// <returns></returns>
        protected PageEditFieldEditorOptions GetOptions(
            ClientPipelineArgs args,
            NameValueCollection form)
        {
            Assert.ArgumentNotNull(args, nameof(args));
            Assert.ArgumentNotNull(form, nameof(form));

            Item datasourceItem = Database.GetItem(ItemUri.Parse(args.Parameters["uri"]));

            Assert.IsNotNull(datasourceItem, "item");

            string commandID = args.Parameters["command"];

            Assert.IsNotNullOrEmpty(commandID, "Field Editor command expects 'command' parameter");

            // Optional field ID whitelist (dash separated)
            string    fieldsParameter = args.Parameters["fields"];
            List <ID> fields          = this.ParseFieldsParameter(fieldsParameter);

            Item commandItem = Client.CoreDatabase.GetItem(commandID);

            Assert.IsNotNull(commandItem, "command item");

            // if fields is not empty, only specified field ids are displayed
            List <FieldDescriptor> fieldDescriptorList =
                datasourceItem.CreateFieldDescriptors(fields);

            PageEditFieldEditorOptions fieldEditorOptions =
                new PageEditFieldEditorOptions(
                    form,
                    fieldDescriptorList);

            fieldEditorOptions.Title = commandItem["Title"];
            fieldEditorOptions.Icon  = commandItem["Icon"];

            return(fieldEditorOptions);
        }
예제 #14
0
        /// <summary>
        /// Gets the configured Field Editor options. Options determine both the look of Field Editor and the actual fields available for editing.
        /// </summary>
        /// <param name="args">The pipeline arguments. Current item URI is accessible as 'uri' parameter</param>
        /// <param name="form">The form values.</param>
        /// <returns>The options.</returns>        
        protected override PageEditFieldEditorOptions GetOptions(ClientPipelineArgs args, NameValueCollection form)
        {
            List<FieldDescriptor> fieldDescriptors = new List<FieldDescriptor>();
            Item item = Database.GetItem(ItemUri.Parse(args.Parameters["uri"]));
            Assert.IsNotNull(item, "item");
            string fields = args.Parameters["fields"];
            Assert.IsNotNullOrEmpty(fields, "Field Editor command expects 'fields' parameter");
            string title = args.Parameters["title"];
            Assert.IsNotNullOrEmpty(title, "Field Editor command expects 'title' parameter");
            string icon = args.Parameters["icon"];
            Assert.IsNotNullOrEmpty(icon, "Field Editor command expects 'icon' parameter");

            foreach (string field in new ListString(fields))
            {
                if (item.Fields[field] != null)
                {
                    fieldDescriptors.Add(new FieldDescriptor(item, field));
                }
            }
            PageEditFieldEditorOptions options = new PageEditFieldEditorOptions(form, fieldDescriptors);
            options.Title = title;
            options.Icon = icon;
            return options;
        }
예제 #15
0
 public void SetPageEditorValues(string handle)
 {
     PageEditFieldEditorOptions.Parse(handle).SetPageEditorFieldValues();
 }
예제 #16
0
 protected virtual PageEditFieldEditorOptions GetOptions(ClientPipelineArgs args, NameValueCollection form)
 {
     EnsureContext(args);
     var options = new PageEditFieldEditorOptions(form, BuildListWithFieldsToShow(args.Parameters["fields"]))
     {
         Title = args.Parameters["section"],
         Icon = args.Parameters["icon"]
     };
     options.Parameters["contentitem"] = CurrentItem.Uri.ToString();
     options.PreserveSections = args.Parameters[PreserveSectionsParameter] == "1";
     options.DialogTitle = args.Parameters["title"];
     options.SaveItem = true;
     return options;
 }
예제 #17
0
 public void SetPageEditorValues(string handle)
 {
     PageEditFieldEditorOptions.Parse(handle).SetPageEditorFieldValues(new NameValueCollection());
 }
예제 #18
0
        /// <summary>
        /// Saves the page editor field values.
        /// </summary>
        /// <param name="options">The options.</param>
        protected virtual void SaveFieldValues(PageEditFieldEditorOptions options)
        {
            Item item = Database.GetItem(options.Fields.First().ItemUri);
              if (item == null)
              {
            AjaxScriptManager.Current.ShowError(Translate.Text(Texts.TheOrderCannotBeSaved), Translate.Text(Texts.ThisOrderDoesNotExist));
            return;
              }

              using (new EditContext(item, SecurityCheck.Enable))
              {
            foreach (FieldDescriptor descr in options.Fields)
            {
              item[descr.FieldID] = descr.Value;
            }
              }
        }