public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            if (AppHost.MessageBox("Are you sure you want to remove ownership?", "Confirmation", MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK)
            {
                return;
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                var fieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Security/Security/__Owner");

                foreach (var item in context.Items)
                {
                    var itemHeader = item as ItemTreeViewItem;
                    if (itemHeader == null)
                    {
                        continue;
                    }

                    itemHeader.Item.Ownership = string.Empty;

                    var fieldUri = new FieldUri(new ItemVersionUri(item.ItemUri, LanguageManager.CurrentLanguage, Version.Latest), fieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, string.Empty);
                }
            };

            var   itemList = new StringBuilder();
            IItem first    = null;

            foreach (var item in context.Items)
            {
                if (first == null)
                {
                    first = item;
                }
                else
                {
                    itemList.Append("|");
                }

                itemList.Append(item.ItemUri.ItemId);
            }

            if (first != null)
            {
                first.ItemUri.Site.DataService.ExecuteAsync("Security.ClearOwnership", completed, first.ItemUri.DatabaseName.Name, itemList.ToString());
            }
        }
        private void FieldChanged([NotNull] object sender, [NotNull] FieldUri fieldUri, [CanBeNull] string newValue)
        {
            Diagnostics.Debug.ArgumentNotNull(sender, nameof(sender));
            Diagnostics.Debug.ArgumentNotNull(fieldUri, nameof(fieldUri));

            if (fieldUri.ItemVersionUri.ItemUri != ItemUri)
            {
                return;
            }

            if (Item.SerializationStatus == SerializationStatus.Serialized)
            {
                Item.SerializationStatus = SerializationStatus.Modified;
                RefreshStatusIcons();
            }

            if (fieldUri.FieldId == FieldIds.Icon && !string.IsNullOrEmpty(newValue))
            {
                var path = @"/sitecore/shell/~/icon/" + newValue;
                Icon = new Icon(fieldUri.Site, path);
            }

            if (fieldUri.FieldId == FieldIds.StandardValues)
            {
                var itemId = string.IsNullOrWhiteSpace(newValue) ? ItemId.Empty : new ItemId(new Guid(newValue));
                Item.StandardValuesId    = itemId;
                Item.StandardValuesField = itemId;
            }
        }
 private void FieldChanged([NotNull] object sender, FieldUri fieldUri, [NotNull] string newValue)
 {
     if (fieldUri.ItemVersionUri.ItemUri == TemplateUri && fieldUri.FieldId == FieldIds.StandardValues)
     {
         StandardValueItemId = string.IsNullOrEmpty(newValue) ? ItemId.Empty : new ItemId(new Guid(newValue));
     }
 }
        public override void Execute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                return;
            }

            foreach (var i in context.SelectedItems)
            {
                var item = i as ItemTreeViewItem;
                if (item == null)
                {
                    continue;
                }

                ExecuteCompleted completed = delegate(string response, ExecuteResult executeResult)
                {
                    if (!DataService.HandleExecute(response, executeResult))
                    {
                        return;
                    }

                    var fieldId  = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Appearance/Appearance/__Sortorder");
                    var fieldUri = new FieldUri(new ItemVersionUri(item.ItemUri, LanguageManager.CurrentLanguage, Version.Latest), fieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, string.Empty);

                    item.RefreshItem();
                };

                item.ItemUri.Site.DataService.ExecuteAsync("ResetSortOrder", completed, item.ItemUri.ItemId.ToString(), item.ItemUri.DatabaseName.Name);
            }
        }
