コード例 #1
0
        protected override void ProcessItem(Item item)
        {
            var rendering = new RenderingDefinition
            {
                ItemID             = item.ID.ToString(),
                Placeholder        = PlaceHolder,
                Datasource         = DataSource?.ID.ToString(),
                Cachable           = Cacheable ? "1" : null,
                ClearOnIndexUpdate = ClearOnIndexUpdate ? "1" : null,
                VaryByData         = VaryByData ? "1" : null,
                VaryByDevice       = VaryByDevice ? "1" : null,
                VaryByLogin        = VaryByLogin ? "1" : null,
                VaryByParameters   = VaryByParameters ? "1" : null,
                VaryByQueryString  = VaryByQueryString ? "1" : null,
                VaryByUser         = VaryByUser ? "1" : null
            };

            if (Parameter != null)
            {
                var parameters = new UrlString();
                foreach (string name in Parameter.Keys)
                {
                    parameters.Add(name, Parameter[name].ToString());
                }
                rendering.Parameters = parameters.ToString();
            }

            //todo: add support for conditions
            //renderingDefinition.Conditions
            //todo: add support for multivariate tests
            //rendering.MultiVariateTest
            var psobj = ItemShellExtensions.WrapInItemOwner(SessionState, item, rendering);

            WriteObject(psobj);
        }
コード例 #2
0
 private void WriteItem(Item item)
 {
     // add the properties defined by the page type
     if (item != null)
     {
         var psobj = ItemShellExtensions.GetPsObject(SessionState, item);
         var path  = item.Database.Name + ":" + item.Paths.Path.Substring(9).Replace('/', '\\');
         WriteItemObject(psobj, path, item.HasChildren);
     }
 }
コード例 #3
0
        protected void WriteItem(Item item)
        {
            if (item == null)
            {
                return;
            }

            // add the properties defined by the page type
            var psobj = ItemShellExtensions.GetPsObject(SessionState, item);

            WriteObject(psobj);
        }
        public void GetProperty(string path, Collection <string> providerSpecificPickList)
        {
            try
            {
                LogInfo("Executing GetProperty(string path='{0}', Collection<string> providerSpecificPickList)", path);

                var item = GetDynamicItem(path);
                if (item != null)
                {
                    // create PSObject from the FileSystemInfo instance
                    var psobj = ItemShellExtensions.GetPsObject(SessionState, item);

                    // create the PSObject to copy properties into and that we will return
                    var result = new PSObject();

                    foreach (var name in providerSpecificPickList)
                    {
                        // Copy all the properties from the original object into ’result’
                        var    prop  = psobj.Properties[name];
                        object value = null;
                        if (prop != null)
                        {
                            value = prop.Value;
                        }
                        else
                        {
                            WriteWarning(String.Format("Property name ’{0}’ doesn’t exist for item at path ’{1}’", name,
                                                       path));
                        }
                        result.Properties.Add(new PSNoteProperty(name, value));
                    }

                    foreach (var name in providerSpecificPickList)
                    {
                        var field = item.Fields[name];
                        if (field != null)
                        {
                            result.Properties[name].Value = field.Value;
                        }
                    }

                    WritePropertyObject(result, path);
                }
            }
            catch (Exception ex)
            {
                LogError(ex,
                         "Error while executing GetProperty(string path='{0}', Collection<string> providerSpecificPickList)",
                         path);
                throw;
            }
        }
コード例 #5
0
        protected override void ProcessItem(Item item)
        {
            var phs = new PlaceholderDefinition
            {
                MetaDataItemId = item.Paths.FullPath,
                Key            = Key,
                UniqueId       = ID.NewID.ToString()
            };

            var psobj = ItemShellExtensions.WrapInItemOwner(SessionState, item, phs);

            WriteObject(psobj);
        }
 private void SetItemPropertyValue(string path, Item item, string propertyName, object propertyValue)
 {
     if (ShouldProcess(path, $"Setting property '{propertyName}' to '{propertyValue}'"))
     {
         if (item.Fields?[propertyName] != null)
         {
             ItemShellExtensions.ModifyProperty(item, propertyName, propertyValue);
         }
         else
         {
             WriteWarning($"Property name ’{propertyName}’ doesn’t exist for item at path ’{path}’");
         }
     }
 }
