예제 #1
0
        public static Guid InsertNewWidget(Guid pageId, Guid widgetId, string langCode)
        {
            try
            {
                WidgetElement widget = WidgetSection.CachedInstance.Widgets.Cast <WidgetElement>().Where(w => w.Id == widgetId).Single();

                HitblWidgetInstanceIn newWidgetIns = new HitblWidgetInstanceIn();
                newWidgetIns.InsId              = Guid.NewGuid();
                newWidgetIns.InsColumnNo        = 0;
                newWidgetIns.InsCreatedDate     = newWidgetIns.InsLastUpdate = DateTime.Now;
                newWidgetIns.InsShowAfterInsert = 0;
                newWidgetIns.InsOrderNo         = 0;
                newWidgetIns.InsPagId           = pageId;
                newWidgetIns.InsXmlStateData    = widget.Settings.Value;
                newWidgetIns.WdgId              = widgetId;
                newWidgetIns.Save();

                HitblWidgetInstanceTextWit newWidgetInsTxt = new HitblWidgetInstanceTextWit();
                newWidgetInsTxt.InsId       = newWidgetIns.InsId;
                newWidgetInsTxt.WitLangCode = langCode;
                newWidgetInsTxt.WitTitle    = GuiLanguage.GetGuiLanguage("WidgetsBase").GetString(widget.TitleKey);
                newWidgetInsTxt.Save();

                SPs.HispMoveWidgetInstance(newWidgetIns.InsId, 0, 0).Execute();

                return(newWidgetIns.InsId);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
        /// <summary>
        /// Loads the contents of the specified filename in the given <see cref="Desktop"/> instance.
        /// </summary>
        /// <param name="desktop">The desktop.</param>
        /// <param name="filename">The filename.</param>
        public static void Load(Desktop desktop, string filename)
        {
            XElement root = LoadFromFile(filename);

            if (root == null)
            {
                return;
            }

            // Widget Deserialization
            IEnumerable <XElement> widgetsXML = root.Elements("WidgetElements").Elements("WidgetElement");

            foreach (XElement widgetXML in widgetsXML)
            {
                Guid          id   = new Guid(widgetXML.Element("Id").Value);
                WidgetElement item = DeserializeWidget(widgetXML, id, 0, 0);

                desktop.AddElement(item, item.GetPosition());
            }

            // Shortcut Deserialization
            IEnumerable <XElement> shortcutsXML = root.Elements("ShortcutElements").Elements("ShortcutElement");
            int ti = 0;

            foreach (XElement shortcutXML in shortcutsXML)
            {
                Guid            id   = new Guid(shortcutXML.Element("Id").Value);
                ShortcutElement item = DeserializeShortcut(shortcutXML, id, 0, 0);

                item.TabIndex = ++ti;

                desktop.AddElement(item, item.GetPosition());
            }
        }
예제 #3
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            try
            {
                bool showWidget = true;
                if (!string.IsNullOrEmpty(WidgetInstance.INS_ViewRoles) && !UserDataContext.GetUserDataContext().IsAdmin)
                {
                    var userRoles = UserDataContext.GetUserDataContext().UserRoles.ToList().ConvertAll(x => x.ToLower());
                    showWidget = Array.Exists(WidgetInstance.INS_ViewRoles.Split(Constants.TAG_DELIMITER), x => userRoles.Contains(x.ToLower()));
                }
                if (showWidget)
                {
                    widgetConfig = WidgetSection.CachedInstance.Widgets.Cast <WidgetElement>().Where(w => w.Id == WidgetInstance.WDG_ID).Single();
                    Control widget = LoadControl(widgetConfig.Control);
                    ((WidgetBase)widget).WidgetHost = this;

                    if (!IsReadOnly)
                    {
                        widget.ID = "Widget" + WidgetInstance.INS_ID.ToString().Replace("-", "_");
                    }
                    else
                    {
                        widget.ID = "W" + WidgetInstance.INS_ColumnNo + WidgetInstance.INS_OrderNo;
                    }

                    WBP.Controls.Add(widget);

                    // Add drag & drop behaviour
                    if (!IsReadOnly && !WidgetInstance.INS_IsFixed || UserDataContext.GetUserDataContext().IsAdmin)
                    {
                        CustomDragDrop.CustomFloatingBehaviorExtender customFloatingBehaviorExtender = new CustomDragDrop.CustomFloatingBehaviorExtender();
                        customFloatingBehaviorExtender.ID              = "WidgetFloatingBehavior";
                        customFloatingBehaviorExtender.DragHandleID    = "WidgetHeader";
                        customFloatingBehaviorExtender.TargetControlID = "W";
                        WBP.Controls.Add(customFloatingBehaviorExtender);
                    }
                }
                else
                {
                    Visible = false;
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteEntry(ex);
                WBP.Controls.Add(new LiteralControl(ex.Message));
            }

            WBP.ID = null;
        }
예제 #4
0
        protected void RepWidgetsItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                WidgetElement widget = (WidgetElement)e.Item.DataItem;

                e.Item.ID = widget.Id.ToString();

                Literal name = (Literal)e.Item.FindControl("LitName");
                name.Text = GuiLanguage.GetGuiLanguage("WidgetsBase").GetString(widget.TitleKey);

                TextBox groupId = (TextBox)e.Item.FindControl("TxtGroupId");
                groupId.Text = widget.GroupId.ToString();

                TextBox orderKey = (TextBox)e.Item.FindControl("TxtOrderKey");
                orderKey.Text = widget.OrderKey.ToString();

                TextBox roles = (TextBox)e.Item.FindControl("TxtRoles");
                roles.Text = widget.Roles;
                if (string.IsNullOrEmpty(roles.Text))
                {
                    ((HtmlTableRow)e.Item.FindControl("WidgetRow")).Attributes.Add("style", "background-color:#FFEEEE;");
                }
                else
                {
                    ((HtmlTableRow)e.Item.FindControl("WidgetRow")).Attributes.Add("style", "background-color:#EEFFEE;");
                }

                TextBox communities = (TextBox)e.Item.FindControl("TxtCommunities");
                communities.Text = widget.Communities;

                TextBox pageTypes = (TextBox)e.Item.FindControl("TxtPageTypes");
                pageTypes.Text = widget.PageTypes;

                TextBox settings = (TextBox)e.Item.FindControl("TxtSettings");
                settings.Text = widget.Settings.Value;

                if (userDataContext.UserID != Constants.ADMIN_USERID.ToGuid())
                {
                    communities.ReadOnly = true;
                    communities.CssClass = "CSB_admin_readonly";
                    pageTypes.ReadOnly   = true;
                    pageTypes.CssClass   = "CSB_admin_readonly";
                    settings.ReadOnly    = true;
                    settings.CssClass    = "CSB_admin_readonly";
                }
            }
        }