Beispiel #5
0
        public void Save()
        {
            Refresh();

            var writer = new StringWriter();
            var output = new XmlTextWriter(writer);

            output.WriteStartElement(@"fields");

            foreach (var template in Model)
            {
                foreach (var field in template.Fields)
                {
                    if (!field.Modified)
                    {
                        continue;
                    }

                    output.WriteStartElement(@"field");
                    output.WriteAttributeString(@"id", field.TemplateFieldId.ToString());
                    output.WriteAttributeString(@"sortorder", field.SortOrder.ToString());
                    output.WriteAttributeString(@"sectionsortorder", field.SectionSortOrder.ToString());
                    output.WriteEndElement();

                    field.Modified = false;
                }
            }

            output.WriteEndElement();

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                Modified = false;

                var fieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Appearance/Appearance/__Sortorder");
                foreach (var template in Model)
                {
                    foreach (var field in template.Fields)
                    {
                        var itemVersionUri = new ItemVersionUri(new ItemUri(template.TemplateUri.DatabaseUri, field.TemplateFieldId), LanguageManager.CurrentLanguage, Data.Version.Latest);
                        var fieldUri       = new FieldUri(itemVersionUri, fieldId);

                        Notifications.RaiseFieldChanged(this, fieldUri, field.SortOrder.ToString());

                        itemVersionUri = new ItemVersionUri(new ItemUri(template.TemplateUri.DatabaseUri, new ItemId(new Guid(field.SectionId))), LanguageManager.CurrentLanguage, Data.Version.Latest);
                        fieldUri       = new FieldUri(itemVersionUri, fieldId);

                        Notifications.RaiseFieldChanged(this, fieldUri, field.SortOrder.ToString());
                    }
                }
            };

            TemplateUri.Site.DataService.ExecuteAsync("Templates.SaveTemplateFieldSorterFields", completed, TemplateUri.DatabaseName.ToString(), writer.ToString());
        }
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                DataService.HandleExecute(response, result);

                var fieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Workflow/Workflow/__Lock");

                foreach (var i in context.Items)
                {
                    var fieldUri = new FieldUri(new ItemVersionUri(i.ItemUri, LanguageManager.CurrentLanguage, Version.Latest), fieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, string.Empty);
                }

                var item = context.Items.FirstOrDefault() as BaseTreeViewItem;
                if (item == null)
                {
                    return;
                }

                var parent = item.GetParentTreeViewItem() as BaseTreeViewItem;
                if (parent == null)
                {
                    return;
                }

                parent.Refresh();
            };

            var   itemList = new StringBuilder();
            IItem first    = null;

            foreach (var item in context.Items)
            {
                if (first == null)
                {
                    first = item;
                }
                else
                {
                    itemList.Append("|");
                }

                itemList.Append(item.ItemUri.ItemId);
            }

            if (first != null)
            {
                first.ItemUri.Site.DataService.ExecuteAsync("Security.Unlock", completed, first.ItemUri.DatabaseName.Name, itemList.ToString());
            }
        }
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var item = context.Items.FirstOrDefault();

            if (item == null)
            {
                return;
            }

            var selectedItems = new List <ItemId>();

            if (context.Items.Count() == 1)
            {
                if (!GetSelectedInsertOptions(item, selectedItems))
                {
                    return;
                }
            }

            var d = new SelectTemplatesDialog();

            d.Initialize(Resources.SetInsertOptions_Execute_Insert_Options, item.ItemUri.DatabaseUri, selectedItems, true);
            if (AppHost.Shell.ShowDialog(d) != true)
            {
                return;
            }

            var value = string.Empty;

            foreach (var selectedItem in d.SelectedTemplates)
            {
                if (!string.IsNullOrEmpty(value))
                {
                    value += '|';
                }

                value += selectedItem.ToString();
            }

            var fieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Insert Options/Insert Options/__Masters");

            var fields = new List <Tuple <FieldUri, string> >();

            foreach (var i in context.Items)
            {
                var fieldUri = new FieldUri(new ItemVersionUri(i.ItemUri, LanguageManager.CurrentLanguage, Data.Version.Latest), fieldId);
                fields.Add(new Tuple <FieldUri, string>(fieldUri, value));
            }

            AppHost.Server.UpdateItems(fields);
        }
