Colocando "publicar" no componente
Colocando "publicar" no componente
Olá caros amigos,
Estou desenvolvendo um componente e nele terá um campo chamado Estado, cujo as opções serão Publicado e Despublicado.
Ou seja, eu quero fazer com que o registro q eu cadastre no componente e coloque no campo Estado como Publicado apareça na Frontend enquanto q os Despublicados não aparecam. Semelhante ao Gerenciamneto de artigos padrão do Joomla.
É ai que está o meu problema não sei como fazer isso, se alguém souber por favor me avise.
Obrigado.
Estou desenvolvendo um componente e nele terá um campo chamado Estado, cujo as opções serão Publicado e Despublicado.
Ou seja, eu quero fazer com que o registro q eu cadastre no componente e coloque no campo Estado como Publicado apareça na Frontend enquanto q os Despublicados não aparecam. Semelhante ao Gerenciamneto de artigos padrão do Joomla.
É ai que está o meu problema não sei como fazer isso, se alguém souber por favor me avise.
Obrigado.
Re: Colocando "publicar" no componente
Esse componente tem essa opção:
http://extensions.joomla.org/extensions ... ssion/8656
veja o método unPublish no controlador
qualquer dúvida é só falar..
abraço
http://extensions.joomla.org/extensions ... ssion/8656
veja o método unPublish no controlador

qualquer dúvida é só falar..
abraço
Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
Eu consegui colocar a imagem e a função unPublish, mas quando clico sobre ela no estado Unpublish ela não muda para Publish e vice - versa.
Vocês saberiam dizer qual o motivo disso???
Obrigado
Vocês saberiam dizer qual o motivo disso???
Obrigado
Re: Colocando "publicar" no componente
Bom, vou tentar explicar 
basicamente é isso....
espero que ajude...
qualquer dúvida é só falar...
abraço

Código: Selecionar todos
function unPublish() {
$cid = JRequest::getInt('cid'); //pega o identificador do registro que será publicado
$db = &JFactory::getDBO(); //pega uma instancia do banco
require_once('models/frontenduserarticlelist.php'); // inclui a classe modelo
$fual_model = new FUALModelFrontendUserArticleList(); // instancia um objeto modelo
$item_content = $fual_model->getItem($cid); // retorna um objeto específico de acordo com o identificador
// essa parte do modelo nao precisa ser feita, basta que a partir DAQUI tu tenha um objeto stdClass que possua os atributos com os nomes iguais aos nomes dos campos da tua tabela no banco
if(is_object($item_content)) {
// $item_content é o objeto e no caso o state é o nome do campo da tabela que guarda 1 para publicado e 0 para despublicado
$item_content->state = ($item_content->state == 0) ? 1 : 0; // se o estado (state) atual for 0 (despublicado), o atributo é alterado para 1 (publicado), mas se for 1 é alterado para 0....
// nesse momento tu deve ter o teu objeto com o status alterado, e o método updateObject é o método que faz a alteração do registro no banco. O primeiro parametro é o nome da tua tabela, o segundo é o teu objeto e o terceiro é o nome do campo que tu usa como identificador do mesmo
$db->updateObject('#__content', $item_content, 'id');
}
// e aqui apenas um redirecionamento
$this->setRedirect("index.php?option=com_frontenduserarticlelist&view=frontenduserarticlelist");
}

qualquer dúvida é só falar...
abraço
Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
Na função Unpublish eu mudei.
Mas ai tenho q mudar a função:
<?php echo $this->lists['state']; ?>
para
<?php echo $this->lists['published']; ?>
????????????
Mas ai tenho q mudar a função:
<?php echo $this->lists['state']; ?>
para
<?php echo $this->lists['published']; ?>
????????????
Re: Colocando "publicar" no componente
Isso ai na views/default.php
Re: Colocando "publicar" no componente
O $this->lists['state']; que tem ali próximo a linha 42 apenas exibe o select que permite filtrar os registros e não influencia na ação de publicar ou despublicar um registro...
Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
O meu link está assim
index.php?option=com_curso&controller=curso&task=edit&cid[]='. $row->id
porém quando eu clico sobre ele a figura não está mudando, ou seja não fica publicado
Na onde deve estar o erro??????
index.php?option=com_curso&controller=curso&task=edit&cid[]='. $row->id
porém quando eu clico sobre ele a figura não está mudando, ou seja não fica publicado
Na onde deve estar o erro??????
Re: Colocando "publicar" no componente
o método unPublish foi colocado dentro do controller curso né?
então a tua task não vai ser edit, (pois cairá no método edit)
tente o link assim:
index.php?option=com_curso&controller=curso&task=unPublish&cid='. $row->id

