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)); } } }
/// <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); }
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); } } }
/// <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); } }