/// <summary>
 /// 	Prende un oggetto del tipo PagineComuni da una colonna di chiave univoca
 /// </summary>
 public static SezioniSito GetItem(string nome)
 {
     SiteConfigurationSezione pagina = SiteManager.SiteConfiguration.SezioniSito.Where(p => p.Nome.ToLower() == nome.ToString().ToLower()).FirstOrDefault();
     if (pagina == null) return null;
     var sezioni = new SezioniSito
     {
         Contenuto = pagina.Contenuto,
         Nome = pagina.Nome,
     };
     return sezioni;
 }
        /// <summary>
        /// 	Elimina un oggetto del tipo Sezioni
        /// </summary>
        public static bool Delete(out string avviso, SezioniSito sezioni)
        {
            avviso = string.Empty;

            if (sezioni == null) return false;

            SezioniSito sistema = sezioni;
            SiteConfigurationSezione pagina = SiteManager.SiteConfiguration.SezioniSito.Where(s => s.Nome == sistema.Nome).FirstOrDefault();
            if (pagina == null) return false;

            SiteManager.SiteConfiguration.SezioniSito = SiteManager.SiteConfiguration.SezioniSito.Except(SiteManager.SiteConfiguration.SezioniSito.Where(s => s.Nome == sistema.Nome)).ToArray();
            SiteManager.SaveXml();

            return true;
        }
        /// <summary>
        /// 	Salva o aggiorna un oggetto del tipo Sezioni da una colonna di chiave univoca
        /// </summary>
        public static bool Save(out string avviso, ref SezioniSito sezioni)
        {
            avviso = string.Empty;

            if (sezioni == null) return false;

            if (!sezioni.Validate())
            {
                avviso = sezioni.BrokenRules.ToString();
                return false;
            }

            //Controllo che il nome non sia uguale al nome di una sezione di sistema
            bool invalidName = false;
            foreach (var name in Enum.GetNames(typeof(SezioniSistema.SezioniSistemaEnum)))
                if (name.ToLower() == sezioni.Nome.ToLower()) invalidName = true;

            if (invalidName)
            {
                avviso = "- Il nome specificato è utilizzato da una sezione di sistema";
                return false;
            }

            SezioniSito sistema = sezioni;
            SiteConfigurationSezione pagina = SiteManager.SiteConfiguration.SezioniSito.Where(s => s.Nome.ToLower() == sistema.Nome.ToLower()).FirstOrDefault();

            bool inserimento = false;
            if (pagina == null)
            {
                pagina = new SiteConfigurationSezione();
                inserimento = true;
            }

            pagina.Nome = sezioni.Nome;
            pagina.Contenuto = sezioni.Contenuto;

            if (inserimento)
            {
                var arrayList = new ArrayList(SiteManager.SiteConfiguration.SezioniSito);
                arrayList.Add(pagina);
                SiteManager.SiteConfiguration.SezioniSito = (SiteConfigurationSezione[])arrayList.ToArray(typeof(SiteConfigurationSezione));
            }

            SiteManager.SaveXml();

            return true;
        }
        protected void ButtonSalvaClick(object sender, EventArgs e)
        {
            FancyLink = "/amministratore/popup/sito/sezioni/sezionisito.htm";

            if (__TreeView_SezioniSistema.SelectedNode != null)
            {
                SezioniSistema.SezioniSistemaEnum sezioniSistemaEnum;
                if (!Enum.TryParse(__TreeView_SezioniSistema.SelectedNode.Text, true, out sezioniSistemaEnum))
                {
                    MessageBox("Questa è una sezione di raggruppamento, impossibile salvare in questo nodo");
                    return;
                }

                var paginaSistema = SezioniSistema.GetItem((SezioniSistema.SezioniSistemaEnum)Enum.Parse(typeof(SezioniSistema.SezioniSistemaEnum), __TreeView_SezioniSistema.SelectedNode.Text));
                paginaSistema.Contenuto = __TextBox_Contenuto.Text;

                FancyLink = "/amministratore/popup/sito/sezioni/" + paginaSistema.Nome + ".htm";

                if (!SezioniSistema.Save(out Avviso, ref paginaSistema)) MessageBox(Avviso);
                else MessageBoxOk();

                return;
            }

            if (__TreeView_SezioniSito.SelectedNode != null)
            {
                var paginaSito = SezioniSito.GetItem(__TreeView_SezioniSito.SelectedValue);
                if (paginaSito == null) return;

                paginaSito.Nome = HttpUtility.HtmlEncode(__TextBox_Nome.Text);
                paginaSito.Contenuto = __TextBox_Contenuto.Text;

                if (!SezioniSito.Save(out Avviso, ref paginaSito)) MessageBox(Avviso);
                else
                {
                    MessageBoxOk();
                    LoadData();
                }

                return;
            }

            //Se non è selezionato niente aggiungo una pagina sito
            var pSito = new SezioniSito();

            pSito.Nome = HttpUtility.HtmlEncode(__TextBox_Nome.Text);
            pSito.Contenuto = __TextBox_Contenuto.Text;

            if (!SezioniSito.Save(out Avviso, ref pSito)) MessageBox(Avviso);
            else MessageBoxOk();

            LoadData();
        }