protected override void OnFormBound() { base.OnFormBound(); if (DialogService.DialogParameters.Count > 0) { object mode; hdMode.Value = string.Empty; if (DialogService.DialogParameters.TryGetValue("MODE", out mode)) { _mode = mode.ToString(); hdMode.Value = _mode; } object pickListId; hdPickListId.Value = string.Empty; DialogService.DialogParameters.TryGetValue("PickListId", out pickListId); _pickListView = getPickListHeader((string)pickListId); hdPickListId.Value = _pickListView.Id.ToString(); _isPickListLocalized = !string.IsNullOrWhiteSpace(_pickListView.DefaultLanguage); string defaultLanguage = Request.Cookies["SLXLanguageSetting"].Value ?? _pickListView.DefaultLanguage ?? "en"; defaultLanguage = defaultLanguage.ToLowerInvariant(); cboLanguage.Items.Clear(); List <EnabledLanguage> cultures = PickListHelper.GetLanguageList <EnabledLanguage>(PickListHelper.LanguageListTypes.Cultures); cultures.ForEach(ci => cboLanguage.Items.Add(new ListItem(text: ci.DisplayText, value: ci.CultureCode.ToLowerInvariant()))); EnabledLanguage lostLanguage = string.IsNullOrWhiteSpace(defaultLanguage) ? null : RegionList.Cultures.Find(x => x.CultureCode.Equals(defaultLanguage, StringComparison.OrdinalIgnoreCase)); if (lostLanguage == null) { cboLanguage.Items.Add(new ListItem(defaultLanguage, defaultLanguage)); } if (!_isPickListLocalized) { cboLanguage.Items.Insert(0, new ListItem(string.Empty, null) ); } object pickListItemId; hdPickListItemId.Value = string.Empty; if (DialogService.DialogParameters.TryGetValue("PickListItemId", out pickListItemId)) { var idNames = new[] { "PickListItemId", "PickListId" }; var ids = new[] { pickListItemId, pickListId }; _pickListItemView = EntityFactory.GetByCompositeId(typeof(IPickListItemView), idNames, ids) as IPickListItemView; hdPickListItemId.Value = pickListItemId.ToString(); } } LoadView(); }
private void LoadView() { if (_pickListView == null) { _pickListView = (IPickListView)BindingSource.Current; } var id = string.IsNullOrWhiteSpace(NextPickListIdHeader.Value) ? _pickListView.Id.ToString() : NextPickListIdHeader.Value; var pl = PickList.GetPickListById(id); if (!cboDefaultLanguage.Items.Contains(new ListItem(string.Empty))) { cboDefaultLanguage.Items.Insert(0, new ListItem(string.Empty, null)); } cboDefaultLanguage.SelectedIndex = 0; _broswerLanguage = Request.Cookies["SLXLanguageSetting"].Value; var defaultLanguage = (pl.LanguageCode ?? string.Empty).ToLowerInvariant(); _isLocalized = !string.IsNullOrWhiteSpace(defaultLanguage); ViewState["isPickListLocalized"] = _isLocalized; AssignDefaultTestItem(); updatedefaultLanguage = !IsPostBack || cboDefaultLanguage.Items.Count <= 2 || cboBoundLanguage.Items.Count == 0; /* * If a picklist is localized or not will be determined by if it has a default language value * - a default language value means the picklist is localized... or should be. * - once the default langauge value is set, the control will be disabled. */ if (updatedefaultLanguage) { // reloading the list may clear a selected item when the page reloads. cboDefaultLanguage.Items.Clear(); cboBoundLanguage.Items.Clear(); var cultures = PickListHelper.GetLanguageList <EnabledLanguage>(PickListHelper.LanguageListTypes.Cultures); var neutrals = PickListHelper.GetLanguageList <EnabledLanguage>(PickListHelper.LanguageListTypes.Neutrals); EnabledLanguage validLanguageCode = string.IsNullOrWhiteSpace(defaultLanguage) ? null : RegionList.Cultures.Find(x => x.CultureCode.Equals(defaultLanguage, StringComparison.OrdinalIgnoreCase)); // since the list is being disabled when localized, only one item needs to be displayed, as long as it is valid. if (validLanguageCode != null) { cboDefaultLanguage.Items.Insert(0, new ListItem(validLanguageCode.DisplayText, (validLanguageCode.CultureCode ?? defaultLanguage).ToLowerInvariant())); } else { neutrals.ForEach(c => cboDefaultLanguage.Items.Add(new ListItem(c.DisplayText, (c.CultureCode ?? string.Empty).ToLowerInvariant()))); } cultures.ForEach(c => cboBoundLanguage.Items.Add(new ListItem(c.DisplayText, (c.CultureCode ?? string.Empty).ToLowerInvariant()))); cboBoundLanguage.Items.Insert(0, new ListItem(string.Empty, null)); cboDefaultLanguage.Items.Insert(0, new ListItem(string.Empty, null)); } if (string.IsNullOrWhiteSpace(cboDefaultLanguage.Text)) { if (string.IsNullOrWhiteSpace(defaultLanguage)) { cboDefaultLanguage.SelectedIndex = 0; } else { if (!cboDefaultLanguage.Items.Contains(new ListItem(defaultLanguage))) { cboDefaultLanguage.Items.Clear(); cboDefaultLanguage.Items.Add(new ListItem(defaultLanguage)); cboDefaultLanguage.Items.Insert(0, new ListItem(string.Empty, null)); } cboDefaultLanguage.SelectedValue = defaultLanguage.ToLowerInvariant(); } } else { cboDefaultLanguage.SelectedValue = (cboDefaultLanguage.Text ?? string.Empty).ToLowerInvariant(); } cboDefaultLanguage.Enabled = !_isLocalized; cboBoundLanguage.SelectedIndex = 0; PickListAttributes att = PickList.GetAttributes(pl.Shorttext); SetAttributes(att); pklTest.PickListName = pl.Text; pklTest.DefaultLanguage = defaultLanguage; pklTest.PickListValue = string.Empty; pklTest.AllowMultiples = att.AllowMultiples; pklTest.AlphaSort = att.AlphaSorted; pklTest.CanEditText = !att.NoneEditable; pklTest.MustExistInList = att.ValueMustExist || _isLocalized; pklTest.BoundLanguage = cboBoundLanguage.SelectedValue; pklTest.FilterByBoundLanguage = chkFilterByLanguage.Checked; txtLangauageFallBack.Visible = _isLocalized; lblLangauageFallBack.Visible = _isLocalized; if (_isLocalized) { DefineHierarchy(_broswerLanguage); } chkIsManaged.Checked = pl.Id.Value == 1; pklTest.Required = false; //We can test required during test. or we then could not save the picklist because of validation. }