• R/O
  • SSH
  • HTTPS

zostportal: Commit


Commit MetaInfo

Revision103 (tree)
Time2021-01-28 03:05:26
Authorderekwildstar

Log Message

Criado o override para o controlador article do component com_content do Joomla para permitir a criação de uma task para salvar e recarregar a tela de edição de um artigo, sem o fechar

/html/com_content/form/edit.php
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Alterado para fazer referência ao controlador "zost_article"

Change Summary

Incremental Difference

--- trunk/Projetos/Sobreposições/components/com_content/controllers/zost_article.php (nonexistent)
+++ trunk/Projetos/Sobreposições/components/com_content/controllers/zost_article.php (revision 103)
@@ -0,0 +1,41 @@
1+<?php
2+/*******************************************************************************
3+Nome:
4+ components/com_content/controllers/zost_article.php
5+
6+Descrição:
7+ Este arquivo sobrescreve o arquivo controlador article.php do Joomla e deve
8+ ser colocado no diretório indicado acima. Para usá-lo basta usar,
9+ "zosta_article.task" onde isso fizer sentido, por exemplo, dentro do arquivo
10+ "zost_basicblack/html/com_content/form/edit.php". Task pode ser qualquer
11+ método público contido na classe atual ou nas suas classes ancestrais
12+
13+Mais informações:
14+ Dentre os arquivos de backup existe o arquivo
15+ "zost\Projetos\Sobreposições\Change Joomla Without Core Hacks.pdf"
16+
17+Use get_included_files() e get_defined_vars() para obter informações importantes
18+*******************************************************************************/
19+defined("_JEXEC") or die("Restricted access");
20+
21+require_once("article.php");
22+
23+class ContentControllerZost_article extends ContentControllerArticle {
24+ public function save($key = null, $urlVar = 'a_id') {
25+ // executar o método save da classe pai também vai configurar um
26+ // redirecionamento, mas perceba que lá existem chamadas a setRedirect,
27+ // o que significa que está sendo configurado um url para
28+ // redirecionamento, o qual será feito posteriormente pelo Joomla. Isso
29+ // significa que é válido chamar os métodos pais aqui, pois o
30+ // redirecionamento só será feito depois da execução da função e aqui
31+ // seria possível até mesmo configurar um outro redirecionamento,
32+ // sobrescrenvendo aquele que fora configurado anteriormente em
33+ // parent::save
34+ parent::save($key,$urlVar);
35+ return parent::edit($key,$urlVar);
36+ }
37+
38+ public function saveAndClose($key = null, $urlVar = 'a_id') {
39+ return parent::save($key,$urlVar);
40+ }
41+}
\ No newline at end of file
--- trunk/Projetos/Sobreposições/Leia-me.txt (nonexistent)
+++ trunk/Projetos/Sobreposições/Leia-me.txt (revision 103)
@@ -0,0 +1,9 @@
1+Esta pasta contém sobreposições (overrides) que devem ser adicionados às pastas de sistema do próprio Joomla, com o intuito de sobrescrever certos comportamentos. Como o Joomla não permite este tipo de sobreposição de forma facilitada, a única forma de mudar o comportamento de certas coisas é criando sobreposições de arquivos e classes existentes e utilizando-as no lugar dos arquivos e classes originais. Isso envolve copiar arquivos para as pastas de sistema do Joomla, mas a vantagem de fazer desta forma é que esse tipo de sobreposição não vai ser revertido por eventuais atualizações do Joomla, que normalmente só alteram seus próprios arquivos.
2+
3+O exemplo básico disso é a modificação do método (task) "save", do controlador "article" do componente "com_content" do Joomla. Originalmente esta task salva e fecha o artigo, porém eu precisava que esta tarefa apenas salvesse o artigo e para isso eu preciso sobrescrever o método save dentro do controlador article e a única forma de fazer isso é criando um novo controlador com o método save modificado e usar o novo controlador no arquivo "edit.php" do layout "form" de com_content
4+
5+O layout da pasta atual segue o layout das pastas de sistema do joomla a fim de facilitar a instalação de tais overrides. Arquivos que precisam ser sobrescritos devem ser nomeados de acordo com o seguinte exemplo:
6+
7+Arquivo original = article.php
8+Arquivo sobrescrito = zost_article.php
9+
--- trunk/Projetos/Templates/zost_basicblack/html/com_content/form/edit.php (revision 102)
+++ trunk/Projetos/Templates/zost_basicblack/html/com_content/form/edit.php (revision 103)
@@ -5,7 +5,9 @@
55
66 Descrição:
77 Script responsável por renderizar o componente que exibe a página de edição
8- de conteúdos
8+ de conteúdos. Este arquivo faz uso do controlador modificado "zost_article",
9+ o qual precisa ser adicionado a "components\com_content\controllers" para
10+ que os botões de salvamento e cancelamento funcionem
911
1012 Variáveis definidas por padrão:
1113 $this (ContentViewForm)
@@ -422,8 +424,9 @@
422424 </script>
423425 <form action="<?php echo JRoute::_('index.php?option=com_content&a_id=' . (int) $this->item->id); ?>" method="post" name="adminForm" id="adminForm">
424426 <div class="btn-group" style="float: right; height: 35px;">
425- <button class="btn btn-primary btn-sm" style="width: 100px" type="submit" name="task" value="article.save"><?php echo(JText::_("JSAVE")); ?></button>
426- <button class="btn btn-primary btn-sm" style="width: 100px" type="submit" name="task" value="article.cancel" formnovalidate="formnovalidate"><?php echo(JText::_("JCANCEL")); ?></button>
427+ <button class="btn btn-primary btn-sm" style="width: 100px" type="submit" name="task" value="zost_article.save"><?php echo(JText::_("JSAVE")); ?></button>
428+ <button class="btn btn-primary btn-sm" style="width: 100px" type="submit" name="task" value="zost_article.saveAndClose">Salvar e Fechar</button>
429+ <button class="btn btn-primary btn-sm" style="width: 100px" type="submit" name="task" value="zost_article.cancel" formnovalidate="formnovalidate"><?php echo(JText::_("JCANCEL")); ?></button>
427430 </div>
428431 <ul class="nav nav-tabs" id="<?php echo($this->tab_name) ?>-tabs">
429432 <li class="nav-item"><a class="nav-link active small" data-toggle="tab" href="#<?php echo($this->tab_name) ?>-tab-1"><?php echo(JText::_('COM_CONTENT_ARTICLE_CONTENT')); ?></a></li>
--- trunk/Leia-me.txt (revision 102)
+++ trunk/Leia-me.txt (revision 103)
@@ -1,3 +1,5 @@
11 1. A pasta "Backup" contém o backup incremental do site (arquivos .rar e sql)
22 2. A pasta "Projetos" contém todos os projetos responsáveis por gerar o site como se conhece. Verifique os arquivos
3- leia-me dentro desta pasta para mais informações
\ No newline at end of file
3+ leia-me dentro desta pasta para mais informações
4+3. A pasta "Projetos\Componentes" contém o componente de exemplo Zost (com_zost) que demonstra como criar um componente Joomla, incluindo o entendimento de controllers e tasks
5+4. A pasta "Projetos\Controladores" contém overrides de controladores do Joomla, pois não é possível sobrescrever controladores normalmente. Leia o arquivo leia-me.txt dentro da pasta para saber mais
\ No newline at end of file
Show on old repository browser