コード例 #1
0
ファイル: LockItemCommand.cs プロジェクト: sobek85/Console
        protected override void EditItem(Item item)
        {
            if (!ShouldProcess(item.GetProviderPath(), "Lock Item")) return;

            var itemLock = item.Locking;
            if (itemLock.GetOwner().Is(Identity.Name))
            {
                return;
            }
            if (itemLock.IsLocked())
            {
                if (Force)
                {
                    itemLock.Unlock();
                }
                else
                {
                    WriteError(typeof(SecurityException), $"Cannot modify item '{item.Name}' because it is locked by '{item.Locking.GetOwner()}' - Use the -Force parameter to transfet lock to the new user.",
                        ErrorIds.InsufficientSecurityRights, ErrorCategory.InvalidData,item);
                    return;
                }
            }

            item.Locking.Lock();
        }
コード例 #2
0
        protected override void ProcessItem(Item item)
        {
            if (ShouldProcess(item.GetProviderPath(), string.Format("Set layout '{0}'", Layout.GetProviderPath())))
            {
                LayoutField layoutField = item.Fields[LayoutFieldId];
                if (layoutField == null)
                {
                    return;
                }

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

                var device = layout.GetDevice(Device.ID.ToString());

                if (string.Equals(device.Layout, Layout.ID.ToString(), StringComparison.OrdinalIgnoreCase))
                {
                    //same layout as already set - no point in setting it again
                    return;
                }

                device.Layout = Layout.ID.ToString();

                item.Edit(p =>
                {
                    var outputXml = layout.ToXml();
                    layoutField.Value = outputXml;
                });
            }
        }
コード例 #3
0
 protected override void ProcessItem(Item item)
 {
     if (!item.IsItemClone)
     {
         WriteError(typeof(ArgumentException), "The specified item is not a clone.", ErrorIds.InvalidItemType, ErrorCategory.InvalidArgument, null);
         return;
     }
     if (ShouldProcess(item.GetProviderPath(), "Convert item clone to full item"))
     {
         var clone = new CloneItem(item);
         WriteItem(clone.Unclone());
     }
 }
コード例 #4
0
        protected override void ProcessItem(Item item)
        {
            if (ShouldProcess(item.GetProviderPath(), "Reset layout"))
            {
                Field layoutField = item.Fields[LayoutFieldId];

                if (layoutField == null)
                {
                    return;
                }

                item.Edit(p =>
                {
                    layoutField.Reset();
                });
            }
        }
コード例 #5
0
        protected override void ProcessItem(Item item)
        {
            if (ShouldProcess(item.GetProviderPath(), "Expand tokens"))
            {
                Item.Editing.BeginEdit();
                try
                {
                    tokenReplacer.ReplaceItem(Item);
                    Item.Editing.EndEdit();
                }
                catch (Exception ex)
                {
                    Item.Editing.CancelEdit();
                    WriteError(new ErrorRecord(ex, "sitecore_token_expander_error", ErrorCategory.NotSpecified, Item));
                }

                WriteItem(Item);
            }
        }
コード例 #6
0
ファイル: PublishItemCommand.cs プロジェクト: ostat/Console
        private void PublishToTarget(Item item, Database source, Database target)
        {
            if (PublishMode == PublishMode.Unknown)
            {
                PublishMode = PublishMode.Smart;
            }

            var language = item.Language;

            if (ShouldProcess(item.GetProviderPath(),
                string.Format("{3}ublishing language '{0}', version '{1}' to target '{2}'.", language, item.Version,
                    target.Name, Recurse.IsPresent ? "Recursively p" : "P")))
            {
                WriteVerbose(
                    String.Format(
                        "Publishing item '{0}' in language '{1}', version '{2}' to target '{3}'.  (Recurse={4}).",
                        item.Name, language, item.Version, target.Name, Recurse.IsPresent));

                var options = new PublishOptions(source, target, PublishMode, language, DateTime.Now)
                {
                    Deep = Recurse.IsPresent,
                    RootItem = item
                };

                var optionsArgs = new PublishOptions[1];
                optionsArgs[0] = options;

                var handle = PublishManager.Publish(optionsArgs);

                if (handle != null)
                {
                    var publishStatus = PublishManager.GetStatus(handle) ?? new PublishStatus();

                    WriteVerbose(String.Format("Publish Job submitted, current state={0}.",
                        publishStatus.State));
                }
            }
        }
コード例 #7
0
 protected override void ProcessItem(Item item)
 {
     if (ShouldProcess(item.GetProviderPath(),
         string.Format("Add language '{0}' version(s){1}",
             TargetLanguage.Aggregate((seed, curr) => seed + ", " + curr), (Recurse ? " recursively" : ""))))
     {
         foreach (var targetLanguage in TargetLanguage)
         {
             var lang = LanguageManager.GetLanguage(targetLanguage);
             if (lang == null)
             {
                 var error = String.Format("Cannot find target language '{0}' or it is not enabled.",
                     targetLanguage);
                 WriteError(new ErrorRecord(new ObjectNotFoundException(error), error,
                     ErrorCategory.ObjectNotFound,
                     item));
             }
             else
             {
                 var latestVersion = item.Versions.GetLatestVersion(lang);
                 if (IfExist != ActionIfExists.Skip || (latestVersion.Versions.Count == 0))
                 {
                     CopyFields(item, latestVersion, false);
                 }
                 if (Recurse)
                 {
                     foreach (Item childItem in item.Children)
                     {
                         ProcessItem(childItem);
                     }
                 }
             }
         }
     }
 }
コード例 #8
0
        protected override void ProcessItem(Item item)
        {
            if (!ShouldProcess(item.GetProviderPath(),
                $"Add language '{TargetLanguage.Aggregate((seed, curr) => seed + ", " + curr)}' version(s){(Recurse ? " recursively" : "")}"))
                return;

            foreach (var targetLanguage in TargetLanguage)
            {
                var lang = LanguageManager.GetLanguage(targetLanguage);
                if (lang == null)
                {
                    WriteError(typeof(ObjectNotFoundException), $"Cannot find target language '{targetLanguage}' or it is not enabled.",
                        ErrorIds.LanguageNotFound, ErrorCategory.ObjectNotFound, item);
                }
                else
                {
                    var latestVersion = item.Versions.GetLatestVersion(lang);
                    if (IfExist != ActionIfExists.Skip || (latestVersion.Versions.Count == 0))
                    {
                        CopyFields(item, latestVersion, false);
                    }
                    if (Recurse)
                    {
                        foreach (Item childItem in item.Children)
                        {
                            ProcessItem(childItem);
                        }
                    }
                }
            }
        }
コード例 #9
0
ファイル: ScriptSession.cs プロジェクト: sobek85/Console
 public void SetExecutedScript(Item scriptItem)
 {
     if (scriptItem != null)
     {
         SetVariable("PSScriptRoot", scriptItem.Parent.GetProviderPath());
         SetVariable("PSCommandPath", scriptItem.GetProviderPath());
         SetVariable("PSScript", scriptItem);
     }
 }