コード例 #7
0
        protected override void ProcessItem(Item item)
        {
            LayoutField layoutField = item.Fields[LayoutFieldId];

            if (string.IsNullOrEmpty(layoutField?.Value))
            {
                return;
            }

            var layout = LayoutDefinition.Parse(layoutField.Value);

            if (layout.Devices == null)
            {
                return;
            }

            foreach (DeviceDefinition device in layout.Devices)
            {
                if (Device == null || string.Equals(device.ID, Device.ID.ToString(), StringComparison.OrdinalIgnoreCase))
                {
                    var layoutItem = item.Database.GetItem(device.Layout);
                    var psobj      = ItemShellExtensions.GetPsObject(SessionState, layoutItem);
                    psobj.Properties.Add(new PSNoteProperty("DeviceID", device.ID));
                    var deviceItem = Device ?? item.Database.GetItem(device.ID);
                    psobj.Properties.Add(new PSNoteProperty("Device", deviceItem.Name));
                    WriteObject(psobj);
                    if (Device != null)
                    {
                        return;
                    }
                }
            }
            if (Device != null)
            {
                WriteError(
                    new ErrorRecord(
                        new ObjectNotFoundException(
                            string.Format("Item \"{0}\" has no layout defined for device \"{1}\"", item.Name,
                                          Device.Name)), "sitecore_layout_for_device_not_found", ErrorCategory.ObjectNotFound,
                        Device));
            }
        }
コード例 #8
0
        protected override void ProcessRecord()
        {
            LogErrors(() =>
            {
                if (!CheckSessionCanDoInteractiveAction())
                {
                    WriteObject("cancel");
                    return;
                }

                AssertDefaultSize(500, 300);
                var message = new ShowMultiValuePromptMessage(Parameters, WidthString, HeightString, Title, Description,
                                                              Icon, OkButtonName, CancelButtonName, ShowHints, Validator, ValidatorParameters, CurrentSessionKey);


                foreach (Hashtable result in Parameters)
                {
                    var name = result["Name"] as string;

                    PSVariable variable = null;
                    if (!string.IsNullOrEmpty(name))
                    {
                        variable = SessionState.PSVariable.Get((string)result["Name"]);
                    }

                    if (result["Variable"] != null)
                    {
                        variable = (PSVariable)((PSObject)result["Variable"]).BaseObject;
                        result.Add("Name", variable.Name);
                        name = variable.Name;
                    }

                    if (variable != null)
                    {
                        if (!result.ContainsKey("Value"))
                        {
                            var varValue = variable.Value.BaseObject();

                            if (varValue is IEnumerable <object> )
                            {
                                varValue = (varValue as IEnumerable <object>).Select(p => p.BaseObject()).ToList();
                            }

                            result.Add("Value", varValue);
                        }
                        var varTitle = result["Title"];
                        if (varTitle == null)
                        {
                            result.Add("Title", string.IsNullOrEmpty(variable.Name) ? name : variable.Name);
                        }
                        var varDesc = result["Description"];
                        if (varDesc == null)
                        {
                            result.Add("Description", variable.Description);
                        }
                    }

                    if (result["Value"] == null)
                    {
                        if (result.ContainsKey("Value"))
                        {
                            result["Value"] = string.Empty;
                        }
                        else
                        {
                            result.Add("Value", string.Empty);
                        }
                    }
                }

                PutMessage(message);
                var results = (object[])message.GetResult();
                WriteObject(results != null ? "ok" : "cancel");
                if (results != null)
                {
                    foreach (Hashtable result in results)
                    {
                        var resultValue = result["Value"];
                        if (resultValue is Item)
                        {
                            resultValue = ItemShellExtensions.GetPsObject(SessionState, resultValue as Item);
                        }
                        if (resultValue is List <Item> )
                        {
                            resultValue =
                                (resultValue as List <Item>).Where(p => p != null)
                                .Select(p => ItemShellExtensions.GetPsObject(SessionState, p))
                                .ToArray();
                        }
                        SessionState.PSVariable.Set((string)result["Name"], resultValue);
                    }
                }
            });
        }
コード例 #9
0
 protected override void ProcessRenderings(Item item, LayoutDefinition layout, DeviceDefinition device,
                                           List <RenderingDefinition> renderings)
 {
     renderings.ForEach(r => WriteObject(ItemShellExtensions.WrapInItemOwner(SessionState, item, r)));
 }
コード例 #10
0
 protected override void ProcessPlaceholderSettings(Item item, LayoutDefinition layout, DeviceDefinition device, List <PlaceholderDefinition> placeholders)
 {
     placeholders.ForEach(p => WriteObject(ItemShellExtensions.WrapInItemOwner(SessionState, item, p)));
 }