Example #1
0
        public void Load(mcweb_MetaViewPreferenceRow preferenceRow, List <string> availableFieldNames)
        {
            _columns.Clear();

            if (preferenceRow != null)
            {
                Dictionary <string, ColumnInfo> columnsByName = new Dictionary <string, ColumnInfo>();

                McMetaViewPreference preference = UserMetaViewPreference.GetPreferenceFromString(preferenceRow.XSMetaViewPreference);
                AttributeCollection  attributes = preference.Attributes;

                for (int i = 0; i < attributes.Count; i++)
                {
                    string key = attributes.Keys[i];

                    string[] parts = key.Split(':');
                    if (parts.Length == 2)
                    {
                        string fieldName = parts[0];
                        if (availableFieldNames.Contains(fieldName))
                        {
                            ColumnInfo column;
                            if (columnsByName.ContainsKey(fieldName))
                            {
                                column = columnsByName[fieldName];
                            }
                            else
                            {
                                column = new ColumnInfo(fieldName);
                                columnsByName.Add(fieldName, column);
                            }

                            string attributeName = parts[1];
                            object value         = attributes[key];

                            switch (attributeName)
                            {
                            case "Index":
                                column.Index = (int)value;
                                break;

                            case "Width":
                                column.Width = (int)value;
                                break;
                            }
                        }
                    }
                }
                _columns.AddRange(columnsByName.Values);
                // Sort columns by index.
                _columns.Sort();
            }
            else
            {
                foreach (string name in availableFieldNames)
                {
                    _columns.Add(new ColumnInfo(name));
                }
            }
        }
Example #2
0
        /// <summary>
        /// Gets the meta view preference.
        /// </summary>
        /// <returns></returns>
        public McMetaViewPreference GetMetaViewPreference()
        {
            McMetaViewPreference pref = UserMetaViewPreference.Load(CurrentView, (int)DataContext.Current.CurrentUserId);

            if (pref == null || pref.Attributes.Count == 0)
            {
                McMetaViewPreference.CreateDefaultUserPreference(CurrentView);
                pref = UserMetaViewPreference.Load(CurrentView, (int)DataContext.Current.CurrentUserId);
            }

            return(pref);
        }
        void btnSave_Click(object sender, EventArgs e)
        {
            if (this.SaveToBase)
            {
                ViewPreference.ShowAllMetaField();

                string hiddenColumns = in_leftcol_hide.Value;
                if (hiddenColumns.Length > 0)
                {
                    foreach (string fieldName in hiddenColumns.Split(','))
                    {
                        ViewPreference.HideMetaField(fieldName);
                    }
                }
            }
            else
            {
                ViewPreference.Attributes.Set("tmp_columnsToShow", in_rightcol_hide.Value);
                ViewPreference.Attributes.Set("tmp_columnsToHide", in_leftcol_hide.Value);


                CurrentView.AvailableFields.Clear();
                List <MetaField> allFields = CHelper.GetAllMetaFields(CurrentView);

                foreach (string s in in_rightcol_hide.Value.Split(','))
                {
                    foreach (MetaField field in allFields)
                    {
                        if (field.Name == s)
                        {
                            CurrentView.AvailableFields.Add(field);
                        }
                    }
                }
            }

            UserMetaViewPreference.Save((int)DataContext.Current.CurrentUserId, ViewPreference);
            CHelper.UpdateParentPanel(this);
        }
Example #4
0
        public void Invoke(object Sender, object Element)
        {
            if (Element is CommandParameters)
            {
                CommandParameters cp = (CommandParameters)Element;

                if (cp.CommandArguments["groupType"] == null || cp.CommandArguments["primaryKeyId"] == null)
                {
                    throw new ArgumentException("Some expected parameters are null for CollapseExpandBlockTimesheetHandler");
                }

                string ViewName = CHelper.GetFromContext("MetaViewName").ToString();

                if (ViewName != null && ViewName != string.Empty)
                {
                    MetaView CurrentView = Mediachase.Ibn.Data.DataContext.Current.MetaModel.MetaViews[ViewName];
                    if (CurrentView == null)
                    {
                        throw new ArgumentException(String.Format("Cant find MetaView: {0}", ViewName));
                    }

                    McMetaViewPreference mvPref = Mediachase.Ibn.Core.UserMetaViewPreference.Load(CurrentView, Mediachase.IBN.Business.Security.CurrentUser.UserID);
                    if (cp.CommandArguments["groupType"] == MetaViewGroupByType.Primary.ToString())
                    {
                        MetaViewGroupUtil.CollapseOrExpand(MetaViewGroupByType.Primary, mvPref, cp.CommandArguments["primaryKeyId"]);
                    }
                    else
                    {
                        MetaViewGroupUtil.CollapseOrExpand(MetaViewGroupByType.Secondary, mvPref, cp.CommandArguments["primaryKeyId"]);
                    }

                    CHelper.RequireBindGrid();
                    CHelper.AddToContext("DontShowEditPopup", 1);
                    UserMetaViewPreference.Save(Mediachase.IBN.Business.Security.CurrentUser.UserID, mvPref);
                }
            }
        }
