public string Execute([NotNull] string databaseName, [NotNull] string itemId, [NotNull] string languageName, [NotNull] string version, [NotNull] string fieldName, [NotNull] string xml) { var database = Factory.GetDatabase(databaseName); if (database == null) { throw new Exception("Database not found"); } var item = database.GetItem(itemId, Language.Parse(languageName), Data.Version.Parse(version)); if (item == null) { throw new Exception("Item not found"); } var field = item.Fields[fieldName]; item.Editing.BeginEdit(); SetFieldValuePipeline.Run().WithParameters(field, xml); item.Editing.EndEdit(); item = database.GetItem(itemId); var pipeline = GetFieldValuePipeline.Run().WithParameters(item, fieldName); return(pipeline.Value); }
public string Execute([NotNull] string databaseName, [NotNull] string id, [NotNull] string language, [NotNull] string version, [NotNull] string fieldName, [NotNull] string value) { Assert.ArgumentNotNull(databaseName, nameof(databaseName)); Assert.ArgumentNotNull(id, nameof(id)); Assert.ArgumentNotNull(language, nameof(language)); Assert.ArgumentNotNull(version, nameof(version)); Assert.ArgumentNotNull(fieldName, nameof(fieldName)); Assert.ArgumentNotNull(value, nameof(value)); var database = Factory.GetDatabase(databaseName); if (database == null) { throw new Exception("Database not found"); } var l = LanguageManager.GetLanguage(language); var v = Data.Version.Parse(version); var item = database.GetItem(id, l, v); if (database == null) { throw new Exception("Item not found"); } item.Editing.BeginEdit(); SetFieldValuePipeline.Run().WithParameters(item, fieldName, value); item.Editing.EndEdit(); item.Fields.ReadAll(); var field = item.Fields[fieldName]; return(field == null ? string.Empty : field.ID + "," + item.Version); }
private bool UpdateItem(Query query, [NotNull] Item item) { Debug.ArgumentNotNull(item, nameof(item)); var find = GetStringValue(query, Find, item); var with = GetStringValue(query, With, item); var result = false; item.Editing.BeginEdit(); if (Field != null) { var value = GetFieldValuePipeline.Run().WithParameters(item, Field).Value; value = value.Replace(find, with); if (value != item[Field]) { SetFieldValuePipeline.Run().WithParameters(item, Field, value); result = true; } } else { foreach (Field field in item.Fields) { var value = GetFieldValuePipeline.Run().WithParameters(field).Value; value = value.Replace(find, with); if (value == field.Value) { continue; } SetFieldValuePipeline.Run().WithParameters(field, value); result = true; } } item.Editing.EndEdit(); return(result); }
private void InsertItem(Query query, [NotNull] TemplateItem templateItem, [NotNull] string itemName, [NotNull] Item parent) { Debug.ArgumentNotNull(templateItem, nameof(templateItem)); Debug.ArgumentNotNull(itemName, nameof(itemName)); Debug.ArgumentNotNull(parent, nameof(parent)); var isEditing = false; var item = parent.Add(itemName, templateItem); for (var index = 0; index < Values.Count; index++) { var columnName = Columns[index]; var valueExpression = Values[index]; var obj = query.EvaluateSubQuery(valueExpression, item); var value = obj != null?obj.ToString() : string.Empty; if (value == null) { continue; } if (!isEditing) { item.Editing.BeginEdit(); isEditing = true; } SetFieldValuePipeline.Run().WithParameters(item, columnName, value); } if (isEditing) { item.Editing.EndEdit(); } }
public string Execute([NotNull] string databaseName, [NotNull] string parentPath, [NotNull] string newName, [NotNull] string templateName, [NotNull] string fields) { Assert.ArgumentNotNull(databaseName, nameof(databaseName)); Assert.ArgumentNotNull(parentPath, nameof(parentPath)); Assert.ArgumentNotNull(newName, nameof(newName)); Assert.ArgumentNotNull(templateName, nameof(templateName)); Assert.ArgumentNotNull(fields, nameof(fields)); var database = Factory.GetDatabase(databaseName); if (database == null) { return(string.Empty); } TemplateItem templateItem = database.GetItem(templateName); if (templateItem == null) { return(string.Empty); } Item item; if (ID.IsID(parentPath)) { var parent = database.GetItem(parentPath); if (parent == null) { return(string.Empty); } item = parent.Add(newName, templateItem); } else { TemplateItem folderTemplateItem = database.GetItem(TemplateIDs.Folder); Assert.IsNotNull(folderTemplateItem, "folderTemplateItem"); item = database.CreateItemPath(parentPath + "/" + newName, folderTemplateItem, templateItem); } if (item == null) { return(string.Empty); } item.Editing.BeginEdit(); var parts = fields.Split('|'); for (var index = 0; index < parts.Length - 1; index += 2) { var fieldName = parts[index]; var value = parts[index + 1]; SetFieldValuePipeline.Run().WithParameters(item, fieldName, value); } item.Editing.EndEdit(); return(item.ID + "|" + item.ParentID); }
private void UpdateItem([NotNull] Query query, [NotNull] Item item) { Debug.ArgumentNotNull(item, nameof(item)); var isEditing = false; var newPath = string.Empty; foreach (var columnExpression in ColumnExpressions) { string value = null; var columnName = columnExpression.ColumnName; if (string.IsNullOrEmpty(columnName)) { continue; } if (columnExpression.FieldName != null) { value = item[columnExpression.FieldName]; } else if (columnExpression.Expression != null) { var obj = query.EvaluateSubQuery(columnExpression.Expression, item); value = obj != null?obj.ToString() : string.Empty; } if (value == null) { continue; } if (!isEditing) { item.Editing.BeginEdit(); isEditing = true; } switch (columnName.ToLowerInvariant()) { case "@name": item.Name = value; break; case "@templatename": ChangeTemplateByName(item, value); break; case "@templateid": ChangeTemplateById(item, value); break; case "@path": newPath = value; break; default: SetFieldValuePipeline.Run().WithParameters(item, columnName, value); break; } } if (isEditing) { item.Editing.EndEdit(); } if (!string.IsNullOrEmpty(newPath)) { MoveItem(item, newPath); } }
public string Execute([NotNull] string xml, [NotNull] string databaseName) { Assert.ArgumentNotNull(xml, nameof(xml)); Assert.ArgumentNotNull(databaseName, nameof(databaseName)); if (string.IsNullOrEmpty(xml)) { return(string.Empty); } var database = Factory.GetDatabase(databaseName); if (database == null) { throw new Exception("Database not found"); } var items = new Hashtable(); var doc = new XmlDocument(); doc.LoadXml(xml); var nodeList = doc.SelectNodes("/sitecore/field"); if (nodeList == null) { return(string.Empty); } foreach (XmlNode node in nodeList) { var id = XmlUtil.GetAttribute("itemid", node); var language = XmlUtil.GetAttribute("language", node); var version = XmlUtil.GetAttribute("version", node); var fieldid = XmlUtil.GetAttribute("fieldid", node); var value = XmlUtil.GetChildValue("value", node); var reset = XmlUtil.GetAttribute("reset", node) == "1"; var key = id + language + version; var item = items[key] as Item; if (item == null) { item = database.Items[id, Language.Parse(language), Data.Version.Parse(version)]; if (item == null) { continue; } items[key] = item; item.Editing.BeginEdit(); } var field = item.Fields[ID.Parse(fieldid)]; if (field == null) { continue; } if (reset) { field.Value = string.Empty; field.Reset(); continue; } SetFieldValuePipeline.Run().WithParameters(field, value); } foreach (Item item in items.Values) { item.Editing.EndEdit(); } return(string.Empty); }