public void Save()
        {
            MetaObject obj = null;

            if (ObjectId > 0)
            {
                obj = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName, Security.CurrentUser.UserID, DateTime.UtcNow);
            }
            if (obj == null)
            {
                obj = MetaDataWrapper.NewMetaObject(ObjectId, MetaClassName);
            }

            foreach (HtmlTableRow row in tblCustomFields.Rows)
            {
                if (row.Cells.Count > 1)
                {
                    HtmlTableCell cell = row.Cells[1];
                    if (cell.Controls.Count > 0)
                    {
                        ICustomField ctrl       = (ICustomField)cell.Controls[0];
                        object       FieldValue = ctrl.Value;
                        string       FieldName  = ctrl.FieldName;

                        obj[FieldName] = FieldValue;
                    }
                }
            }

            ObjectId = MetaDataWrapper.AcceptChanges(obj);
        }
Example #2
0
        /// <summary>
        /// Gets the web dav URL by WebDavTicket.
        /// </summary>
        /// <param name="ticket">The ticket.</param>
        /// <returns></returns>
        public static string GetWebDavUrl(string ticket)
        {
            string       retVal       = string.Empty;
            WebDavTicket webDavTicket = WebDavTicket.Parse(ticket);

            //Попытаемся определить имя файла
            if (String.IsNullOrEmpty(webDavTicket.AbsolutePath.FileName))
            {
                if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_FileStorage)
                {
                    FileStorageAbsolutePath fsAbsPath = webDavTicket.AbsolutePath as FileStorageAbsolutePath;
                    if (fsAbsPath != null)
                    {
                        FileStorage fs = new FileStorage();
                        Mediachase.IBN.Business.ControlSystem.FileInfo fileInfo = fs.GetFile(fsAbsPath.UniqueId);
                        if (fileInfo != null)
                        {
                            webDavTicket.AbsolutePath.FileName = fileInfo.Name;
                        }
                    }
                }
                else if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_MetaData)
                {
                    MetaDataAbsolutePath mdAbsPath = webDavTicket.AbsolutePath as MetaDataAbsolutePath;
                    if (mdAbsPath != null)
                    {
                        Mediachase.Ibn.Data.Meta.FileInfo fileInfo = new Mediachase.Ibn.Data.Meta.FileInfo(mdAbsPath.FileUID);
                        webDavTicket.AbsolutePath.FileName = fileInfo.Name;
                    }
                }
                else if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_MetaDataPlus)
                {
                    MetaDataPlusAbsolutePath mdpAbsPath = webDavTicket.AbsolutePath as MetaDataPlusAbsolutePath;
                    if (mdpAbsPath != null)
                    {
                        Mediachase.MetaDataPlus.MetaObject obj = MetaDataWrapper.LoadMetaObject(mdpAbsPath.MetaObjectId, mdpAbsPath.MetaObjectType);
                        MetaFile mf = obj[mdpAbsPath.MetaFieldName] as MetaFile;
                        if (mf != null)
                        {
                            webDavTicket.AbsolutePath.FileName = mf.Name;
                        }
                    }
                }
                else if (webDavTicket.AbsolutePath.StorageType == ObjectTypes.File_Incident)
                {
                    EmailStorageAbsolutePath emlAbsPath = webDavTicket.AbsolutePath as EmailStorageAbsolutePath;
                    if (emlAbsPath != null)
                    {
                        EMailMessageInfo emlInfo    = EMailMessageInfo.Load(emlAbsPath.EmailMsgId);
                        AttachmentInfo   attachInfo = emlInfo.Attachments[emlAbsPath.EmailAttachmentIndex];
                        webDavTicket.AbsolutePath.FileName = attachInfo.FileName;
                    }
                }
            }

            retVal = GetWebDavUrl(webDavTicket.AbsolutePath, true);


            return(retVal);
        }