예제 #5
0
        protected void OnWidgetItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            WidgetElement widget = (WidgetElement)e.Item.DataItem;

            Panel widgetTemplate = (Panel)e.Item.FindControl("WT");

            widgetTemplate.Attributes.Add("InstanceId", widget.Id.ToString());
            widgetTemplate.Attributes.Add("IsTemplate", "true");

            ((Literal)e.Item.FindControl("LitTitle")).Text = (new TextControl()
            {
                LanguageFile = widget.LocalizationBaseFileName, TextKey = widget.TitleKey
            }).Text;
            ((Literal)e.Item.FindControl("LitDesc")).Text  = (new TextControl()
            {
                LanguageFile = widget.LocalizationBaseFileName, TextKey = widget.DescriptionKey
            }).Text;
        }
예제 #6
0
        public void AddWidgetInstanceByObjectType(string objectId, string objectType, string pageId, int column, int row)
        {
            if (ActionValidator.IsValid(ActionValidator.ActionTypeEnum.AddNewWidget))
            {
                Guid communityId = DataAccess.Business.Utils.GetCommunityIdFromPage(pageId.ToGuid());
                if ((DataObject.GetUserAccess(UserDataContext.GetUserDataContext(), communityId, communityId, Common.Helper.GetObjectTypeNumericID("Community")) & ObjectAccessRight.Update) == ObjectAccessRight.Update)
                {
                    Guid          widgetId = Common.Helper.GetObjectType(objectType).DetailWidgetId;
                    WidgetElement widget   = WidgetSection.CachedInstance.Widgets.Cast <WidgetElement>().Where(w => w.Id == widgetId).Single();

                    HitblWidgetInstanceIn widgetInstance = new HitblWidgetInstanceIn();
                    widgetInstance.InsId              = Guid.NewGuid();
                    widgetInstance.InsColumnNo        = column;
                    widgetInstance.InsCreatedDate     = widgetInstance.InsLastUpdate = DateTime.Now;
                    widgetInstance.InsShowAfterInsert = 0;
                    widgetInstance.InsOrderNo         = row;
                    widgetInstance.InsPagId           = new Guid(pageId);
                    widgetInstance.InsXmlStateData    = string.Format("<root><ObjectType>{0}</ObjectType><ByUrl>False</ByUrl><Source>-1</Source><ObjectID>{1}</ObjectID></root>", Common.Helper.GetObjectType(objectType).Id, objectId);
                    widgetInstance.WdgId              = widgetId;
                    widgetInstance.WtpId              = Constants.DEFAULT_LAYOUTID.ToGuid();
                    widgetInstance.InsHideIfNoContent = true;
                    if (!string.IsNullOrEmpty(widget.OutputTemplates))
                    {
                        string[] outputTemplates = widget.OutputTemplates.Split(';');
                        widgetInstance.InsOutputTemplate = outputTemplates[0].ToGuid();
                    }
                    widgetInstance.Save();

                    HitblWidgetInstanceTextWit widgetInstanceText = new HitblWidgetInstanceTextWit();
                    widgetInstanceText.InsId       = widgetInstance.InsId;
                    widgetInstanceText.WitLangCode = "de-CH";
                    widgetInstanceText.WitTitle    = "##OBJ_TITLE##";
                    widgetInstanceText.Save();

                    SPs.HispWidgetInstanceReorderByPageColumn(new Guid(pageId), widgetInstance.InsColumnNo).Execute();
                }
            }
        }
