Tirar Blocos do Perfil (e links do menu do usuário)

Tirar Blocos do Perfil (e links do menu do usuário)

por Marcelo Neiva -
Número de respostas: 2

Olá. (Coloquei esta dúvida no fórum de desenvolvimento por engano, desculpe a repetição)

Como eu tiro os Blocos e os links de preferências do menu do Perfil?

 

Sei que estou como administrador neste exemplo, mas quero tirar do usuário como 'Estudante'.

Em qual tela? => Veja que não estou dizendo ao editar o perfil, e sim aquela tela 'antes' de editar o perfil, ou seja, basta chamar o perfil e imediatamente abra essa tela.

 

Veja imagem anexo.

 

Obrigado,

Marcelo.

Anexo Tirar_Blocos_e_LinksMenu_Perfil.png
Em resposta à Marcelo Neiva

Re: Tirar Blocos do Perfil (e links do menu do usuário)

por Lino Vaz Moniz -

Marcelo,

Muitas configurações fazem parte do core do Moodle, ou seja, nem tudo tem opção de na interface para habilitar /desabilitar. 

Sugiro você fazer uma pesquisa na interface de administração do Moodle no endereço MOODLE_URL/admin/search.php  e tente localizar alguma configuração pela palavra chave menu ou preferences

Ao fazer a pesquisa, vai lhe apresentar todas as opções de configuração que tenha na chave a palavra pesquisada. Pode ser que tenha alguma opção para isso. 

Caso não encontre a solução pela interface, tente vasculhar isso nos arquivos de template mustache. Siga a lógica de customização que foi feito sobre timeline na página my moodle neste post: Remover linha de tempo ou timeline na página my do moodle. Use como referência para sua pesquisa. 

Em resposta à Lino Vaz Moniz

Re: Tirar Blocos do Perfil (e links do menu do usuário)

por Marcelo Neiva -

Este post é para tirar 'Blocos' e 'Itens' do "Perfil" do usuário.
Esta parte do perfil 'não' é quando está sendo editado e sim antes de editá-lo, ou seja, entrando no 'Perfil' onde está seu nome logado. (veja imagens no início desta postagem)

- Versão do Moodle: 3.8.2+ (Build: 20200327)
- Arquivos alterados: "tree.php" e "navigationlib.php"
-> moodle_url\user\classes\output\myprofile\tree.php
-> moodle_url\lib\navigationlib.php


Observações para as funções do arquivo "tree.php"
- Para saber o nome dos 'Itens' ou 'Blocos' que você deseja tirar, 'descomente' a linha "echo" que tem nos finais das funções e vá até a página e de F5, os texto irão aparecer no topo dos blocos.

A função "public function add_node(node $node)" é para tirar um único item do bloco
A função "protected function attach_nodes_to_categories()" é para tirar o bloco por completo.
A função "public function add_category(category $cat)" é apenas o bloco "Privacidade e Políticas"

 

FUNÇÔES ORIGINAIS
/**
* Add a node to the tree.
*
* @param node $node node object.
*
* @throws \coding_exception
*/
public function add_node(node $node) {
   $name = $node->name;
   if (isset($this->nodes[$name])) {
      throw new \coding_exception("Node name $name already used");
   }
   $this->nodes[$node->name] = $node; //Única linha ORIGINAL, sem a condicional acima.
}

// -----------------------------------------------------------------------------------------------------

/**
* Attach various nodes to their respective categories.
*
* @throws \coding_exception
*/
protected function attach_nodes_to_categories() {
   foreach ($this->nodes as $node) {
      $parentcat = $node->parentcat;
      if (!isset($this->categories[$parentcat]))
      {
         throw new \coding_exception("Category $parentcat doesn't exist");
      }
      else
      {
         $this->categories[$parentcat]->add_node($node);
      }
   }
}

// -----------------------------------------------------------------------------------------------------
/**
* Add a category to the tree.
*
* @param category $cat category object.
*
* @throws \coding_exception
*/
public function add_category(category $cat) {
   $name = $cat->name;
   if (isset($this->categories[$name])) {
      throw new \coding_exception("Category name $name already used");
   }
   $this->categories[$cat->name] = $cat;
}
// -----------------------------------------------------------------------------------------------------

 