Beispiel #8
0
        private void FieldChanged([NotNull] object sender, [NotNull] FieldUri fieldUri, [NotNull] string newValue)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(fieldUri, nameof(fieldUri));
            Debug.ArgumentNotNull(newValue, nameof(newValue));

            if (sender.Equals(this))
            {
                return;
            }

            foreach (var field in ContentModel.Fields)
            {
                if (field.Control == null)
                {
                    continue;
                }

                bool updated;
                if (field.Shared)
                {
                    updated = field.FieldUris.Any(f => (f.ItemVersionUri.ItemUri == fieldUri.ItemVersionUri.ItemUri) && (f.FieldId == fieldUri.FieldId));
                }
                else if (field.Unversioned)
                {
                    updated = field.FieldUris.Any(f => (f.ItemVersionUri.ItemUri == fieldUri.ItemVersionUri.ItemUri) && (f.ItemVersionUri.Language == fieldUri.ItemVersionUri.Language) && (f.FieldId == fieldUri.FieldId));
                }
                else
                {
                    updated = field.FieldUris.Any(f => f == fieldUri);
                }

                if (!updated)
                {
                    continue;
                }

                field.Control.SetValue(newValue);
            }

            if (fieldUri.FieldId == FieldIds.Icon && ContentModel.Fields.SelectMany(f => f.FieldUris).Any(f => f.ItemVersionUri.ItemUri == fieldUri.ItemVersionUri.ItemUri))
            {
                var control = AppearanceOptions.Skin.GetControl();

                var image = control.FindChild <Image>(@"QuickInfoIcon");
                if (image == null)
                {
                    return;
                }

                var path = @"/sitecore/shell/~/icon/" + newValue.Replace(@"16x16", @"16x16");

                var icon = new Icon(fieldUri.Site, path);

                image.Source = icon.GetSource();
            }
        }
Beispiel #9
0
        public override void Execute(object parameter)
        {
            var context = parameter as ContentTreeContext;

            if (context == null)
            {
                return;
            }

            var item = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (item == null)
            {
                return;
            }

            var sortOrder = GetSortOrder(item);

            ExecuteCompleted completed = delegate(string response, ExecuteResult executeResult)
            {
                if (!DataService.HandleExecute(response, executeResult))
                {
                    return;
                }

                var fieldId  = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Appearance/Appearance/__Sortorder");
                var fieldUri = new FieldUri(new ItemVersionUri(item.ItemUri, LanguageManager.CurrentLanguage, Version.Latest), fieldId);
                Notifications.RaiseFieldChanged(this, fieldUri, sortOrder.ToString());

                var parent = item.GetParentTreeViewItem() as BaseTreeViewItem;
                if (parent == null)
                {
                    return;
                }

                KeyboardManager.IsActive++;
                try
                {
                    var itemTreeViewItem = parent as ItemTreeViewItem;
                    if (itemTreeViewItem != null)
                    {
                        itemTreeViewItem.RefreshPreservingSelection();
                    }
                    else
                    {
                        parent.Refresh();
                    }
                }
                finally
                {
                    KeyboardManager.IsActive--;
                }
            };

            item.ItemUri.Site.DataService.ExecuteAsync("SetSortOrder", completed, item.ItemUri.ItemId.ToString(), item.ItemUri.DatabaseName.Name, sortOrder);
        }
        private void LoadRows([NotNull] ResultDataTable dataTable, [NotNull] XElement element)
        {
            Debug.ArgumentNotNull(dataTable, nameof(dataTable));
            Debug.ArgumentNotNull(element, nameof(element));

            var itemsElement = element.Element(@"rows");

            if (itemsElement == null)
            {
                return;
            }

            if (!itemsElement.Elements().Any())
            {
                var dataRow = (ResultDataRow)dataTable.NewRow();
                dataTable.Rows.Add(dataRow);
                return;
            }

            foreach (var item in itemsElement.Elements())
            {
                var fieldArray  = new List <FieldUri>();
                var columnArray = new List <string>();

                var languageName = item.GetAttributeValue("language", LanguageManager.CurrentLanguage.Name) ?? "en";

                var itemUri        = new ItemUri(DatabaseUri, new ItemId(new Guid(item.GetAttributeValue("id"))));
                var itemVersionUri = new ItemVersionUri(itemUri, new Language(languageName), Data.Version.Latest);

                foreach (var field in item.Elements())
                {
                    FieldUri fieldUri = null;

                    var id = field.GetAttributeValue("id");
                    if (!string.IsNullOrEmpty(id))
                    {
                        fieldUri = new FieldUri(itemVersionUri, new FieldId(new Guid(id)));
                    }

                    fieldArray.Add(fieldUri);
                    columnArray.Add(field.Value);
                }

                var dataRow = (ResultDataRow)dataTable.NewRow();

                dataRow.Name       = item.GetAttributeValue("name");
                dataRow.Icon       = new Icon(DatabaseUri.Site, item.GetAttributeValue("icon"));
                dataRow.ItemUri    = itemUri;
                dataRow.FieldArray = fieldArray.ToArray();
                dataRow.ItemArray  = columnArray.ToArray();

                dataTable.Rows.Add(dataRow);
            }
        }
        public static void RaiseFieldChanged([NotNull] object sender, [NotNull] FieldUri fieldUri, [NotNull] string newValue)
        {
            Assert.ArgumentNotNull(sender, nameof(sender));
            Assert.ArgumentNotNull(fieldUri, nameof(fieldUri));
            Assert.ArgumentNotNull(newValue, nameof(newValue));

            var fieldChanged = FieldChanged;

            if (fieldChanged != null)
            {
                fieldChanged(sender, fieldUri, newValue);
            }
        }