Example #3
0
        /// <summary>
        /// Gets the web dav URL.
        /// </summary>
        /// <param name="storageType">Type of the storage.</param>
        /// <param name="objectId">The object id.</param>
        /// <param name="objectName">Name of the object.</param>
        /// <returns></returns>
        public static string GetMetaDataPlusWebDavUrl(int objectId, string objectType, string fieldName, bool withAuthToken)
        {
            string retVal = string.Empty;

            Mediachase.MetaDataPlus.MetaObject obj = MetaDataWrapper.LoadMetaObject(objectId, objectType);
            retVal = GetMetaDataPlusWebDavUrl(obj, fieldName, withAuthToken);

            return(retVal);
        }
Example #4
0
        protected void btnDelete_Click(object sender, System.EventArgs e)
        {
            int        objectId      = ObjectId.HasValue ? ObjectId.Value : Convert.ToInt32(Request.QueryString["id"]);
            string     metaClassName = !String.IsNullOrEmpty(MetaClassName) ? MetaClassName : Request.QueryString["class"];
            MetaObject obj           = MetaDataWrapper.LoadMetaObject(objectId, metaClassName);

            obj[FieldName] = null;
            MetaDataWrapper.AcceptChanges(obj);
            Value = null;
        }
Example #5
0
        protected void btnDelete_Click(object sender, System.EventArgs e)
        {
            int        objectId      = ObjectId.HasValue ? ObjectId.Value : Convert.ToInt32(Request.QueryString["id"]);
            string     metaClassName = !String.IsNullOrEmpty(MetaClassName) ? MetaClassName : Request.QueryString["class"];
            MetaObject obj           = MetaDataWrapper.LoadMetaObject(objectId, metaClassName);

            obj[FieldName] = null;
            MetaDataWrapper.AcceptChanges(obj);
            imgPhoto.Src      = "~/layouts/images/transparentpoint.gif";
            btnDelete.Visible = false;
        }
Example #6
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            int        ObjectId      = int.Parse(Request.QueryString["Id"]);
            string     MetaClassName = Request.QueryString["Class"];
            string     FieldName     = Request.QueryString["Field"];
            MetaObject obj           = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName);

            Mediachase.MetaDataPlus.MetaFile mf = (Mediachase.MetaDataPlus.MetaFile)obj[FieldName];
            Response.ContentType = "image/jpeg";
            Response.BinaryWrite(mf.Buffer);
            Response.End();
        }
        public void Save(int objectId)
        {
            obj = MetaDataWrapper.LoadMetaObject(objectId, MetaClassName);
            if (obj == null)
            {
                obj = MetaDataWrapper.NewMetaObject(objectId, MetaClassName);
            }

            if (mainTable.Controls.Count > 0)
            {
                ProcessCollection(mainTable.Controls, obj);
            }

            MetaDataWrapper.AcceptChanges(obj);
        }
        private void BindData(bool needToBind)
        {
            pageView = new PageView(false, PageViewType.Static, string.Empty, this.Page, MetaClassName);

            mc = MetaClass.Load(MetaClassName);

            if (ObjectId > 0)
            {
                obj = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName);
            }
            if (obj == null)
            {
                obj = MetaDataWrapper.NewMetaObject(ObjectId, MetaClassName);
            }

            GenerateMainTable();

            LoadControls(needToBind);

            wasBound = true;
        }
        protected void btnSave_ServerClick(object sender, System.EventArgs e)
        {
            Page.Validate();
            if (!Page.IsValid)
            {
                return;
            }


            MetaObject obj = null;

            if (ObjectId > 0)
            {
                obj = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName, Security.CurrentUser.UserID, DateTime.UtcNow);
            }
            if (obj == null)
            {
                obj = MetaDataWrapper.NewMetaObject(ObjectId, MetaClassName);
            }

            foreach (HtmlTableRow row in tblCustomFields.Rows)
            {
                HtmlTableCell cell       = row.Cells[1];
                ICustomField  ctrl       = (ICustomField)cell.Controls[0];
                object        FieldValue = ctrl.Value;
                string        FieldName  = ctrl.FieldName;

                obj[FieldName] = FieldValue;
            }

            ObjectId = MetaDataWrapper.AcceptChanges(obj);

            Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(),
                                                    "<script language=javascript>" +
                                                    "try {var str=window.opener.location.href;" +
                                                    "window.opener.location.href=str;}" +
                                                    "catch (e){} window.close();</script>");
        }
