Beispiel #1
0
        public override void Load(SPList list, string query, IEnumerable <CultureInfo> cultures)
        {
            base.Load(list, query, cultures);

            _items.Clear();

            if (cultures != null)
            {
                if (list != null)
                {
                    var contentIterator = new ListContentIterator
                    {
                        StrictQuerySemantics = false
                    };

                    contentIterator.ProcessListItems(list, query, 200,
                                                     true,
                                                     delegate(SPListItemCollection items)
                    {
                        foreach (SPListItem item in items)
                        {
                            var translationItems = new Dictionary <string, string[]>();

                            foreach (var cultureInfo in cultures)
                            {
                                string twoLetterIsoLanguageName = Languages.Instance.GetBackwardCompatibilityLanguageCode(cultureInfo.TwoLetterISOLanguageName.ToUpper());

                                if (item.Fields.ContainsField(twoLetterIsoLanguageName))
                                {
                                    string valueOriginal = item[twoLetterIsoLanguageName] != null ? item[twoLetterIsoLanguageName].ToString() : string.Empty;
                                    string value         = valueOriginal.Replace("***", ";");

                                    if (!string.IsNullOrEmpty(value))
                                    {
                                        string[] subValues = value.Split(';');

                                        for (int i = 0; i < subValues.Length; i++)
                                        {
                                            subValues[i] = subValues[i].Trim();
                                        }

                                        translationItems[twoLetterIsoLanguageName] = subValues;

                                        if (valueOriginal.Substring(0, 1).Contains("*"))
                                        {
                                            _startingWildcardIndex.IndexItem(item.ID, valueOriginal.Substring(0, 1));
                                        }
                                        else
                                        {
                                            Index.IndexItem(item.ID, valueOriginal.Substring(0, 1));
                                        }
                                    }
                                }
                            }

                            _items[item.ID] = translationItems;
                        }
                    }, null);
                }
            }
        }