Beispiel #12
0
        private void FieldChanged([NotNull] object sender, [NotNull] FieldUri fieldUri, [CanBeNull] string newValue)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(fieldUri, nameof(fieldUri));

            if (fieldUri.ItemVersionUri.ItemUri != ItemUri)
            {
                return;
            }

            if (fieldUri.FieldId == FieldIds.Icon && !string.IsNullOrEmpty(newValue))
            {
                var path = @"/sitecore/shell/~/icon/" + newValue;
                Icon = new Icon(fieldUri.Site, path);
            }
        }
Beispiel #13
0
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var firstItem = context.Items.FirstOrDefault();

            if (firstItem == null)
            {
                return;
            }

            var dialog = new CreateThumbnailDialog();

            dialog.Initialize(firstItem.ItemUri.DatabaseUri, firstItem.Name);
            if (AppHost.Shell.ShowDialog(dialog) != true)
            {
                return;
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                foreach (var item in context.Items)
                {
                    var itemUri        = item.ItemUri;
                    var itemVersionUri = new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Data.Version.Latest);
                    var fieldUri       = new FieldUri(itemVersionUri, new FieldId(new Guid(ThumbnailFieldId)));

                    Notifications.RaiseFieldChanged(this, fieldUri, response);
                }
            };

            firstItem.ItemUri.Site.DataService.ExecuteAsync("Items.SetThumbnail", completed, firstItem.ItemUri.DatabaseName.ToString(), firstItem.ItemUri.ItemId.ToString(), ThumbnailFieldId, dialog.FileName, "1", dialog.X, dialog.Y, true);
        }
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var item = context.Items.First();

            var d = new SetDisplayNamesDialog(item.ItemUri);

            if (AppHost.Shell.ShowDialog(d) != true)
            {
                return;
            }

            var values = new StringBuilder();

            foreach (var displayName in d.DisplayNames)
            {
                if (values.Length > 0)
                {
                    values.Append('^');
                }

                values.Append(displayName.Item1);
                values.Append('|');
                values.Append(displayName.Item2);
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                var root = response.ToXElement();
                if (root == null)
                {
                    return;
                }

                foreach (var element in root.Elements())
                {
                    var language = element.GetAttributeValue("l");
                    var version  = element.GetAttributeValue("v");
                    var fieldId  = element.GetAttributeValue("f");
                    var value    = element.Value;

                    var itemVersionUri = new ItemVersionUri(item.ItemUri, new Language(language), new Data.Version(int.Parse(version)));
                    var fieldUri       = new FieldUri(itemVersionUri, new FieldId(new Guid(fieldId)));

                    Notifications.RaiseFieldChanged(this, fieldUri, value);
                }
            };

            item.ItemUri.Site.DataService.ExecuteAsync("Items.SetDisplayNames", completed, item.ItemUri.ItemId.ToString(), item.ItemUri.DatabaseName.ToString(), values.ToString());
        }
        public override void Execute(object parameter)
        {
            var context = parameter as IItemSelectionContext;

            if (context == null)
            {
                return;
            }

            var item = context.Items.FirstOrDefault();

            if (item == null)
            {
                return;
            }

            var itemId = IdManager.GetItemId("/sitecore/system/Workflows");
            SelectItemDialog dialog;

            while (true)
            {
                dialog = new SelectItemDialog();

                dialog.Initialize(Resources.SetWorkflowState_Execute_Select_Workflow_State, new ItemUri(item.ItemUri.DatabaseUri, itemId));

                if (AppHost.Shell.ShowDialog(dialog) != true)
                {
                    return;
                }

                itemId = dialog.SelectedItemUri.ItemId;

                if (dialog.SelectedItemTemplateId == workflowStateId)
                {
                    break;
                }

                if (AppHost.MessageBox(Resources.SetWorkflowState_Execute_, Resources.Error, MessageBoxButton.OKCancel, MessageBoxImage.Question) != MessageBoxResult.OK)
                {
                    return;
                }
            }

            var stateId = dialog.SelectedItemUri.ItemId;

            var itemIdList   = context.GetItemIdList();
            var databaseName = context.Items.First().ItemUri.DatabaseName.ToString();

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                var workflowFieldId = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Workflow/Workflow/__Workflow");
                var stateFieldId    = IdManager.GetFieldId("/sitecore/templates/System/Templates/Sections/Workflow/Workflow/__Workflow state");

                foreach (var i in context.Items)
                {
                    var itemVersionUri = new ItemVersionUri(i.ItemUri, LanguageManager.CurrentLanguage, Data.Version.Latest);

                    var fieldUri = new FieldUri(itemVersionUri, stateFieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, stateId.ToString());

                    fieldUri = new FieldUri(itemVersionUri, workflowFieldId);
                    Notifications.RaiseFieldChanged(this, fieldUri, response);
                }
            };

            item.ItemUri.Site.DataService.ExecuteAsync("Workflows.SetWorkflowState", completed, databaseName, itemIdList, stateId.ToString());
        }