예제 #7
0
        private static WidgetElement DeserializeWidget(XElement itemXML, Guid id, double offsetX, double offsetY)
        {
            WidgetElement item = (WidgetElement)Activator.CreateInstance(Type.GetType(itemXML.Element("Type").Value));

            item.ShowMinimizeButton = Boolean.Parse(itemXML.Element("ShowMinimizeButton").Value);
            item.StartupLocation    = StartupPosition.Manual;

            item.Move(Double.Parse(itemXML.Element("Left").Value, CultureInfo.InvariantCulture) + offsetX,
                      Double.Parse(itemXML.Element("Top").Value, CultureInfo.InvariantCulture) + offsetY);
            item.SetZIndex(Int32.Parse(itemXML.Element("zIndex").Value));

            WindowState widgetState = (WindowState)Enum.Parse(typeof(WindowState), itemXML.Element("WidgetState").Value as String);

            item.Width  = Double.Parse(itemXML.Element("Width").Value, CultureInfo.InvariantCulture);
            item.Height = Double.Parse(itemXML.Element("Height").Value, CultureInfo.InvariantCulture);

            if (widgetState == WindowState.Minimized)
            {
                item.WidgetState = widgetState;
            }

            return(item);
        }
예제 #8
0
        public void AddWidgetInstance(string widgetId, string pageId, int column, int row)
        {
            if (ActionValidator.IsValid(ActionValidator.ActionTypeEnum.AddNewWidget))
            {
                Guid communityId = DataAccess.Business.Utils.GetCommunityIdFromPage(pageId.ToGuid());
                if ((DataObject.GetUserAccess(UserDataContext.GetUserDataContext(), communityId, communityId, Common.Helper.GetObjectTypeNumericID("Community")) & ObjectAccessRight.Update) == ObjectAccessRight.Update)
                {
                    WidgetElement widget = WidgetSection.CachedInstance.Widgets.Cast <WidgetElement>().Where(w => w.Id == widgetId.ToGuid()).Single();

                    HitblWidgetInstanceIn widgetInstance = new HitblWidgetInstanceIn();
                    widgetInstance.InsId              = Guid.NewGuid();
                    widgetInstance.InsColumnNo        = column;
                    widgetInstance.InsCreatedDate     = widgetInstance.InsLastUpdate = DateTime.Now;
                    widgetInstance.InsShowAfterInsert = (int)widget.ShowAfterInsert;
                    widgetInstance.InsOrderNo         = row;
                    widgetInstance.InsPagId           = new Guid(pageId);
                    widgetInstance.InsXmlStateData    = widget.Settings.Value;
                    widgetInstance.WdgId              = widgetId.ToGuid();
                    widgetInstance.WtpId              = Constants.DEFAULT_LAYOUTID.ToGuid();
                    widgetInstance.InsHideIfNoContent = true;
                    if (!string.IsNullOrEmpty(widget.OutputTemplates))
                    {
                        string[] outputTemplates = widget.OutputTemplates.Split(';');
                        widgetInstance.InsOutputTemplate = outputTemplates[0].ToGuid();
                    }
                    widgetInstance.Save();

                    HitblWidgetInstanceTextWit widgetInstanceText = new HitblWidgetInstanceTextWit();
                    widgetInstanceText.InsId       = widgetInstance.InsId;
                    widgetInstanceText.WitLangCode = "de-CH";
                    widgetInstanceText.WitTitle    = GuiLanguage.GetGuiLanguage(widget.LocalizationBaseFileName).GetString(widget.TitleKey);
                    widgetInstanceText.Save();

                    SPs.HispWidgetInstanceReorderByPageColumn(new Guid(pageId), widgetInstance.InsColumnNo).Execute();
                }
            }
        }
