/Docs/07-Implementacion/Source/trunk/EDUAR_Regular/EDUAR/EDUAR_UI/EDUARMaster.Master.cs

http://blpm.googlecode.com/ · C# · 691 lines · 474 code · 54 blank · 163 comment · 76 complexity · 4c0d7a73279d69ec205cb9ac11f7a41d MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using EDUAR_BusinessLogic.Common;
  10. using EDUAR_Entities;
  11. using EDUAR_Entities.Security;
  12. using EDUAR_Entities.Shared;
  13. using EDUAR_UI.Shared;
  14. using EDUAR_UI.Utilidades;
  15. using EDUAR_Utility.Enumeraciones;
  16. using EDUAR_Utility.Excepciones;
  17. namespace EDUAR_UI
  18. {
  19. public partial class EDUARMaster : MasterPage, ICallbackEventHandler
  20. {
  21. #region --[Propiedades]--
  22. public Boolean EsExepcion
  23. {
  24. get { return (Boolean)ViewState["esExepcion"]; }
  25. set { ViewState["esExepcion"] = value; }
  26. }
  27. private string _callbackResult;
  28. /// <summary>
  29. /// Mantiene los datos del usuario logueado.
  30. /// </summary>
  31. public DTSessionDataUI ObjSessionDataUI
  32. {
  33. get
  34. {
  35. if (Session["ObjSessionDataUI"] == null)
  36. Session["ObjSessionDataUI"] = new DTSessionDataUI();
  37. return (DTSessionDataUI)Session["ObjSessionDataUI"];
  38. }
  39. set { Session["ObjSessionDataUI"] = value; }
  40. }
  41. /// <summary>
  42. /// Gets or sets the obj session persona.
  43. /// </summary>
  44. /// <value>
  45. /// The obj session persona.
  46. /// </value>
  47. public Persona objSessionPersona
  48. {
  49. get
  50. {
  51. if (Session["objSessionPersona"] == null)
  52. {
  53. BLPersona objBLPersona = new BLPersona(new Persona() { username = ObjSessionDataUI.ObjDTUsuario.Nombre });
  54. objBLPersona.GetPersonaByEntidad();
  55. //objSessionPersona = new Persona();
  56. objSessionPersona = objBLPersona.Data;
  57. }
  58. return (Persona)Session["objSessionPersona"];
  59. }
  60. set { Session["objSessionPersona"] = value; }
  61. }
  62. /// <summary>
  63. /// Gets or sets the ciclo lectivo actual.
  64. /// </summary>
  65. /// <value>
  66. /// The ciclo lectivo actual.
  67. /// </value>
  68. public CicloLectivo cicloLectivoActual
  69. {
  70. get
  71. {
  72. if (ViewState["cicloLectivoActual"] == null)
  73. {
  74. BLCicloLectivo objBLCicloLectivo = new BLCicloLectivo();
  75. cicloLectivoActual = objBLCicloLectivo.GetCicloLectivoActual();
  76. }
  77. return (CicloLectivo)ViewState["cicloLectivoActual"];
  78. }
  79. set { ViewState["cicloLectivoActual"] = value; }
  80. }
  81. #endregion
  82. #region --[Eventos]--
  83. /// <summary>
  84. /// Handles the Load event of the Page control.
  85. /// </summary>
  86. /// <param name="sender">The source of the event.</param>
  87. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  88. protected void Page_Load(object sender, EventArgs e)
  89. {
  90. try
  91. {
  92. //Llama a la funcionalidad que redirecciona a la pagina de Login cuando finaliza el tiempo de session
  93. ((EDUARBasePage)Page).DireccionamientoOnSessionEndScript();
  94. if (HttpContext.Current.User == null || (ObjSessionDataUI.ObjDTUsuario.Nombre == null && HttpContext.Current.User.Identity.Name != string.Empty))
  95. {
  96. HttpContext.Current.User = null;
  97. ObjSessionDataUI = null;
  98. }
  99. if (HttpContext.Current.User == null)
  100. NavigationMenu.DataSource = SiteMapAnonymusEDUAR;
  101. else
  102. if (HttpContext.Current.User.Identity.IsAuthenticated)
  103. {
  104. divInfo.Visible = true;
  105. CargaInforUsuario();
  106. // ~/Private/Manuales/{0}/index.htm
  107. string rol = string.Empty;
  108. if (HttpContext.Current.User.IsInRole(enumRoles.Administrador.ToString()))
  109. rol = enumRoles.Administrador.ToString();
  110. if (HttpContext.Current.User.IsInRole(enumRoles.Administrativo.ToString()))
  111. rol = enumRoles.Administrativo.ToString();
  112. if (HttpContext.Current.User.IsInRole(enumRoles.Alumno.ToString()))
  113. rol = enumRoles.Alumno.ToString();
  114. if (HttpContext.Current.User.IsInRole(enumRoles.Director.ToString()))
  115. rol = enumRoles.Director.ToString();
  116. if (HttpContext.Current.User.IsInRole(enumRoles.Docente.ToString()))
  117. rol = enumRoles.Docente.ToString();
  118. if (HttpContext.Current.User.IsInRole(enumRoles.Preceptor.ToString()))
  119. rol = enumRoles.Preceptor.ToString();
  120. if (HttpContext.Current.User.IsInRole(enumRoles.Psicopedagogo.ToString()))
  121. rol = enumRoles.Psicopedagogo.ToString();
  122. if (HttpContext.Current.User.IsInRole(enumRoles.Tutor.ToString()))
  123. rol = enumRoles.Tutor.ToString();
  124. if (!string.IsNullOrEmpty(rol) && ((HyperLink)Page.Master.FindControl("HeadLoginView").FindControl("linkAyuda")) != null)
  125. ((HyperLink)Page.Master.FindControl("HeadLoginView").FindControl("linkAyuda")).NavigateUrl = string.Format("~/Private/Manuales/{0}/index.htm", rol);
  126. #region --[Mensajes en header]--
  127. //StringBuilder s = new StringBuilder();
  128. //string er;
  129. // configura los llamados a RaiseCallbackEvent y GetCallbackResult
  130. //er = Page.ClientScript.GetCallbackEventReference(this, "clientTime('')", "putCallbackResult", "null", "clientErrorCallback", true);
  131. // funcion que llama a RaiseCallbackEvent
  132. //s.Append(" function callServerTask() { ");
  133. //s.Append((er + ";"));
  134. //s.Append(" } ");
  135. //// inserta el script en la pgina
  136. //Page.ClientScript.RegisterClientScriptBlock(
  137. // this.GetType(), "callServerTask", s.ToString(), true);
  138. // NOTA:
  139. // La función callServerTask() es llamada desde la function timerEvent()
  140. #endregion
  141. }
  142. else
  143. {
  144. NavigationMenu.DataSource = SiteMapAnonymusEDUAR;
  145. }
  146. NavigationMenu.MenuItemDataBound += (NavigationMenu_OnItemBound);
  147. NavigationMenu.DataBind();
  148. // Ocultar la ventana de información
  149. ventanaInfoMaster.Visible = false;
  150. //Suscribe los eventos de la ventana emergente.
  151. ventanaInfoMaster.VentanaAceptarClick += (Aceptar);
  152. ventanaInfoMaster.VentanaCancelarClick += (Cancelar);
  153. if (!Page.IsPostBack)
  154. CargarMenu();
  155. }
  156. catch (Exception ex)
  157. {
  158. ManageExceptions(ex);
  159. }
  160. }
  161. /// <summary>
  162. /// Cargas the infor usuario.
  163. /// </summary>
  164. private void CargaInforUsuario()
  165. {
  166. lblUsuario.Text = objSessionPersona.nombre + " " + objSessionPersona.apellido;
  167. lblRol.Text = ObjSessionDataUI.ObjDTUsuario.ListaRoles[0].Nombre + ": ";
  168. if (HttpContext.Current.User.IsInRole(enumRoles.Alumno.ToString()))
  169. {
  170. BLAlumno objBLAlumno = new BLAlumno(new Alumno() { username = ObjSessionDataUI.ObjDTUsuario.Nombre });
  171. AlumnoCursoCicloLectivo objCurso = objBLAlumno.GetCursoActualAlumno(cicloLectivoActual);
  172. lblCursosAsignados.Text = "Curso Actual: " + objCurso.cursoCicloLectivo.curso.nivel.nombre + " " + objCurso.cursoCicloLectivo.curso.nombre;
  173. }
  174. if (HttpContext.Current.User.IsInRole(enumRoles.Docente.ToString()))
  175. {
  176. BLCicloLectivo objBLCicloLectivo = new BLCicloLectivo();
  177. Asignatura objFiltro = new Asignatura();
  178. objFiltro.curso.cicloLectivo = cicloLectivoActual;
  179. //nombre del usuario logueado
  180. objFiltro.docente.username = HttpContext.Current.User.Identity.Name;
  181. List<Curso> listaCursos = objBLCicloLectivo.GetCursosByAsignatura(objFiltro);
  182. string cursos = string.Empty;
  183. if (listaCursos.Count > 0) cursos = "Cursos: <br />";
  184. int i = 1;
  185. listaCursos.Sort((p, q) => string.Compare(p.nombre, q.nombre));
  186. foreach (Curso item in listaCursos)
  187. {
  188. if (!cursos.Contains(item.nombre))
  189. {
  190. if (i % 2 == 0)
  191. cursos += item.nombre + " <br />";
  192. else
  193. cursos += item.nombre + " - ";
  194. i++;
  195. }
  196. }
  197. lblCursosAsignados.Text = cursos;
  198. }
  199. if (HttpContext.Current.User.IsInRole(enumRoles.Tutor.ToString()))
  200. {
  201. List<Tutor> lista = new List<Tutor>();
  202. lista.Add(new Tutor() { username = HttpContext.Current.User.Identity.Name });
  203. BLAlumno objBLAlumno = new BLAlumno(new Alumno() { listaTutores = lista });
  204. List<AlumnoCursoCicloLectivo> listaAlumnos = objBLAlumno.GetAlumnosTutor(cicloLectivoActual);
  205. string cursos = string.Empty;
  206. if (listaAlumnos.Count > 0) cursos = "Cursos: \n";
  207. foreach (AlumnoCursoCicloLectivo item in listaAlumnos)
  208. {
  209. if (!cursos.Contains(item.cursoCicloLectivo.curso.nivel.nombre + " " + item.cursoCicloLectivo.curso.nombre))
  210. {
  211. cursos += item.cursoCicloLectivo.curso.nivel.nombre + " " + item.cursoCicloLectivo.curso.nombre + " \n";
  212. }
  213. }
  214. lblCursosAsignados.Text = cursos;
  215. }
  216. }
  217. /// <summary>
  218. /// Handles the Click event of the btnMensaje control.
  219. /// </summary>
  220. /// <param name="sender">The source of the event.</param>
  221. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  222. protected void btnMensaje_Click(object sender, EventArgs e)
  223. {
  224. try
  225. {
  226. StringWriter sr = new StringWriter();
  227. HtmlTextWriter htm = new HtmlTextWriter(sr);
  228. ((ImageButton)Page.Master.FindControl("HeadLoginView").FindControl("btnMensaje")).Visible = false;
  229. ((ImageButton)Page.Master.FindControl("HeadLoginView").FindControl("btnMensaje")).RenderControl(htm);
  230. htm.Flush();
  231. Response.Redirect("~/Private/Mensajes/MsjeEntrada.aspx", false);
  232. }
  233. catch (Exception ex)
  234. {
  235. ManageExceptions(ex);
  236. }
  237. }
  238. /// <summary>
  239. /// Handles the Click event of the btnLogout control.
  240. /// </summary>
  241. /// <param name="sender">The source of the event.</param>
  242. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  243. protected void btnLogout_Click(object sender, EventArgs e)
  244. {
  245. try
  246. {
  247. UIUtilidades.EliminarArchivosSession(Session.SessionID);
  248. Response.Cookies.Clear();
  249. Session.Abandon();
  250. //HttpContext.Current = null;
  251. ObjSessionDataUI = null;
  252. objSessionPersona = null;
  253. FormsAuthentication.SignOut();
  254. Response.Redirect("~/Login.aspx", false);
  255. }
  256. catch (Exception ex)
  257. {
  258. ManageExceptions(ex);
  259. }
  260. }
  261. /// <summary>
  262. /// Método que cierra la sesión del usuario logueado.
  263. /// </summary>
  264. /// <param name="sender"></param>
  265. /// <param name="e"></param>
  266. protected void HeadLoginStatus_LoggingOut(object sender, LoginCancelEventArgs e)
  267. {
  268. try
  269. {
  270. UIUtilidades.EliminarArchivosSession(Session.SessionID);
  271. LoginStatus control = ((LoginStatus)Page.Master.FindControl("HeadLoginView").FindControl("HeadLoginStatus"));
  272. control.LogoutPageUrl = "~/Login.aspx";
  273. control.LogoutAction = LogoutAction.RedirectToLoginPage;
  274. Response.Cookies.Clear();
  275. //HttpContext.Current.User = null;
  276. Session.Abandon();
  277. FormsAuthentication.SignOut();
  278. }
  279. catch (Exception ex)
  280. {
  281. ManageExceptions(ex);
  282. }
  283. }
  284. /// <summary>
  285. /// Handles the PreRender event of the siteMapPathEDUAR control.
  286. /// </summary>
  287. /// <param name="sender">The source of the event.</param>
  288. /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
  289. protected void NavigationMenu_PreRender(object sender, EventArgs e)
  290. {
  291. //SiteMapNodeItem sepItem = new SiteMapNodeItem(-1, SiteMapNodeItemType.PathSeparator);
  292. //ITemplate sepTemplate = NavigationMenu.TemplateControl;
  293. //if (sepTemplate == null)
  294. //{
  295. // Literal separator = new Literal { Text = siteMapPathEDUAR.PathSeparator };
  296. // sepItem.Controls.Add(separator);
  297. //}
  298. //else
  299. // sepTemplate.InstantiateIn(sepItem);
  300. //sepItem.ApplyStyle(siteMapPathEDUAR.PathSeparatorStyle);
  301. if (SiteMapEDUAR.Provider.RootNode != null)
  302. {
  303. foreach (SiteMapNode node in SiteMapEDUAR.Provider.RootNode.ChildNodes)
  304. {
  305. if (!ValidarNodo(node))
  306. continue;
  307. trvMenu.Visible = true;
  308. MenuItem objMenuItem = new MenuItem(node.Title);
  309. if (node.Url != string.Empty)
  310. objMenuItem.NavigateUrl = node.Url;
  311. //Recorre los nodos hijos
  312. foreach (SiteMapNode nodeChild in node.ChildNodes)
  313. {
  314. if (!ValidarNodo(nodeChild))
  315. continue;
  316. MenuItem objMenuItemChild = new MenuItem(nodeChild.Title) { NavigateUrl = nodeChild.Url };
  317. objMenuItem.ChildItems.Add(objMenuItemChild);
  318. }
  319. if (objMenuItem.ChildItems.Count > 0 || objMenuItem.Text.Contains("Inicio"))
  320. NavigationMenu.Items.Add(objMenuItem);
  321. }
  322. }
  323. }
  324. /// <summary>
  325. /// Valida si el nodo se debe mostrar.
  326. /// Puede tener el atributo visible=false o puede que el perfil del usuario lo permita.
  327. /// </summary>
  328. /// <param name="node"></param>
  329. /// <returns></returns>
  330. protected Boolean ValidarNodo(SiteMapNode node)
  331. {
  332. //Si el nodo está marcado como visible False es porque solo se utiliza para que sea visible
  333. //en el menu superior y no se debe mostrar en el menu lateral
  334. Boolean isVisible;
  335. if (bool.TryParse(node["visible"], out isVisible) && !isVisible)
  336. return false;
  337. foreach (DTRol rolUsuario in ObjSessionDataUI.ObjDTUsuario.ListaRoles)
  338. {
  339. if (node.Roles.Contains(rolUsuario.Nombre))
  340. return true;
  341. }
  342. return false;
  343. }
  344. /// <summary>
  345. /// Click en botón aceptar de ventana de información / confirmación / error
  346. /// </summary>
  347. /// <param name="sender"></param>
  348. /// <param name="e"></param>
  349. void Aceptar(object sender, EventArgs e)
  350. {
  351. if (!EsExepcion)
  352. OnBotonClickAviso(BotonAvisoAceptar, e);
  353. }
  354. /// <summary>
  355. /// Click en botón Cancelar de ventana de información / confirmación / error
  356. /// </summary>
  357. /// <param name="sender"></param>
  358. /// <param name="e"></param>
  359. void Cancelar(object sender, EventArgs e)
  360. {
  361. if (!EsExepcion)
  362. OnBotonClickAviso(BotonAvisoCancelar, e);
  363. }
  364. /// <summary>
  365. /// Handles the OnItemBound event of the NavigationMenu control.
  366. /// </summary>
  367. /// <param name="sender">The source of the event.</param>
  368. /// <param name="args">The <see cref="System.Web.UI.WebControls.MenuEventArgs"/> instance containing the event data.</param>
  369. protected void NavigationMenu_OnItemBound(object sender, MenuEventArgs args)
  370. {
  371. args.Item.ImageUrl = ((SiteMapNode)args.Item.DataItem)["ImageUrl"];
  372. }
  373. #endregion
  374. #region --[Métodos Públicos]--
  375. /// <summary>
  376. /// Método que permite tratar las excepciones de forma standard.
  377. /// </summary>
  378. /// <param name="ex">Excepción a tratar</param>
  379. public void ManageExceptions(Exception ex)
  380. {
  381. try
  382. {
  383. string exceptionName = ex.GetType().FullName;
  384. string Titulo = string.Empty;
  385. string Detalle = string.Empty;
  386. enumTipoVentanaInformacion tipoVentana = enumTipoVentanaInformacion.Error;
  387. Detalle = ex.Message;
  388. if (exceptionName.Contains("CustomizedException"))
  389. {
  390. switch (((CustomizedException)ex).ExceptionType)
  391. {
  392. case enuExceptionType.BusinessLogicException:
  393. Titulo = "Error en Negocio";
  394. Detalle = "Se ha producido un error al realizar una acción en el negocio.";
  395. break;
  396. case enuExceptionType.SqlException:
  397. case enuExceptionType.MySQLException:
  398. case enuExceptionType.DataAccesException:
  399. Titulo = "Error en Base de Datos";
  400. Detalle = "Se ha producido un error al realizar una acción en la Base de Datos.";
  401. break;
  402. case enuExceptionType.ServicesException:
  403. Titulo = "Error en Servicio";
  404. Detalle = "Se ha producido un error al realizar la consulta al Servicio.";
  405. break;
  406. case enuExceptionType.IntegrityDataException:
  407. Titulo = "Error de Integridad de Datos";
  408. break;
  409. case enuExceptionType.ConcurrencyException:
  410. Titulo = "Error de Concurrencia";
  411. break;
  412. case enuExceptionType.ValidationException:
  413. //Esta es una excepcion de tipo validacion que viene de UI.
  414. Titulo = "Error de Validación";
  415. tipoVentana = enumTipoVentanaInformacion.Advertencia;
  416. //MostrarMensaje("Error de Validación", ex.Message, enumTipoVentanaInformacion.Advertencia);
  417. break;
  418. case enuExceptionType.SecurityException:
  419. Titulo = "Error de seguridad";
  420. tipoVentana = enumTipoVentanaInformacion.Advertencia;
  421. break;
  422. case enuExceptionType.WorkFlowException:
  423. break;
  424. case enuExceptionType.Exception:
  425. Titulo = "Error en la Aplicación";
  426. Detalle = "Se ha producido un error interno en la aplicación.";
  427. break;
  428. default:
  429. break;
  430. }
  431. if (Detalle != ex.Message) Detalle += " " + ex.Message;
  432. //Detalle += " " + ex.Message;
  433. MostrarMensaje(Titulo, Detalle, tipoVentana);
  434. if (tipoVentana != enumTipoVentanaInformacion.Advertencia)
  435. ManageExceptionsLog(ex);
  436. }
  437. //Esta es una excepcion de tipo validacion que viene de BL.
  438. else if ((exceptionName.Contains("GenericException")))
  439. {
  440. ///GenericException genericEx = ((GenericException)ex).Detail;
  441. if (((CustomizedException)ex).ExceptionType == enuExceptionType.ValidationException)
  442. MostrarMensaje("Error de Validación", ex.Message, enumTipoVentanaInformacion.Advertencia);
  443. else
  444. ventanaInfoMaster.GestionExcepciones(ex);
  445. }
  446. else
  447. ventanaInfoMaster.GestionExcepciones(ex);
  448. // Refrescar updatepanel
  449. updVentaneMensajes.Update();
  450. EsExepcion = true;
  451. }
  452. catch (Exception exNew)
  453. {
  454. ventanaInfoMaster.GestionExcepciones(exNew);
  455. }
  456. }
  457. /// <summary>
  458. /// Método que guardar un log
  459. /// </summary>
  460. /// <param name="exepcionControlada">Excepcion que se va a guardar</param>
  461. public void ManageExceptionsLog(Exception exepcionControlada)
  462. {
  463. try
  464. {
  465. ventanaInfoMaster.GestionExcepcionesLog(exepcionControlada);
  466. }
  467. catch (Exception ex)
  468. {
  469. ManageExceptions(ex);
  470. }
  471. }
  472. /// <summary>
  473. /// Metodo que se encarga de mostrar mensajes en la aplicacion.
  474. /// </summary>
  475. /// <param name="titulo"></param>
  476. /// <param name="detalle"></param>
  477. /// <param name="tipoventana"></param>
  478. public void MostrarMensaje(string titulo, string detalle, enumTipoVentanaInformacion tipoventana)
  479. {
  480. try
  481. {
  482. EsExepcion = false;
  483. ventanaInfoMaster.TipoVentana = tipoventana;
  484. ventanaInfoMaster.Titulo = titulo;
  485. ventanaInfoMaster.Detalle = detalle;
  486. ventanaInfoMaster.MostrarMensaje();
  487. // Refrescar updatepanel
  488. updVentaneMensajes.Update();
  489. }
  490. catch (Exception ex)
  491. {
  492. ManageExceptions(ex);
  493. }
  494. }
  495. /// <summary>
  496. /// Metodo que se encarga de ocultar los mensajes en la aplicacion.
  497. /// </summary>
  498. public void OcultarMensaje()
  499. {
  500. try
  501. {
  502. ventanaInfoMaster.OcultarMensaje();
  503. // Refrescar updatepanel
  504. updVentaneMensajes.Update();
  505. }
  506. catch (Exception ex)
  507. {
  508. ManageExceptions(ex);
  509. }
  510. }
  511. /// <summary>
  512. /// Procesa un evento de devolución de llamada que tiene como destino un control.
  513. /// </summary>
  514. /// <param name="eventArgument">Cadena que representa un argumento del evento que se pasará al controlador de eventos.</param>
  515. public void RaiseCallbackEvent(string eventArgument)
  516. {
  517. if (!Page.Request.Url.ToString().Contains("MsjeEntrada"))
  518. {
  519. StringWriter sr = new StringWriter();
  520. HtmlTextWriter htm = new HtmlTextWriter(sr);
  521. //HyperLink link = ((HyperLink)Page.Master.FindControl("HeadLoginView").FindControl("lnkMensajes"));
  522. ImageButton boton = ((ImageButton)Page.Master.FindControl("HeadLoginView").FindControl("btnMensaje"));
  523. if (HttpContext.Current.User != null)
  524. {
  525. BLMensaje objBLMensaje = new BLMensaje();
  526. List<Mensaje> objMensajes = new List<Mensaje>();
  527. objMensajes = objBLMensaje.GetMensajes(new Mensaje() { destinatario = new Persona() { username = ObjSessionDataUI.ObjDTUsuario.Nombre }, activo = true });
  528. objMensajes = objMensajes.FindAll(p => p.leido == false);
  529. if (boton != null)
  530. {
  531. boton.Visible = true;
  532. if (objMensajes.Count > 0)
  533. {
  534. boton.ImageUrl = "/EDUAR_UI/Images/mail-new-message.gif";
  535. //link.AlternateText = "Nuevo Mensaje!";
  536. boton.ToolTip = "Nuevo Mensaje!";
  537. }
  538. else
  539. {
  540. boton.ImageUrl = "/EDUAR_UI/Images/mail-inbox.png";
  541. //btnMail.AlternateText = "Mensajes";
  542. boton.ToolTip = "Mensajes";
  543. }
  544. //boton.NavigateUrl = "Private/Mensajes/MsjeEntrada.aspx";
  545. boton.RenderControl(htm);
  546. htm.Flush();
  547. //htm = new HtmlTextWriter(sr);
  548. //boton.RenderControl(htm);
  549. //htm.Flush();
  550. }
  551. }
  552. else
  553. {
  554. boton.ImageUrl = "";
  555. boton.Visible = false;
  556. boton.RenderControl(htm);
  557. htm.Flush();
  558. }
  559. _callbackResult = sr.ToString();
  560. }
  561. }
  562. /// <summary>
  563. /// Devuelve los resultados de un evento de devolución de llamada que tiene como destino un control.
  564. /// </summary>
  565. /// <returns>
  566. /// Resultado de la devolución de llamada.
  567. /// </returns>
  568. public string GetCallbackResult()
  569. {
  570. // ésta variable es pasada al argumento de putCallbackResult
  571. return _callbackResult;
  572. }
  573. #endregion
  574. #region --[Métodos Privados]--
  575. /// <summary>
  576. /// Cargars the menu.
  577. /// </summary>
  578. private void CargarMenu()
  579. {
  580. if (SiteMapEDUAR.Provider.RootNode != null)
  581. {
  582. foreach (SiteMapNode node in SiteMapEDUAR.Provider.RootNode.ChildNodes)
  583. {
  584. if (!ValidarNodo(node))
  585. continue;
  586. trvMenu.Visible = true;
  587. TreeNode objTreeNode = new TreeNode(node.Title);
  588. if (node.Url != string.Empty)
  589. objTreeNode.NavigateUrl = node.Url;
  590. objTreeNode.SelectAction = TreeNodeSelectAction.Expand;
  591. //Recorre los nodos hijos
  592. foreach (SiteMapNode nodeChild in node.ChildNodes)
  593. {
  594. if (!ValidarNodo(nodeChild))
  595. continue;
  596. TreeNode objTreeNodeChild = new TreeNode(nodeChild.Title) { NavigateUrl = nodeChild.Url };
  597. objTreeNode.ChildNodes.Add(objTreeNodeChild);
  598. }
  599. if (objTreeNode.ChildNodes.Count > 0 || objTreeNode.Text.Contains("Inicio"))
  600. trvMenu.Nodes.Add(objTreeNode);
  601. }
  602. trvMenu.ExpandAll();
  603. }
  604. }
  605. #endregion
  606. #region --[Delegados]--
  607. /// <summary>
  608. /// Delegado para capturar el evento de click sobre aceptar / cancelar en ventana de aviso
  609. /// </summary>
  610. /// <param name="sender"></param>
  611. /// <param name="e"></param>
  612. public delegate void MasterPageAvisoClickHandler(object sender, EventArgs e);
  613. /// <summary>
  614. /// Evento click sobre botón aceptar de ventana de aviso
  615. /// </summary>
  616. public event MasterPageAvisoClickHandler BotonAvisoAceptar;
  617. /// <summary>
  618. /// Evento click sobre botón cancelar de ventana de aviso
  619. /// </summary>
  620. public event MasterPageAvisoClickHandler BotonAvisoCancelar;
  621. /// <summary>
  622. /// Invoca los delegados al evento de click al botón, para que los eventos de
  623. /// aceptar / cancelar puedan ser controlados desde las páginas "hijas" al masterpage
  624. /// </summary>
  625. /// <param name="sender"></param>
  626. /// <param name="e">Argumentos del evento</param>
  627. protected virtual void OnBotonClickAviso(MasterPageAvisoClickHandler sender, EventArgs e)
  628. {
  629. if (sender != null)
  630. {
  631. //Invoca los delegados
  632. sender(this, e);
  633. }
  634. }
  635. #endregion
  636. }
  637. }