Beispiel #16
0
        public static Item Call([NotNull] ItemVersionUri uri, [NotNull] XmlElement root)
        {
            Assert.ArgumentNotNull(uri, nameof(uri));
            Assert.ArgumentNotNull(root, nameof(root));

            var versionNumber = 0;
            var node          = root.SelectSingleNode(@"/field");

            if (node != null)
            {
                if (!int.TryParse(node.GetAttributeValue("version"), out versionNumber))
                {
                    versionNumber = 0;
                }
            }

            var result = new Item
            {
                Fields = new List <Field>(),
                Uri    = new ItemVersionUri(uri.ItemUri, uri.Language, new Version(versionNumber)),
                Source = root.GetAttributeValue("source")
            };

            var fields = root.SelectNodes(@"/field");

            if (fields == null)
            {
                return(result);
            }

            var sections = new List <Section>();

            foreach (XmlNode child in fields)
            {
                int sortOrder;
                if (!int.TryParse(child.GetAttributeValue("sortorder"), out sortOrder))
                {
                    sortOrder = 0;
                }

                int sectionSortOrder;
                if (!int.TryParse(child.GetAttributeValue("sectionsortorder"), out sectionSortOrder))
                {
                    sectionSortOrder = 0;
                }

                var sectionExpandedByDefault = true;
                var isSectionExpanded        = child.GetAttributeValue("sectionexpandedbydefault");
                if (!string.IsNullOrEmpty(isSectionExpanded))
                {
                    sectionExpandedByDefault = isSectionExpanded == "1";
                }

                Guid sectionItemId;
                if (!Guid.TryParse(child.GetAttributeValue("sectionid"), out sectionItemId))
                {
                    sectionItemId = Guid.Empty;
                }

                var sectionIcon = new Icon(uri.Site, child.GetAttributeValue("sectionicon"));

                var templateFieldId       = ItemId.Empty;
                var templateFieldIdString = child.GetAttributeValue("templatefieldid");
                if (!string.IsNullOrEmpty(templateFieldIdString))
                {
                    templateFieldId = new ItemId(new Guid(templateFieldIdString));
                }

                var section = GetSection(sections, child.GetAttributeValue("section"), sectionIcon, sectionSortOrder, new ItemUri(uri.ItemUri.DatabaseUri, new ItemId(sectionItemId)), sectionExpandedByDefault);

                var value        = string.Empty;
                var valueElement = child.SelectSingleNode(@"value");
                if (valueElement != null)
                {
                    value = valueElement.InnerText;
                }

                var displayData        = string.Empty;
                var displayDataElement = child.SelectSingleNode(@"displaydata");
                if (displayDataElement != null)
                {
                    displayData = displayDataElement.OuterXml;
                }

                var lookup        = string.Empty;
                var lookupElement = child.SelectSingleNode(@"lookup");
                if (lookupElement != null)
                {
                    lookup = lookupElement.OuterXml;
                }

                var field = new Field
                {
                    Name                = child.GetAttributeValue("name"),
                    Title               = child.GetAttributeValue("title"),
                    ToolTip             = child.GetAttributeValue("tooltip"),
                    Type                = child.GetAttributeValue("type"),
                    Source              = child.GetAttributeValue("source"),
                    Section             = section,
                    SortOrder           = sortOrder,
                    Shared              = child.GetAttributeValue("shared") == @"1",
                    IsDeclaringTemplate = child.GetAttributeValue("isdeclaringtemplate") == @"1",
                    Unversioned         = child.GetAttributeValue("unversioned") == @"1",
                    StandardValue       = child.GetAttributeValue("standardvalue") == @"1",
                    IsBlob              = child.GetAttributeValue("isblob") == @"1",
                    TemplateFieldId     = templateFieldId,
                    Value               = value,
                    DisplayData         = displayData,
                    Lookup              = lookup,
                    HasValue            = true
                };

                var itemUri        = new ItemUri(uri.ItemUri.DatabaseUri, new ItemId(new Guid(child.GetAttributeValue("itemid"))));
                var itemVersionUri = new ItemVersionUri(itemUri, new Language(child.GetAttributeValue("language")), new Version(int.Parse(child.GetAttributeValue("version"))));
                var fieldUri       = new FieldUri(itemVersionUri, new FieldId(new Guid(child.GetAttributeValue("fieldid"))));

                field.FieldUris.Add(fieldUri);

                GetValueItems(child, field);
                GetRootItem(child, field);

                field.OriginalValue = field.Value;

                result.Fields.Add(field);
            }

            result.Fields.Sort(new FieldComparer());

            var pathItem = root.SelectSingleNode(@"/path/item");

            result.Name = pathItem != null?pathItem.GetAttributeValue("name") : Resources.GetItem_Call__Unknown_;

            GetItemVersions(root, result);
            GetItemLanguages(root, result);
            GetItemPath(root, result, uri.ItemUri.Site, uri.ItemUri.DatabaseName.Name);
            GetItemTemplate(root, result);
            GetStandardValues(root, result);
            GetBaseTemplates(root, result);
            GetItemIcon(uri.Site, root, result);
            GetItemWarnings(root, uri.ItemUri.Site, result);
            GetBreadcrumb(root, result);

            foreach (XmlAttribute attribute in root.Attributes)
            {
                if (attribute.LocalName.StartsWith("ex."))
                {
                    result.SetData(attribute.LocalName, attribute.Value);
                }
            }

            return(result);
        }