예제 #9
0
        public static void CreateDefaultWidgets(Guid pageId, string pageType, string page, string langCode)
        {
            XmlDocument  xmlDefaultWidgets = new XmlDocument();
            StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath("/Configurations/DefaultWidgets.config"));

            xmlDefaultWidgets.LoadXml(sr.ReadToEnd());
            sr.Close();

            XmlNodeList xmlLayoutCols = xmlDefaultWidgets.SelectNodes(string.Format("//root/Community[@pageType='{0}' and @page='{1}']/Column", pageType, page));

            foreach (XmlNode xmlLayoutCol in xmlLayoutCols)
            {
                int         intColNr   = Convert.ToInt32(xmlLayoutCol.Attributes["number"].Value);
                XmlNodeList xmlWidgtes = xmlLayoutCol.SelectNodes("widget");
                int         intOrderNr = 0;
                foreach (XmlNode xmlWidget in xmlWidgtes)
                {
                    bool   isFixed                  = false;
                    bool   hideIfNoContent          = false;
                    string roleVisibility           = string.Empty;
                    string templateId               = string.Empty;
                    string outputTemplate           = string.Empty;
                    string localizationBaseFileName = string.Empty;
                    string titleKey                 = string.Empty;
                    if (xmlWidget.Attributes["IsFixed"] != null)
                    {
                        bool.TryParse(xmlWidget.Attributes["IsFixed"].Value, out isFixed);
                    }
                    if (xmlWidget.Attributes["HideIfNoContent"] != null)
                    {
                        bool.TryParse(xmlWidget.Attributes["HideIfNoContent"].Value, out hideIfNoContent);
                    }
                    if (xmlWidget.Attributes["ViewRoles"] != null)
                    {
                        roleVisibility = xmlWidget.Attributes["ViewRoles"].Value.Replace(',', Constants.TAG_DELIMITER);
                    }
                    if (xmlWidget.Attributes["WTP_ID"] != null)
                    {
                        templateId = xmlWidget.Attributes["WTP_ID"].Value;
                    }
                    if (xmlWidget.Attributes["OutputTemplate"] != null)
                    {
                        outputTemplate = xmlWidget.Attributes["OutputTemplate"].Value;
                    }
                    if (xmlWidget.Attributes["LocalizationBaseFileName"] != null)
                    {
                        localizationBaseFileName = xmlWidget.Attributes["LocalizationBaseFileName"].Value;
                    }
                    if (xmlWidget.Attributes["TitleKey"] != null)
                    {
                        titleKey = xmlWidget.Attributes["TitleKey"].Value;
                    }
                    Guid   widgetId          = new Guid(xmlWidget.Attributes["id"].Value);
                    string predefinedContent = string.Empty;
                    if (xmlWidget.HasChildNodes)
                    {
                        predefinedContent = xmlWidget.InnerText;
                    }
                    WidgetElement         widget       = WidgetSection.CachedInstance.Widgets.Cast <WidgetElement>().Where(w => w.Id == widgetId).Single();
                    HitblWidgetInstanceIn newWidgetIns = new HitblWidgetInstanceIn();
                    newWidgetIns.InsId              = Guid.NewGuid();
                    newWidgetIns.InsColumnNo        = intColNr;
                    newWidgetIns.InsCreatedDate     = newWidgetIns.InsLastUpdate = DateTime.Now;
                    newWidgetIns.InsShowAfterInsert = 0;
                    newWidgetIns.InsOrderNo         = intOrderNr;
                    newWidgetIns.InsPagId           = pageId;
                    newWidgetIns.InsIsFixed         = isFixed;
                    newWidgetIns.InsHideIfNoContent = hideIfNoContent;
                    newWidgetIns.InsViewRoles       = roleVisibility;
                    if (!string.IsNullOrEmpty(templateId))
                    {
                        newWidgetIns.WtpId = templateId.ToGuid();
                    }
                    if (!string.IsNullOrEmpty(outputTemplate))
                    {
                        newWidgetIns.InsOutputTemplate = outputTemplate.ToGuid();
                    }
                    else
                    {
                        string[] outputTemplates = new string[] { "" };
                        if (!string.IsNullOrEmpty(widget.OutputTemplates))
                        {
                            outputTemplates = widget.OutputTemplates.Split(';');
                        }
                        if (!string.IsNullOrEmpty(outputTemplates[0]))
                        {
                            newWidgetIns.InsOutputTemplate = outputTemplates[0].ToGuid();
                        }
                    }
                    newWidgetIns.InsXmlStateData = predefinedContent.Length == 0 ? widget.Settings.Value : predefinedContent;
                    newWidgetIns.WdgId           = widgetId;
                    newWidgetIns.Save();
                    HitblWidgetInstanceTextWit newWidgetInsTxt = new HitblWidgetInstanceTextWit();
                    newWidgetInsTxt.InsId       = newWidgetIns.InsId;
                    newWidgetInsTxt.WitLangCode = langCode;

                    if (!string.IsNullOrEmpty(localizationBaseFileName))
                    {
                        newWidgetInsTxt.WitTitle = GuiLanguage.GetGuiLanguage(localizationBaseFileName).GetString(titleKey);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(widget.LocalizationBaseFileName))
                        {
                            newWidgetInsTxt.WitTitle = GuiLanguage.GetGuiLanguage(widget.LocalizationBaseFileName).GetString(widget.TitleKey);
                        }
                        else
                        {
                            newWidgetInsTxt.WitTitle = GuiLanguage.GetGuiLanguage("WidgetsBase").GetString(widget.TitleKey);
                        }
                    }
                    newWidgetInsTxt.Save();

                    if (!string.IsNullOrEmpty(templateId))
                    {
                        SPs.HispWidgetTemplatesIncreaseCount(pageId, newWidgetIns.WtpId).Execute();
                    }
                    intOrderNr++;
                }
            }
        }
