/// <summary> /// Wait for the variation label creation /// </summary> /// <param name="context">Context for SharePoint objects and operations</param> /// <param name="variationLabel">Variation label</param> public static void WaitForVariationLabelCreation(this ClientContext context, VariationLabelEntity variationLabel) { if (variationLabel == null) { throw new ArgumentException("variationLabel"); } while (!CheckForHierarchyCreation(context, variationLabel)) { // Wait for 60 seconds and then try again System.Threading.Thread.Sleep(60000); } }
/// <summary> /// Retrieve all configured variation labels /// </summary> /// <param name="context">Context for SharePoint objects and operations</param> /// <returns>Collection of VariationLabelEntity objects</returns> public static IEnumerable <VariationLabelEntity> GetVariationLabels(this ClientContext context) { var variationLabels = new List <VariationLabelEntity>(); // Get current web Web web = context.Web; context.Load(web, w => w.ServerRelativeUrl); context.ExecuteQueryRetry(); // Try to get _VarLabelsListId property from web property bag string variationLabelsListId = web.GetPropertyBagValueString(VARIATIONLABELSLISTID, string.Empty); if (!string.IsNullOrEmpty(variationLabelsListId)) { // Load the lists var lists = web.Lists; context.Load(lists); context.ExecuteQueryRetry(); // Get the "Variation Labels" List by id Guid varRelationshipsListId = new Guid(variationLabelsListId); var variationLabelsList = lists.GetById(varRelationshipsListId); // Get the variationLabelsList list items ListItemCollection collListItems = variationLabelsList.GetItems(CamlQuery.CreateAllItemsQuery()); context.Load(collListItems); context.ExecuteQueryRetry(); if (variationLabelsList != null) { foreach (var listItem in collListItems) { var label = new VariationLabelEntity(); label.Title = (string)listItem["Title"]; label.Description = (string)listItem["Description"]; label.FlagControlDisplayName = (string)listItem["Flag_x0020_Control_x0020_Display"]; label.Language = (string)listItem["Language"]; label.Locale = (uint)listItem["Locale"]; label.HierarchyCreationMode = (string)listItem["Hierarchy_x0020_Creation_x0020_M"]; label.IsSource = (bool)listItem["Is_x0020_Source"]; label.IsCreated = (bool)listItem["Hierarchy_x0020_Is_x0020_Created"]; variationLabels.Add(label); } } } return(variationLabels); }
/// <summary> /// Creates source variation label /// </summary> /// <param name="context">Context for SharePoint objects and operations</param> /// <param name="sourceVariationLabel">Source variation label</param> public static void ProvisionSourceVariationLabel(this ClientContext context, VariationLabelEntity sourceVariationLabel) { if (sourceVariationLabel == null) { throw new ArgumentException("sourceVariationLabel"); } // Compose the parameters List <VariationLabelEntity> sourceVariations = new List <VariationLabelEntity>(); sourceVariations.Add(sourceVariationLabel); // Create source variation label CreateVariationLabels(context, sourceVariations); WaitForVariationLabelCreation(context, sourceVariationLabel); }
private static IEnumerable <VariationLabelEntity> GetVariationLabels(ClientContext context) { const string VARIATIONLABELSLISTID = "_VarLabelsListId"; var variationLabels = new List <VariationLabelEntity>(); // Get current web Web web = context.Web; web.EnsureProperties(w => w.ServerRelativeUrl); // Try to get _VarLabelsListId property from web property bag string variationLabelsListId = GetPropertyBagValue <string>(web, VARIATIONLABELSLISTID, string.Empty); if (!string.IsNullOrEmpty(variationLabelsListId)) { var lists = context.Web.GetListsToScan(showHidden: true); Guid varRelationshipsListId = new Guid(variationLabelsListId); var variationLabelsList = lists.Where(p => p.Id.Equals(varRelationshipsListId)).FirstOrDefault(); if (variationLabelsList != null) { // Get the variationLabelsList list items ListItemCollection collListItems = variationLabelsList.GetItems(CamlQuery.CreateAllItemsQuery()); context.Load(collListItems); context.ExecuteQueryRetry(); foreach (var listItem in collListItems) { var label = new VariationLabelEntity(); label.Title = (string)listItem["Title"]; label.Description = (string)listItem["Description"]; label.FlagControlDisplayName = (string)listItem["Flag_x0020_Control_x0020_Display"]; label.Language = (string)listItem["Language"]; label.Locale = Convert.ToUInt32(listItem["Locale"]); label.HierarchyCreationMode = (string)listItem["Hierarchy_x0020_Creation_x0020_M"]; label.IsSource = (bool)listItem["Is_x0020_Source"]; variationLabels.Add(label); } } } return(variationLabels); }
/// <summary> /// Checks if hierarchy is created for the variation label. /// Get the "Hierarchy_x0020_Is_x0020_Created" list item value /// </summary> /// <param name="context">Context for SharePoint objects and operations</param> /// <param name="variationLabel">Variation label</param> /// <returns>True, if hierarchy is created for the variation label</returns> private static bool CheckForHierarchyCreation(this ClientContext context, VariationLabelEntity variationLabel) { bool hierarchyIsCreated = false; // Get current web Web web = context.Web; context.Load(web, w => w.ServerRelativeUrl); context.ExecuteQueryRetry(); // Try to get _VarLabelsListId property from web property bag string variationLabelsListId = web.GetPropertyBagValueString(VARIATIONLABELSLISTID, string.Empty); if (!string.IsNullOrEmpty(variationLabelsListId)) { // Load the lists var lists = web.Lists; context.Load(lists); context.ExecuteQueryRetry(); // Get the "Variation Labels" List by id Guid varRelationshipsListId = new Guid(variationLabelsListId); var variationLabelsList = lists.GetById(varRelationshipsListId); // Get the variationLabelsList list items ListItemCollection collListItems = variationLabelsList.GetItems(CamlQuery.CreateAllItemsQuery()); context.Load(collListItems); context.ExecuteQueryRetry(); if (variationLabelsList != null) { // Check hierarchy is created ListItem varLabel = collListItems.FirstOrDefault(x => x["Language"].ToString() == variationLabel.Language); variationLabel.IsCreated = hierarchyIsCreated = (bool)varLabel["Hierarchy_x0020_Is_x0020_Created"]; } } return(hierarchyIsCreated); }