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

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

por Marcelo Neiva -
Número de respostas: 0

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.