示例#1
0
        public override void Load(SPList list, string query, IEnumerable <CultureInfo> cultures)
        {
            Index.Clear();
            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("$$SPS_URL:", string.Empty);

                                    int indexUrl = value.IndexOf("$$");

                                    if (indexUrl != -1)
                                    {
                                        value = value.Substring(indexUrl + 2);
                                    }

                                    if (!string.IsNullOrEmpty(value))
                                    {
                                        translationItems[twoLetterIsoLanguageName] = value;
                                        Index.IndexItem(item.ID, value);
                                    }
                                }
                            }

                            Items[item.ID] = translationItems;
                        }
                    }, null);
                }
            }
        }
示例#2
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)
                    {
                        SPSecurity.RunWithElevatedPrivileges(delegate
                        {
                            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 value = item[twoLetterIsoLanguageName] != null ? item[twoLetterIsoLanguageName].ToString() : string.Empty;

                                        if (!string.IsNullOrEmpty(value))
                                        {
                                            translationItems[twoLetterIsoLanguageName] = value;
                                            Index.IndexItem(item.ID, value);
                                        }
                                    }
                                }

                                Items[item.ID] = translationItems;
                            }
                        });
                    }, null);
                }
            }
        }
        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)
                        {
                            foreach (var cultureInfo in cultures)
                            {
                                string twoLetterIsoLanguageName = Languages.Instance.GetBackwardCompatibilityLanguageCode(cultureInfo.TwoLetterISOLanguageName.ToUpper());

                                if (item.Fields.ContainsField(twoLetterIsoLanguageName))
                                {
                                    const string TagUrl = "$$SPS_URL:";

                                    string valueOriginal = item[twoLetterIsoLanguageName] != null ? item[twoLetterIsoLanguageName].ToString() : string.Empty;
                                    string siteUrl       = valueOriginal.Replace(TagUrl, string.Empty);

                                    int indexUrl = siteUrl.IndexOf("$$");

                                    if (indexUrl != -1)
                                    {
                                        siteUrl = siteUrl.Substring(0, indexUrl).ToLower();
                                    }

                                    if (!string.IsNullOrEmpty(siteUrl))
                                    {
                                        if (!_items.ContainsKey(siteUrl))
                                        {
                                            string urlQuery = valueOriginal.Substring(0, siteUrl.Length + TagUrl.Length + 2);

                                            string defaultLanguage = query.Replace("<Where><Contains><FieldRef Name=\'", string.Empty);
                                            defaultLanguage        = defaultLanguage.Substring(0, defaultLanguage.IndexOf("\'/><Value Type=\'Text\'>"));

                                            string subQuery    = "<Where><Contains><FieldRef Name=\'" + defaultLanguage + "\'/><Value Type=\'Text\'>" + urlQuery + "</Value></Contains></Where>" + ListContentIterator.ItemEnumerationOrderById;
                                            var siteDictionary = MultipleWordTranslationDictionary.LoadDictionary(siteUrl, _url, _listName, subQuery);

                                            _items[siteUrl] = siteDictionary;
                                        }
                                    }
                                }
                            }
                        }
                    }, null);
                }
            }
        }
示例#4
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);
                }
            }
        }