Example #5
0
        /// <summary>
        /// Handles the ServerClick event of the SaveButton control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        protected void SaveButton_ServerClick(object sender, EventArgs e)
        {
            if (FormatList.Items.Count < 0)
            {
                throw new Exception("Format is not specified");
            }

            Page.Validate();
            if (!Page.IsValid)
            {
                return;
            }

            Mediachase.Ibn.Data.Meta.Management.AttributeCollection attr = new Mediachase.Ibn.Data.Meta.Management.AttributeCollection();
            string sDefaultValue = String.Empty;

            IManageControl control = MainPlaceHolder.Controls[0] as IManageControl;

            if (control != null)
            {
                sDefaultValue = control.GetDefaultValue(AllowNullsCheckBox.Checked);
                attr          = control.FieldAttributes;
            }

            if (!AllowNullsCheckBox.Checked && sDefaultValue == String.Empty)
            {
                ErrorMessage.Text = GetGlobalResourceObject("GlobalMetaInfo", "ErrorMessage_AllowNulls").ToString();
                return;
            }

            if (sDefaultValue == null)
            {
                sDefaultValue = String.Empty;
            }

            string sFriendlyName = FriendlyNameTextBox.Text.Trim();

            if (mf == null)
            {
                string sName;
                if (!AutogenerateSystemNames)
                {
                    sName = NameTextBox.Text.Trim();
                }
                else
                {
                    // Generate the field name as the number of seconds elapsed since 2000-01-01
                    sName = String.Format(CultureInfo.InvariantCulture, "Field{0}", CHelper.GetDateDiffInSeconds(DateTime.UtcNow, new DateTime(2000, 1, 1)));
                }

                try
                {
                    string typeName = FormatList.SelectedValue;
                    //NewEnum
                    if (attr.ContainsKey("NewEnum"))
                    {
                        string    name         = attr["EnumName"].ToString();
                        string    friendlyname = attr["EnumFriendlyName"].ToString();
                        bool      isPrivate    = (bool)attr["EnumPrivate"];
                        DataTable dt           = (DataTable)attr["EnumDataSource"];

                        attr.Remove("NewEnum");
                        attr.Remove("EnumName");
                        attr.Remove("EnumFriendlyName");
                        attr.Remove("EnumPrivate");
                        attr.Remove("EnumDataSource");

                        MetaFieldType type = MetaEnum.Create(name, friendlyname, false);
                        if (isPrivate)
                        {
                            type.Attributes.Add(McDataTypeAttribute.EnumPrivate, mc.Name);
                        }

                        SortedList sl = new SortedList();
                        foreach (DataRow dr in dt.Rows)
                        {
                            sl.Add((int)dr["OrderId"], dr["Name"].ToString().Trim());
                        }

                        foreach (int i in sl.Keys)
                        {
                            MetaEnum.AddItem(type, sl[i].ToString(), i);
                        }

                        typeName = type.Name;
                    }
                    //NewMultiEnum
                    if (attr.ContainsKey("NewMultiEnum"))
                    {
                        string    name         = attr["EnumName"].ToString();
                        string    friendlyname = attr["EnumFriendlyName"].ToString();
                        bool      isPrivate    = (bool)attr["EnumPrivate"];
                        DataTable dt           = (DataTable)attr["EnumDataSource"];

                        attr.Remove("NewMultiEnum");
                        attr.Remove("EnumName");
                        attr.Remove("EnumFriendlyName");
                        attr.Remove("EnumPrivate");
                        attr.Remove("EnumDataSource");

                        MetaFieldType type = MetaEnum.Create(name, friendlyname, true);
                        if (isPrivate)
                        {
                            type.Attributes.Add(McDataTypeAttribute.EnumPrivate, mc.Name);
                        }

                        SortedList sl = new SortedList();
                        foreach (DataRow dr in dt.Rows)
                        {
                            sl.Add((int)dr["OrderId"], dr["Name"].ToString().Trim());
                        }

                        foreach (int i in sl.Keys)
                        {
                            MetaEnum.AddItem(type, sl[i].ToString(), i);
                        }

                        typeName = type.Name;
                    }

                    MetaFieldType mft = DataContext.Current.MetaModel.RegisteredTypes[FormatList.SelectedValue];
                    if (mft != null && mft.McDataType == McDataType.Enum &&
                        attr.ContainsKey("EnumFriendlyName"))
                    {
                        mft.FriendlyName = attr["EnumFriendlyName"].ToString();
                        attr.Remove("EnumFriendlyName");
                    }

                    MetaField newField = null;
                    if (FieldTypeList.SelectedValue == McDataType.Reference.ToString())
                    {
                        newField = MetaDataWrapper.CreateReference(mc, attr, sName, sFriendlyName, AllowNullsCheckBox.Checked);
                        if (attr.ContainsKey(McDataTypeAttribute.ReferenceUseSecurity))
                        {
                            Mediachase.Ibn.Data.Services.Security.AddObjectRolesFromReference(newField);
                        }
                    }
                    else if (FieldTypeList.SelectedValue == McDataType.ReferencedField.ToString())
                    {
                        newField = MetaDataWrapper.CreateReferencedField(mc, attr, sName, sFriendlyName);
                    }
                    else if (FieldTypeList.SelectedValue == McDataType.BackReference.ToString())
                    {
                        newField = MetaDataWrapper.CreateBackReference(mc, attr, sName, sFriendlyName);
                    }
                    else
                    {
                        newField = MetaDataWrapper.CreateMetaField(mc, attr, sName, sFriendlyName, typeName, AllowNullsCheckBox.Checked, sDefaultValue);
                    }

                    //add to the forms
                    if (newField != null)
                    {
                        List <FormDocument> metaForms = mfs.MetaForms;
                        foreach (FormDocument fd in metaForms)
                        {
                            if (HistoryManager.MetaClassIsHistory(fd.MetaClassName) && !HistoryManager.IsSupportedField(fd.MetaClassName, newField.Name))
                            {
                                continue;
                            }
                            FormController.AddMetaPrimitive(fd.MetaClassName, fd.Name, newField.Name);
                        }

                        using (MetaClassManagerEditScope editScope = DataContext.Current.MetaModel.BeginEdit())
                        {
                            List <string> metaViews = mfs.MetaViews;
                            foreach (string viewName in metaViews)
                            {
                                MetaView metaView = DataContext.Current.MetaModel.MetaViews[viewName];
                                if (HistoryManager.MetaClassIsHistory(metaView.MetaClassName) && !HistoryManager.IsSupportedField(metaView.MetaClassName, newField.Name))
                                {
                                    continue;
                                }
                                McMetaViewPreference pref = UserMetaViewPreference.Load(metaView, (int)DataContext.Current.CurrentUserId);
                                if (pref == null || pref.Attributes.Count == 0)
                                {
                                    McMetaViewPreference.CreateDefaultUserPreference(metaView);
                                    pref = UserMetaViewPreference.Load(metaView, (int)DataContext.Current.CurrentUserId);
                                }
                                int counter = metaView.AvailableFields.Count;
                                metaView.AvailableFields.Add(metaView.MetaClass.Fields[newField.Name]);
                                pref.SetAttribute <int>(newField.Name, McMetaViewPreference.AttrIndex, counter);
                                pref.SetAttribute <int>(newField.Name, McMetaViewPreference.AttrWidth, 100);
                            }

                            editScope.SaveChanges();
                        }
                    }

                    Response.Redirect(String.Format("{0}?class={1}", ReturnUrl, mc.Name), true);
                }
                catch (MetaFieldAlreadyExistsException)
                {
                    ErrorLabel.Text    = String.Format(GetGlobalResourceObject("GlobalMetaInfo", "FieldExistsErrorMessage").ToString(), "'" + sName + "'");
                    ErrorLabel.Visible = true;
                }

                /*              catch (SqlException sqlException)
                 *                              {
                 *                                      if (sqlException.Number == 1505)	// Duplication key
                 *                                              ErrorLabel.Text = ex.Message;
                 *                                      else
                 *                                              ErrorLabel.Text = ex.Message;
                 *                                      ErrorLabel.Visible = true;
                 *                              }
                 */
            }
            else             // Update
            {
                MetaFieldType mft = DataContext.Current.MetaModel.RegisteredTypes[FormatList.SelectedValue];
                if (mft.McDataType == McDataType.Enum && attr.ContainsKey("EnumFriendlyName"))
                {
                    mft.FriendlyName = attr["EnumFriendlyName"].ToString();
                    attr.Remove("EnumFriendlyName");
                }

                if (FieldTypeList.SelectedValue == McDataType.Reference.ToString() ||
                    FieldTypeList.SelectedValue == McDataType.BackReference.ToString() ||
                    FieldTypeList.SelectedValue == McDataType.ReferencedField.ToString())
                {
                    MetaDataWrapper.UpdateMetaFieldFriendlyName(mf, sFriendlyName);
                }
                else
                {
                    MetaDataWrapper.UpdateMetaField(mf, attr, sFriendlyName, sDefaultValue);
                }

                Response.Redirect(String.Format("{0}?class={1}", ReturnUrl, mc.Name), true);
            }
        }