mostrar apenas artigos do usuário atual na exibição de categoria usando o plug-in
<p>olá, estou tentando escrever um plug-in de conteúdo que mostrará apenas artigos escritos pelo usuário conectado no momento na exibição de categoria.</p><p>usando os gatilhos oncontentprepare e oncontentbeforedisplay, posso identificar o usuário conectado no momento e se o artigo pertence a eles de maneira simples.</p><p>o próximo passo <strong>não está exibindo o artigo</strong> é muito mais complicado e não consegui descobrir isso.</p><p>portanto, existe uma maneira de não mostrar facilmente um artigo usando esses gatilhos de plug-in?</p><p>claro, aqui está o código:</p><pre><code>function oncontentbeforedisplay($context, &amp;$article, &amp;$params, $limit=0) { $name = jfactory::getuser()-&gt;name; $author = $article-&gt;author; if ($author != $name) { /* ? */ } // var\_dump($article); // var\_dump($params); // var\_dump($context); return ""; } </code></pre>
<p>você não precisa de um plugin para isso. apenas <a href="http://www.ostraining.com/blog/joomla/overrides/">substitua</a> uma visualização de categoria e faça seu cheque lá.</p><p>por exemplo, para a substituição da exibição do blog <a href="https://github.com/joomla/joomla-cms/blob/staging/components/com\_content/views/category/tmpl/blog.php">blog.php</a> e na linha 60 faça sua verificação:</p><pre><code>if ($item-&gt;created\_by == jfactory::getuser()-&gt;id) : echo $this-&gt;loadtemplate('item'); } endif; </code></pre><p>é claro que isso é apenas um exemplo, mas mostra o poder de substituir. espero que isso ajude.</p>
<p>fala ai allan, tudo bem? acredito que seja apenas uma questão de versão mesmo.</p>
<p><a href="https://www.electronjs.org/docs/api/browser-window#evento-close" rel="nofollow">https://www.electronjs.org/docs/api/browser-window#evento-close</a></p>
<p>nesse <em>link</em> informa que existe o evento <code>close</code>, ele será emitido quando a janela estiver para ser fechada.</p>
<p>espero ter ajudado.</p> <p>posso ver sua classe de usuário? isso é apenas usando as restrições abaixo. não vejo por que as restrições seriam realmente diferentes de exemplos (acho que os campos nulos são ignorados por padrão nos exemplos).</p><pre><code>getcurrentsession().createcriteria(user.class) .setprojection( projections.distinct( projections.projectionlist() .add( projections.property("name"), "name") .add( projections.property("city"), "city"))) .add( restrictions.eq("city", "test"))) .setresulttransformer(transformers.aliastobean(user.class)) .list(); </code></pre><p>eu nunca usei o alaisttobean, mas acabei de ler sobre isso. você também pode passar por cima dos resultados.</p><pre><code>list&lt;object&gt; rows = criteria.list(); for(object r: rows){ object[] row = (object[]) r; type t = ((&lt;type&gt;) row[0]); } </code></pre><p>se precisar, você pode preencher manualmente o usuário dessa maneira.</p><p>é difícil analisar o problema sem mais algumas informações para diagnosticar o problema.</p> <p>oi felipe, blz?</p>
<p>o writehead() serve para passar os headers http corretos conforme a regra de negócio.</p>
<p>caso ele não seja passado, o cliente não tem como saber o tipo do retorno.</p>
<p>o que acontece é que o navegador é um cliente bastante inteligente e ele já consegue inferir que o tipo do documento é um html, mesmo sem a informação do content-type, pq o seu conteudo inicia com a tag <code>html</code>.</p>
<p>caso a url seja acessada a partir de um cliente que não faz esse tratamento, ele exibiria um texto plano.</p>
<p>você pode fazer um teste para validar essa resposta alterando o conteudo da resposta para que ele não mais inicie com a tag <code>html</code>.</p>
<p>se vc fizer isso, verá que o navegador passa a exibir o conteudo como texto plano normal.</p>
<p>depois compartilha aqui se a explicação te ajudou. &#61;)</p> <p>eu sugeriria ter duas áreas separadas - uma onde o usuário faz entradas descrevendo sua disponibilidade e outra em que o sistema exibe o resultado agregado.</p><p>essencialmente, isso replica a conversa que duas pessoas podem ter, fornecendo uma área para o usuário "falar" e outra para o sistema "refletir de volta" seu entendimento.</p><h3>entrada</h3><p>forneça uma área em que os usuários descrevam sua disponibilidade.</p><p>uma maneira de fazer isso seria permitir que eles fizessem uma série de declarações altamente estruturadas, mas em inglês.</p><ul> <li>estou disponível todas as terças e quartas-feiras</li> <li>estou disponível toda quinta-feira depois das 14h</li> <li>não estou disponível na última quinta-feira do mês</li> </ul><p>você pode permitir que os usuários os digitem diretamente ou forneça algum tipo de construtor simples.</p><h3>exibição</h3><p>ao lado da entrada de dados, forneça um calendário mostrando como as instruções do usuário definem sua disponibilidade. torne isso navegável, para que as pessoas possam olhar para o futuro (ou, talvez, o passado). se o usuário parar em um intervalo de tempo específico, mostre uma dica de ferramenta que descreve por que eles estão (ou não) disponíveis no momento.</p><ul> <li>o usuário aponta em um horário de segunda-feira.<br> sistema: <em>você não está disponível a qualquer momento às segundas-feiras</em></li> <li>o usuário aponta em um horário de quinta-feira de manhã.<br> sistema: <em>você não está disponível às quintas-feiras antes das 14:</em></li> <li>o usuário aponta na quinta-feira à tarde, perto do final do mês.<br> sistema: <em>você não está disponível nesta quinta-feira porque é a última quinta-feira do mês.</em></li> </ul><p>se o usuário clicar em um intervalo de tempo, você pode destacar as regras que contribuem para a disponibilidade naquele momento.</p> <p>você precisa esperar para apresentar o controlador de exibição restrita até o próximo ciclo de execução. acabei usando um bloco (para tornar as coisas mais simples) para agendar a apresentação para o próximo ciclo de execução:</p><p><strong> atualização: </strong><br> como mencionado por mark amery abaixo, apenas um simples <code>dispatch\_async</code> funciona, não há necessidade de um temporizador:</p><pre><code>dispatch\_async(dispatch\_get\_main\_queue(), ^(void){ [self.container presentmodalviewcontroller:nc animated:yes]; }); </code></pre><hr><pre><code>/* present next run loop. prevents "unbalanced vc display" warnings. */ double delayinseconds = 0.1; dispatch\_time\_t poptime = dispatch\_time(dispatch\_time\_now, delayinseconds * nsec\_per\_sec); dispatch\_after(poptime, dispatch\_get\_main\_queue(), ^(void){ [self.container presentmodalviewcontroller:nc animated:yes]; }); </code></pre> <p>olá matheus,</p>
<p>ainda não consegui resolver, mas acho que está quase encaminhado hehe.</p>
<p>segue o que eu fiz:</p>
<pre class="prettyprint"><code> public list&lt;object[]&gt; listafornecedor() {
 list&lt;object[]&gt; resultados
 &#61; em.createquery(&#34;select f.nome as nome ,count(t) as total from ticket t &#34;
 &#43; &#34;inner join t.fornecedor f &#34;
 &#43; &#34;group by t.fornecedor&#34;).
 getresultlist();

 return resultados;
 }</code></pre>