FUNÇÔES ALTERADAS
Considerações: Adicione um único IF, veja que esse if tem uma negação ao conteúdo do mesmo, apenas para ficar fácil de adicionar vário itens.
Vamos supor que eu queira tirar 3 itens do Bloco "Relatórios", são eles: "Logs de hoje" , "Todos os acessos" e "Relatório completo"
O 'echo' irá mostrar vários itens, você tem que ter discernimento para saber quem é quem, no exemplo acima os itens mostrados pelo 'echo' eu peguei, respectivamente, esses: "todayslogs" , "alllogs" e "complete"
Observe os comentários dentro do código.
//######################################################################################################################################################
/**
* Add a node to the tree.
*
* @param node $node node object.
*
* @throws \coding_exception
*/
public function add_node(node $node) {
   $name = $node->name;
   if (isset($this->nodes[$name])) {
      throw new \coding_exception("Node name $name already used");
   }

   // Caso queira tirar um único item de dentro do Bloco (qualquer que seja), utilize essa condicional (caso tire todos os itens do bloco, o bloco desaparece)
   if (!(
          $node->name=='todayslogs' ||
          $node->name=='alllogs' ||
          $node->name=='complete'
      ))
   {
      $this->nodes[$node->name] = $node; //Única linha ORIGINAL, sem a condicional acima.
      //echo $node->name . ' - '; // (Utilize este 'Echo' para saber qual Item quer tirar)
   }
}

//####################################################################################################################################

/**
* Attach various nodes to their respective categories.
*
* @throws \coding_exception
*/
protected function attach_nodes_to_categories() {
   foreach ($this->nodes as $node) {
      $parentcat = $node->parentcat;
      if (!isset($this->categories[$parentcat]))
      {
          throw new \coding_exception("Category $parentcat doesn't exist");
      }
      else
      {
         //Condicional colocada para não aparecer os Blocos correspondentes ('Privacidade e Políticas' não entra aqui, veja acima para resolver)
         if (!(
                $parentcat=='miscellaneous' ||
                $parentcat=='reports' ||
                $parentcat=='coursedetails'
            ))
         {
             $this->categories[$parentcat]->add_node($node);
            //echo $parentcat . ' - '; // (Utilize este 'Echo' para saber qual Bloco quer tirar)
         }
      }
   }
}

//####################################################################################################################################

/**
* Add a category to the tree.
*
* @param category $cat category object.
*
* @throws \coding_exception
*/
public function add_category(category $cat) {
   $name = $cat->name;
   if (isset($this->categories[$name])) {
      throw new \coding_exception("Category name $name already used");
   }
   if ($name!='privacyandpolicies') //Só funciona para 'Privacidade e Políticas', se incluir outra categoria aqui dá pau!
   {
      $this->categories[$cat->name] = $cat;
   }
}

//####################################################################################################################################


Aqui é uma situação atípica e exclusiva para mim, quero dizer, meus cursos tem o mesmos dados, então não queria que mostrasse nada, mas quero compartilhar com vocês.

A FUNÇÃO ABAIXO ESTÁ NA LINHA: 5121 (ou se preferir procure pelo nome "Course preferences"

Observações para a condicional do arquivo "navigationlib.php"
Este arquivo é para os 'Menus suspensos', neste caso eu usei apenas para um item do menu, ou seja, quando você clica na engrenagem do nome do usuário dentro do 'Perfil', isso também vale para TODO o Moodle, seja onde estiverem.
Neste caso eu tirei o acesso a do menu "Preferências do Curso"
Quando você está no 'Perfil' ainda não editado, ao clicar em um curso, o mesmo mostra, na mesma tela do perfil, alguns dados do curso em questão, no meu caso esses dados não me interessavam, por isso eu os tirei.
Basta comentar TODO o IF

//Comentei todo o IF, para tirar o link do Perfil da chamada 'Preferências do curso'
// // Add "Course preferences" link.
// if (isloggedin() && !isguestuser($user)) {
//    if ($currentuser && has_capability('moodle/user:editownprofile', $systemcontext) ||
//       has_capability('moodle/user:editprofile', $usercontext)) {
//       $url = new moodle_url('/user/course.php', array('id' => $user->id, 'course' => $course->id));
//       $useraccount->add(get_string('coursepreferences'), $url, self::TYPE_SETTING, null, 'coursepreferences');
//    }
// }


//####################################################################################################################################


É isso, boa sorte e bom trabalho a todos.
Abraços,
Marcelo.