Example #10
0
        protected virtual ResourceInfo GetResourceInfo(WebDavTicket ticket)
        {
            if (ticket == null)
            {
                throw new ArgumentNullException("ticket");
            }
            MetaDataPlusAbsolutePath metaAbsPath = ticket.AbsolutePath as MetaDataPlusAbsolutePath;

            if (metaAbsPath == null)
            {
                throw new NullReferenceException("metaAbsPath");
            }

            ResourceInfo retVal = new ResourceInfo();
            MetaObject   obj    = MetaDataWrapper.LoadMetaObject(metaAbsPath.MetaObjectId, metaAbsPath.MetaObjectType);

            if (obj == null)
            {
                throw new NullReferenceException("obj");
            }

            MetaFile metaFile = (MetaFile)obj[metaAbsPath.MetaFieldName];

            if (metaFile != null)
            {
                retVal.AbsolutePath  = ticket.ToString();
                retVal.Tag           = new object[] { obj, metaFile, metaAbsPath };
                retVal.Name          = metaFile.Name;
                retVal.ContentType   = ContentTypeResolver.Resolve(Path.GetExtension(metaFile.Name));
                retVal.ContentLength = metaFile.Size;
                retVal.ParentName    = "root";
                retVal.Modified      = metaFile.LastWriteTime;
                retVal.Created       = metaFile.CreationTime;
            }

            return(retVal);
        }
        private void BindCustomFields()
        {
            int        ObjectId      = GetObjectId();
            string     MetaClassName = GetMetaClassName();
            MetaObject obj           = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName);

            if (obj != null)
            {
                int cur_weight = 0;
                for (int irow = 0; irow < _mflist.Count; irow++)
                {
                    tblCustomFields.Rows.Add(new HtmlTableRow());
                }
                foreach (MetaField field in obj.MetaClass.UserMetaFields)
                {
                    if (ContainsMetaField(field.Name))
                    {
                        cur_weight = _mflist.IndexOf(field.Name);
                        HtmlTableRow  row       = new HtmlTableRow();
                        HtmlTableCell cellTitle = new HtmlTableCell();
                        HtmlTableCell cellValue = new HtmlTableCell();

                        cellTitle.NoWrap    = true;
                        cellTitle.VAlign    = "Top";
                        cellTitle.InnerHtml = String.Format("<span class=ibn-label>{0}:</span>", field.FriendlyName);
                        cellValue.Width     = "90%";
                        object fieldValue = obj[field.Name];

                        if (fieldValue != null)
                        {
                            switch (field.DataType)
                            {
                            case MetaDataType.File:
                                Mediachase.MetaDataPlus.MetaFile mf = (Mediachase.MetaDataPlus.MetaFile)fieldValue;
                                int    ContentTypeId = DSFile.GetContentTypeByFileName(mf.Name);
                                string sInnerHTML    = "<img src='../Common/ContentIcon.aspx?IconID=" +
                                                       +ContentTypeId +
                                                       "' border='0' align='middle' width='16px' height='16px' />&nbsp;" + mf.Name;

                                string metaFileUrl = WebDavUrlBuilder.GetMetaDataPlusWebDavUrl(ObjectId, MetaClassName, field.Name, true);
                                string sNameLocked = Util.CommonHelper.GetLockerText(metaFileUrl);

                                cellValue.InnerHtml = String.Format("<a href='{0}'>{1}</a> {2}", metaFileUrl, sInnerHTML, sNameLocked);

                                //cellValue.InnerHtml = "<a href='../Modules/DownloadMetaFile.aspx?Id="+ObjectId.ToString()+
                                //    "&Class="+MetaClassName+"&Field="+field.Name+"'>"+sInnerHTML+"</a>";
                                break;

                            case MetaDataType.ImageFile:
                                cellValue.InnerHtml = "<img align='middle' border='0' src='../Modules/GetMetaImageFile.aspx?Id=" + ObjectId.ToString() +
                                                      "&Class=" + MetaClassName + "&Field=" + field.Name + "' />";
                                break;

                            case MetaDataType.Binary:
                            case MetaDataType.VarBinary:
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", "[BinaryData]");
                                break;

                            case MetaDataType.Bit:
                            case MetaDataType.Boolean:
                                if ((bool)fieldValue)
                                {
                                    cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", LocRM.GetString("BooleanYes"));
                                }
                                else
                                {
                                    cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", LocRM.GetString("BooleanNo"));
                                }
                                break;

                            case MetaDataType.Date:
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", ((DateTime)fieldValue).ToShortDateString());
                                break;

                            case MetaDataType.Email:
                                cellValue.InnerHtml = String.Format("<a href='mailto:{0}'>{0}</a>", fieldValue.ToString());
                                break;

                            case MetaDataType.Image:
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", "[Image]");
                                break;

                            case MetaDataType.LongHtmlString:
                                cellValue.InnerHtml = String.Format("<span class=ibn-description>{0}</span>", fieldValue.ToString());
                                break;

                            case MetaDataType.DateTime:
                            case MetaDataType.SmallDateTime:
                            case MetaDataType.Timestamp:
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0} {1}</span>", ((DateTime)fieldValue).ToShortDateString(), ((DateTime)fieldValue).ToShortTimeString());
                                break;

                            case MetaDataType.Url:
                                cellValue.InnerHtml = String.Format("<a href='{0}' target='_blank'>{0}</a>", Server.UrlDecode(fieldValue.ToString()));
                                break;

                            case MetaDataType.Money:
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", ((decimal)fieldValue).ToString("f"));
                                break;

                            case MetaDataType.Float:
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", fieldValue.ToString());
                                break;

                            case MetaDataType.EnumSingleValue:
                            case MetaDataType.DictionarySingleValue:
                                MetaDictionaryItem item = (MetaDictionaryItem)fieldValue;
                                cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", item.Value);
                                break;

                            case MetaDataType.EnumMultivalue:
                            case MetaDataType.DictionaryMultivalue:
                                MetaDictionaryItem[] items = (MetaDictionaryItem[])fieldValue;
                                string sItems = String.Empty;
                                foreach (MetaDictionaryItem mdItem in items)
                                {
                                    if (sItems != "")
                                    {
                                        sItems += "<br>";
                                    }
                                    sItems += mdItem.Value;
                                }
                                sItems = String.Format(CultureInfo.InvariantCulture,
                                                       "<span class=ibn-value>{0}</span>",
                                                       sItems);
                                cellValue.InnerHtml = sItems;
                                break;

                            default:
                                try
                                {
                                    cellValue.InnerHtml = String.Format("<span class=ibn-value>{0}</span>", fieldValue.ToString());
                                }
                                catch
                                {
                                    cellValue.InnerHtml = "";
                                }
                                break;
                            }
                        }

                        cellTitle.Attributes.Add("class", "text");
                        cellValue.Attributes.Add("class", "text");
                        row.Cells.Add(cellTitle);
                        row.Cells.Add(cellValue);

                        //tblCustomFields.Rows.Add(row);
                        tblCustomFields.Rows.Insert(cur_weight, row);
                        tblCustomFields.Rows.RemoveAt(cur_weight + 1);
                    }
                }
            }
        }
        private void BindCustomFields()
        {
            MetaObject obj = null;

            if (ObjectId > 0)
            {
                obj = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName);
            }
            if (obj == null)
            {
                obj = MetaDataWrapper.NewMetaObject(ObjectId, MetaClassName);
            }

            foreach (MetaField field in obj.MetaClass.UserMetaFields)
            {
                HtmlTableRow  row       = new HtmlTableRow();
                HtmlTableCell cellTitle = new HtmlTableCell();
                HtmlTableCell cellValue = new HtmlTableCell();

                cellTitle.Attributes.Add("class", "ibn-label");
                cellTitle.Width     = "110px";
                cellTitle.VAlign    = "middle";
                cellTitle.InnerHtml = String.Format("{0}:", field.FriendlyName);
                object fieldValue = obj[field.Name];
                System.Web.UI.UserControl control = null;

                switch (field.DataType)
                {
                case MetaDataType.Binary:
                    cellValue.InnerText = "[BinaryData]";
                    break;

                case MetaDataType.File:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/FileValue.ascx");
                    break;

                case MetaDataType.ImageFile:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/ImageFileValue.ascx");
                    break;

                case MetaDataType.DateTime:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DateTimeValue.ascx");
                    break;

                case MetaDataType.Money:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/MoneyValue.ascx");
                    break;

                case MetaDataType.Float:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/FloatValue.ascx");
                    break;

                case MetaDataType.Integer:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/IntValue.ascx");
                    break;

                case MetaDataType.Boolean:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/BooleanValue.ascx");
                    break;

                case MetaDataType.Date:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DateValue.ascx");
                    break;

                case MetaDataType.Email:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/EmailValue.ascx");
                    break;

                case MetaDataType.Url:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/URLValue.ascx");
                    break;

                case MetaDataType.ShortString:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/ShortStringValue.ascx");
                    break;

                case MetaDataType.LongString:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/LongStringValue.ascx");
                    break;

                case MetaDataType.LongHtmlString:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/LongHTMLStringValue.ascx");
                    break;

                case MetaDataType.DictionarySingleValue:
                case MetaDataType.EnumSingleValue:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DictionarySingleValue.ascx");
                    ((DictionarySingleValue)control).InitControl(field.Id, (field.AllowNulls ? !field.IsRequired : field.AllowNulls));
                    break;

                case MetaDataType.DictionaryMultivalue:
                case MetaDataType.EnumMultivalue:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DictionaryMultivalue.ascx");
                    ((DictionaryMultivalue)control).InitControl(field.Id);
                    break;

                default:
                    if (fieldValue != null)
                    {
                        cellValue.InnerText = fieldValue.ToString();
                    }
                    break;
                }

                if (control != null)
                {
                    cellValue.Controls.Add(control);
                }

                row.Cells.Add(cellTitle);
                row.Cells.Add(cellValue);

                tblCustomFields.Rows.Add(row);

                if (control != null)
                {
                    ICustomField iCustomField = ((ICustomField)control);
                    iCustomField.FieldName = field.Name;
                    if (fieldValue != null)
                    {
                        iCustomField.Value = fieldValue;
                    }
                    if (field.AllowNulls)
                    {
                        iCustomField.AllowEmptyValues = !field.IsRequired;
                    }
                    else
                    {
                        iCustomField.AllowEmptyValues = false;
                    }
                }
            }
        }
        private void BindCustomFields()
        {
            MetaObject obj = null;

            if (ObjectId > 0)
            {
                obj = MetaDataWrapper.LoadMetaObject(ObjectId, MetaClassName);
            }
            if (obj == null)
            {
                obj = MetaDataWrapper.NewMetaObject(ObjectId, MetaClassName);
            }

            MetaClass mc = obj.MetaClass;

            SortedList <int, MetaField> userMetaFields = new SortedList <int, MetaField>();

            foreach (MetaField field in mc.UserMetaFields)
            {
                if (ContainsMetaField(field.Name))
                {
                    int cur_weight = _mflist.IndexOf(field.Name);
                    userMetaFields.Add(cur_weight, field);
                }
            }

            foreach (MetaField field in userMetaFields.Values)
            {
                HtmlTableRow  row       = new HtmlTableRow();
                HtmlTableCell cellTitle = new HtmlTableCell();
                HtmlTableCell cellValue = new HtmlTableCell();

                cellTitle.VAlign    = "middle";
                cellTitle.InnerHtml = String.Format("<b>{0}</b>:", field.FriendlyName);
                object fieldValue = obj[field.Name];
                System.Web.UI.UserControl control = null;

                switch (field.DataType)
                {
                case MetaDataType.Binary:
                    cellValue.InnerText = "[BinaryData]";
                    break;

                case MetaDataType.File:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/FileValue.ascx");
                    break;

                case MetaDataType.ImageFile:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/ImageFileValue.ascx");
                    break;

                case MetaDataType.DateTime:
                    //control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DateTimeValue.ascx");
                    Mediachase.UI.Web.Modules.EditControls.DateTimeValue control_datetime = (Mediachase.UI.Web.Modules.EditControls.DateTimeValue)Page.LoadControl("~/Modules/EditControls/DateTimeValue.ascx");
                    control_datetime.Path_JS = "../../Scripts/";
                    control = (System.Web.UI.UserControl)control_datetime;
                    break;

                case MetaDataType.Money:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/MoneyValue.ascx");
                    break;

                case MetaDataType.Float:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/FloatValue.ascx");
                    break;

                case MetaDataType.Integer:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/IntValue.ascx");
                    break;

                case MetaDataType.Boolean:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/BooleanValue.ascx");
                    break;

                case MetaDataType.Date:
                    //control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DateValue.ascx");
                    Mediachase.UI.Web.Modules.EditControls.DateValue control_date = (Mediachase.UI.Web.Modules.EditControls.DateValue)Page.LoadControl("~/Modules/EditControls/DateValue.ascx");
                    control_date.Path_JS = "../../Scripts/";
                    control = (System.Web.UI.UserControl)control_date;
                    break;

                case MetaDataType.Email:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/EmailValue.ascx");
                    break;

                case MetaDataType.Url:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/URLValue.ascx");
                    break;

                case MetaDataType.ShortString:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/ShortStringValue.ascx");
                    break;

                case MetaDataType.LongString:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/LongStringValue.ascx");
                    break;

                case MetaDataType.LongHtmlString:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/LongHTMLStringValue.ascx");
                    break;

                case MetaDataType.DictionarySingleValue:
                case MetaDataType.EnumSingleValue:
                    control = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DictionarySingleValue.ascx");
                    ((DictionarySingleValue)control).InitControl(field.Id, (field.AllowNulls ? !field.IsRequired : field.AllowNulls));
                    break;

                case MetaDataType.DictionaryMultivalue:
                case MetaDataType.EnumMultivalue:
                    cellTitle.VAlign = "top";
                    control          = (System.Web.UI.UserControl)Page.LoadControl("~/Modules/EditControls/DictionaryMultivalue.ascx");
                    ((DictionaryMultivalue)control).InitControl(field.Id);
                    break;

                default:
                    if (fieldValue != null)
                    {
                        cellValue.InnerText = fieldValue.ToString();
                    }
                    break;
                }

                if (control != null)
                {
                    cellValue.Controls.Add(control);
                }

                row.Cells.Add(cellTitle);
                row.Cells.Add(cellValue);

                tblCustomFields.Rows.Add(row);

                if (control != null)
                {
                    ICustomField iCustomField = ((ICustomField)control);
                    iCustomField.FieldName = field.Name;
                    if (fieldValue != null)
                    {
                        iCustomField.Value = fieldValue;
                    }
                    iCustomField.AllowEmptyValues = !mc.GetFieldIsRequired(field);
                }
            }
        }