コード例 #1
0
    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();
    }
コード例 #2
0
    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.
    }