예제 #10
0
        public WidgetElementDTO GetWidgetElement(int WidgetElementId)
        {
            using (ISession session = HibernateHelper.GetSession().OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    try {
                        WidgetElement widget = new WidgetElement();
                        widget = EditorServices.GetWidgetElementById(WidgetElementId, session);

                        Mapper.CreateMap<WidgetElement, WidgetElementDTO>();
                        Mapper.CreateMap<Element, ElementDTO>();

                        return Mapper.Map<WidgetElement, WidgetElementDTO>(widget);

                    } catch (Exception ex) {
                        throw ex;
                    } finally {
                        session.Flush();
                        session.Close();
                    }
                }

            }
        }
예제 #11
0
        private bool _SynchronizeWidgetElement(int contentId, int iditemamm, string type)
        {
            bool status = false;
            using (ISession session = HibernateHelper.GetSession().OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    try {
                        //Ricava il/i Widget del content
                        IList<Widget> widges = new List<Widget>();
                        widges = EditorServices.GetWidgetByContent(session, contentId) as List<Widget>;
                        int max = 0;
                        foreach (Widget wid in widges) {
                            if (wid.Structureid == 4) {
                                //è Utility e link
                                if (wid.WidgetElements != null && wid.WidgetElements.Count > 0) {

                                    var  pos = (from f in wid.WidgetElements
                                           where f.Type != (int)WidgetElementTypeEnum.Importato
                                           select f.Position);

                                    if (pos.Count() > 0) {
                                        max = pos.Max();
                                    }

                                    //Ricava i WidgetElement del Widget
                                    //Cancella gli eventuali WidgetElement di tipo 2 (importati)
                                    foreach (WidgetElement widel in wid.WidgetElementsList) {

                                        if (widel.Type == (int)WidgetElementTypeEnum.Importato) {
                                            widel.Deleted = true;
                                            wid.WidgetElements.Remove(widel);
                                            HibernateHelper.Persist(widel, session);
                                        }
                                    }
                                }
                            }

                            //Ricava per iditemamm e tipo i correlati
                            IUnityContainer container = new UnityContainer();
                            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                            section.Containers.Default.Configure(container);
                            WidgetHelper unityHelper = container.Resolve<WidgetHelper>();

                            DataSet correlati = new DataSet();
                            correlati = unityHelper.GetCorrelated(iditemamm, type);
                            if (correlati.Tables != null && correlati.Tables[0].Rows.Count > 0) {
                                //Ho trovato dei correlati

                                foreach (DataRow Riga in correlati.Tables[0].Rows) {
                                    max++;
                                    WidgetElement newidel = new WidgetElement();
                                    newidel.IsNew = true;
                                    newidel.Type = (int)WidgetElementTypeEnum.Importato;
                                    newidel.Elementid = 6;
                                    newidel.Position = max;
                                    newidel.Widgetid = wid.Widgetid;
                                    newidel.Widget = wid;

                                    if (type == "std") {
                                        if (Riga["ITEM_NAME"] != DBNull.Value) {
                                            newidel.Name = Riga["ITEM_NAME"].ToString();
                                        }
                                        if (Riga["ITEM_LINK"] != DBNull.Value) {
                                            newidel.Valore = "\\cms\\" + Riga["ITEM_LINK"].ToString();
                                        }

                                    } else if (type == "com") {
                                        if (Riga["TITLE"] != DBNull.Value) {
                                            newidel.Name = Riga["TITLE"].ToString();
                                        }
                                        if (Riga["ID_MARKET"] != DBNull.Value && Riga["ID_CORRELATED"] != DBNull.Value) {
                                            newidel.Valore = "\\cms\\comm\\corr_doc_frameset.aspx?idcorr=" + Riga["ID_CORRELATED"].ToString() + "&idmarket=" + Riga["ID_MARKET"].ToString()
                                                + "&visInfo=no";
                                        }

                                    }
                                    // Inserisce i nuovi WidgetElement

                                    HibernateHelper.Persist(newidel, session);

                                    wid.WidgetElements.Add(newidel);
                                }
                            }
                            wid.Dirty = true;
                            HibernateHelper.Persist(wid, session);

                        }

                        transaction.Commit();

                        status = true;

                        return status;
                    } catch (Exception ex) {
                        transaction.Rollback();
                        return status;
                        throw ex;
                    } finally {
                        session.Flush();
                        session.Close();
                    }
                }
            }
        }