então a tua task não vai ser edit, (pois cairá no método edit)
tente o link assim:
index.php?option=com_curso&controller=curso&task=unPublish&cid='. $row->id

Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
o meu código na default está assim:
<?php
if(true) {
$url = 'index.php?option=com_curso&controller=curso&task=unPublish&cid='. $row->id;
$link2 = JRoute::_($url);
echo "<a href='$link2'>";
}
$img = $this->baseurl . "/images/";
$img .= ($row->published) ? "publish_g.png" : "publish_r.png";
$alt = ($row->published) ? JText::_('Published') : JText::_('Unpublished');
echo "<img src='$img' alt='$alt' title='$alt' />";
if($this->access->canPublish) {
echo '</a>';
A função assim na controller:
function unPublish() {
$cid = JRequest::getInt('cid');
$itemid = JRequest::getInt('Itemid');
$db = &JFactory::getDBO();
$user = &JFactory::getUser();
$can_publish = $user->authorize('com_content', 'publish', 'content', 'all');
if($can_publish) {
$model = $this->getModel('cursos');
//require_once('administrator/components/com_curso/models/cursos.php');
$fual_model = new CursosModelCursos();
$item_content = $fual_model->getItem($cid);
if(is_object($item_content)) {
//change state to published or unpublished
$item_content->published = ($item_content->published == 0) ? 1 : 0;
$db->updateObject('#__curso', $item_content, 'id');
}
}
$this->setRedirect("index.php?option=com_curso");
}
}
<?php
if(true) {
$url = 'index.php?option=com_curso&controller=curso&task=unPublish&cid='. $row->id;
$link2 = JRoute::_($url);
echo "<a href='$link2'>";
}
$img = $this->baseurl . "/images/";
$img .= ($row->published) ? "publish_g.png" : "publish_r.png";
$alt = ($row->published) ? JText::_('Published') : JText::_('Unpublished');
echo "<img src='$img' alt='$alt' title='$alt' />";
if($this->access->canPublish) {
echo '</a>';
A função assim na controller:
function unPublish() {
$cid = JRequest::getInt('cid');
$itemid = JRequest::getInt('Itemid');
$db = &JFactory::getDBO();
$user = &JFactory::getUser();
$can_publish = $user->authorize('com_content', 'publish', 'content', 'all');
if($can_publish) {
$model = $this->getModel('cursos');
//require_once('administrator/components/com_curso/models/cursos.php');
$fual_model = new CursosModelCursos();
$item_content = $fual_model->getItem($cid);
if(is_object($item_content)) {
//change state to published or unpublished
$item_content->published = ($item_content->published == 0) ? 1 : 0;
$db->updateObject('#__curso', $item_content, 'id');
}
}
$this->setRedirect("index.php?option=com_curso");
}
}
Re: Colocando "publicar" no componente
Código: Selecionar todos
if(true) {
Código: Selecionar todos
if($this->access->canPublish) {
echo '</a>';

era pro php retornar um warning ao ler teu código

Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
no lugar do if(true)
eu coloquei:
if($this->access->canPublish && $row->published != -2)
Mas ai ele naum linka a imagem pq????
eu coloquei:
if($this->access->canPublish && $row->published != -2)
Mas ai ele naum linka a imagem pq????
Re: Colocando "publicar" no componente
é só ler o código...
se o usuário tem permissão para publicar, ele cria a tag A, senão, não
entao tem que verificar se o php chega a entrar no teu if......
se o usuário tem permissão para publicar, ele cria a tag A, senão, não

entao tem que verificar se o php chega a entrar no teu if......
Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
Mas para mim deveria aparecer...
Porque eu sou super administrador e posso publicar...
E pq naum está aparecendo???
Porque eu sou super administrador e posso publicar...
E pq naum está aparecendo???
Re: Colocando "publicar" no componente
não sei e nem tenho como saber...
tu vai ter que debugar o código e testar linha por linha dessa parte para ver o que o php está entendo disso tudo...
tu sabe usar var_dump() né?
se o canPublish retornar true e o published for diferente de -2 o teu link tem que aparecer....
tu vai ter que debugar o código e testar linha por linha dessa parte para ver o que o php está entendo disso tudo...
tu sabe usar var_dump() né?
Código: Selecionar todos
echo '<pre>'; var_dump($this->access->canPublish, $row->published); die();
Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br
Re: Colocando "publicar" no componente
Todos os dois apareceram NULL
Isso significa q ele naum achou nada naum eh???
O q pode ter acontecido???
Isso significa q ele naum achou nada naum eh???
O q pode ter acontecido???
Re: Colocando "publicar" no componente
sobre o $row->published nulo, existe um campo published na tua tabela do banco? se sim, esse valor está sendo solicitado na consulta??? se sim, ele está sendo colocado no atributo published do objeto stdClass que é criado com as informações do banco logo após a consulta?
sobre o canPublish, veja como eu fiz ali no componente que te passei....
no arquivo view.html.php , método display, tem isso né?
então... tu tem que preparar os objetos antes de enviar pro template... e isso se faz no view.html.php ....
sobre o canPublish, veja como eu fiz ali no componente que te passei....
no arquivo view.html.php , método display, tem isso né?
Código: Selecionar todos
$user = &JFactory::getUser();
//.......
// Create a user access object for the user
$access = new stdClass();
$access->canEdit = $user->authorize('com_content', 'edit', 'content', 'all');
$access->canEditOwn = $user->authorize('com_content', 'edit', 'content', 'own');
$access->canPublish = $user->authorize('com_content', 'publish', 'content', 'all');
//.......
$this->assignRef('access', $access);
Felipe Q. B.
http://wmfelipe.busanello.com.br
http://wmfelipe.busanello.com.br