예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        /// <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);
        }