예제 #12
0
        public WidgetElementDTO SaveWidgetElement(WidgetElementDTO wid)
        {
            using (ISession session = HibernateHelper.GetSession().OpenSession()) {
                using (ITransaction transaction = session.BeginTransaction()) {
                    try {
                        WidgetElement widget = new WidgetElement();

                        Mapper.CreateMap<WidgetElementDTO, WidgetElement>();
                        Mapper.CreateMap<ElementDTO, Element>();

                        WidgetElementDTO widgetDTO = new WidgetElementDTO();
                        if (wid.IsNew || wid.Deleted) {
                            widget = Mapper.Map<WidgetElementDTO, WidgetElement>(wid);
                        } else {
                            widgetDTO = GetWidgetElement(wid.Widgetelementid);
                            widget = Mapper.Map<WidgetElementDTO, WidgetElement>(widgetDTO);
                        }

                        if (widget.Type == 0) {
                            widget.Type = 1;
                        }
                        if (widget.Name != null && widget.Widgetid > 0 && widget.Position > 0) {

                            if (wid.Dirty) {
                                if (widget.Name != wid.Name) {
                                    //Sto rinominando il link
                                    widget.Name = EditorServices.ReplaceCharacters(wid.Name);
                                } else {
                                    if (widget.Valore != wid.Valore) {
                                        widget.Valore = wid.Valore;
                                    }
                                }
                            }
                            widget.Dirty = wid.Dirty;
                            widget.Deleted = wid.Deleted;
                            widget.IsNew = wid.IsNew;

                            HibernateHelper.Persist(widget, session);

                        }

                        Mapper.CreateMap<WidgetElement, WidgetElementDTO>();
                        Mapper.CreateMap<Element, ElementDTO>();

                        //Mappo la PageDTO in Page
                        wid = Mapper.Map<WidgetElement, WidgetElementDTO>(widget);

                        transaction.Commit();

                    } catch (Exception ex) {
                        transaction.Rollback();
                        throw ex;
                    } finally {
                        session.Flush();
                        session.Close();
                    }
                }
                //Setto lo stato del content a non allineato
                WidgetDTO widg = new WidgetDTO();
                widg = GetWidget(wid.Widgetid);
                ContentServices contSvc = new ContentServices();
                contSvc.SetStateContent(widg.Contentid, (int)ContentStateEnum.NonAllineato);

                return wid;
            }
        }