private void EstilizarPagina(Usuario usuarioLogado, ManterPagina manterPagina, Dominio.Classes.Pagina paginaAtual) { string estilo; string nomePagina; if (paginaAtual.Profundidade == 1) { estilo = paginaAtual.Estilo; nomePagina = paginaAtual.Nome; } else { var menuAtual = manterPagina.ObterMenuPai(paginaAtual); if (menuAtual == null) { RedirecionarPaginaInexistente(usuarioLogado, manterPagina, enumPermissaoPagina.PaginaInexistente); return; } estilo = menuAtual.Estilo; nomePagina = menuAtual.Nome; } MainBody.Attributes["class"] = estilo; NomeLocalizacao.InnerText = nomePagina; }
private void PreencherSidebar(ManterPagina manterPagina, Usuario usuarioLogado, Dominio.Classes.Pagina paginaAtual) { if (paginaAtual.CaminhoRelativo.ToLower() == "/paginas.aspx") { // Esconde o sidebar e coloca a página em largura máxima. sidebar.Visible = false; contentArea.Attributes.Remove("class"); } else { // Coloca a página em largura reduzida para caber o sidebar. contentArea.Attributes["class"] = "col-sm-9 conteudo_busca content-area"; // Obtém o menu atual para filtrar somente pelas páginas dentro desse Menu. var menuAtual = paginaAtual.Profundidade == (int)enumTipoPagina.Menu ? paginaAtual : manterPagina.ObterMenuPai(paginaAtual); // Obtém todas as páginas com filtro. var paginas = manterPagina.ObterTodasPaginas(true).Where(p => p.PossuiPermissao(usuarioLogado) && p.IsFilhoDe(menuAtual)).ToList(); var sidebarRow = new HtmlGenericControl("div"); sidebarRow.Attributes["class"] = "row"; var sidebarDiv = new HtmlGenericControl("div"); sidebarDiv.Attributes["class"] = "col-sm-12"; // Preencher os agrupadores foreach (var agrupador in paginas.Where(p => p.Profundidade == 2 && p.PossuiFilho() && p.PossuiPermissao(usuarioLogado))) { var row = new HtmlGenericControl("div"); row.Attributes["class"] = "row"; var box = new HtmlGenericControl("div"); box.Attributes["class"] = "box"; var subtitulo = new HtmlGenericControl("div"); subtitulo.Attributes["class"] = "subtitulo"; var nome = new HtmlGenericControl("h3"); nome.InnerHtml = agrupador.Nome; if (agrupador.IsPaiOuIguala(paginaAtual)) { nome.Attributes.Add("class", "text-bold"); } var contentBody = new HtmlGenericControl("div"); contentBody.Attributes["class"] = "contentBody"; var ul = new HtmlGenericControl("ul"); ul.Attributes.Add("class", "links"); // Preencher as páginas foreach (var pagina in paginas.Where(p => p.Profundidade == 3 && p.IsFilhoDe(agrupador))) { var li = new HtmlGenericControl("li"); li.Attributes.Add("class", "menu-item"); var linkPagina = new HtmlGenericControl("a"); linkPagina.Attributes.Add("class", "menu-nome" + (pagina.IsPaiOuIguala(paginaAtual) ? " text-bold" : "")); linkPagina.Attributes.Add("tittle", "Abrir " + pagina.Nome); linkPagina.Attributes.Add("href", pagina.CaminhoRelativo); linkPagina.InnerHtml = pagina.Nome; var actions = new HtmlGenericControl("span"); actions.Attributes.Add("class", "actions visible-md visible-lg"); // Preencher cadastro foreach (var cadastro in paginas.Where(p => p.Profundidade == 4 && p.IsFilhoDe(pagina))) { var cadastroIcon = new HtmlGenericControl("a"); cadastroIcon.Attributes.Add("href", cadastro.CaminhoRelativo); cadastroIcon.Attributes.Add("class", "glyphicon glyphicon-" + cadastro.IconeMenu + " " + (cadastro.IsPaiOuIguala(paginaAtual) ? "link-no-underline" : " menu-relatar")); actions.Controls.Add(cadastroIcon); } var linkIcon = new HtmlGenericControl("a"); linkIcon.Attributes.Add("href", pagina.CaminhoRelativo); // Insere ícone padrão do agrupador ou ícone personalizado caso tenha sido informado. linkIcon.Attributes.Add("class", "glyphicon glyphicon-" + (string.IsNullOrEmpty(pagina.IconeMenu) ? agrupador.IconePaginas : pagina.IconeMenu) + " " + (pagina.ID == paginaAtual.ID ? "link-no-underline" : "menu-relatar")); actions.Controls.Add(linkIcon); li.Controls.Add(linkPagina); li.Controls.Add(actions); ul.Controls.Add(li); } // Insere os controles em hierarquia. contentBody.Controls.Add(ul); subtitulo.Controls.Add(nome); subtitulo.Controls.Add(contentBody); box.Controls.Add(subtitulo); row.Controls.Add(box); sidebarDiv.Controls.Add(box); } sidebarRow.Controls.Add(sidebarDiv); sidebar.Controls.Add(sidebarRow); } }