<pre class="prettyprint"><code>private list&lt;object[]&gt; fornecedores &#61; new arraylist&lt;&gt;();
fornecedores &#61; repository.listafornecedor();</code></pre>
<pre class="prettyprint"><code> public barchartmodel getgraphforn() {
 barchartmodel model &#61; new barchartmodel();
 barchartseries series &#61; new barchartseries();

 for (object[] result : fornecedores) {
 string nome &#61; (string) result[0];
 int count &#61; ((number) result[1]).intvalue();

 system.out.println(nome&#43; &#34; &#34; &#43; count);
 series.set(nome, count);
 }
 return model;
 }</code></pre>
<pre class="prettyprint"><code>resultado do system.out.println(nome&#43; &#34; &#34; &#43; count);

[el fine]: sql: 2018-02-05 21:02:43.322--serversession(94264142)--connection(1889983036)--thread(thread[http-nio-8084-exec-70,5,main])--select t0.nome, count(t1.id) from fornecedor t0, ticket t1 where (t0.id &#61; t1.idfornecedor) group by t0.id, t0.contato, t0.email, t0.nome, t0.telefone, t0.idplanta, t0.idprojeto
teste 2
teste2 1
test3 1
teste 2
teste2 1
test3 1
teste 2
teste2 1
test3 1
teste 2
teste2 1
test3 1</code></pre>
<pre class="prettyprint"><code> &lt;p:chart type&#61;&#34;bar&#34; model&#61;&#34;#{graficocontroller.graphforn}&#34; style&#61;&#34;height: 30% ; width: 100%&#34; /&gt;</code></pre>
<p>o fornecedor teste tem 2 tickets cadastrados e os outros 2 apenas 1, porém não está aparecendo no meu gráfico.. ele nao carrega no front e nem aparece mensagem de erro ai nao sei onde to errando kkk.</p>
<p>valeuu!</p> como eu uso muito mais os aquivos docx. via wps, acabei descobrindo um modo dos documentos abrirem só com um clik.

é só clicar com o botão direito sobre o arquivo > propriedades > opções do tipo de arquivo > adicionar > wps writer.

[[wps]](https://plus.diolinux.com.br/uploads/default/original/2x/a/a7a07dfe3a8077845d95240d404a4b73184a1e49.jpeg "wps.jpg") <p>opa matheus, como o arquivo do premiere (.prprj) estava em um computador diferente, ele cria caminhos diferentes para os arquivos e assim você não conseguirá ve-los. pra você conseguir assistir essas mídias, você vai precisar indicar onde elas estão, na aba de projeto (window &gt; project &gt; nome do seu projeto) e clique com o botão direito nas mídias que estão faltando.<img src="https://image.prntscr.com/image/nszgpaw5qi\_iq-6gxcmffq.png" alt="guia do menu para ligar mídias" /></p>
<p>o menu de localização de arquivos vai abrir, após você ligar uma das mídias o restante delas vai se conectar automaticamente.
<img src="https://image.prntscr.com/image/ymlmmx6tr7ybb3\_nx3k0ya.png" alt="guia do menu para ligar mídias" /></p> <p>correção, seu tema ainda estava em conformidade com o xhtml 1.1 e o css 2.1, mas os plug-ins que você adicionou injetaram código adicional que<em>não era</em>compatível.</p><p>infelizmente, não há maneira fácil de manter a conformidade se você estiver usando plug-ins. o melhor que você pode fazer é validar seu tema e todas as marcações pelas quais é pessoalmente responsável, depois esperar que outros desenvolvedores tenham dedicado tempo para validar seu próprio trabalho.</p><p>a alternativa é muito mais trabalho de sua parte - você ainda pode usar a funcionalidade principal dos plug-ins, mas não permitir que eles imprimam<strong> any </strong>markup no navegador. adicione sua própria camada personalizada que solta tudo o que o plug-in toca e construa seu próprio buffer de saída. esta é a forma<em>only</em>você terá controle sobre o estilo de marcação sendo enviado para o navegador.</p><p>vários plug-ins estão começando a usar o html 5 ... outros estão tentando usar o css3. se você instalar esses plug-ins e não tomar medidas para higienizar e validar sua saída, seu site deixará de validar corretamente.</p> <p>não, não. pelo menos, não no front-end ou no back-end em qualquer área não-plugin. o wordpress só carrega arquivos cujos caminhos de arquivo são armazenados na opção active\_plugins no banco de dados e ignora todo o resto completamente.</p>