Bem-vindo: Qui, 28 de Março 2024, 9:27 Pesquisa avançada

Ubuntued Fórum Webapp

Publique aqui o programa que acabou de conhecer! Questione aqui alguma opção de algum programa ou sobre a sua própria instalação!

Ubuntued Fórum Webapp

Mensagempor Davysson Silva » Seg, 14 de Outubro 2013, 16:52

Estava eu dando uma olhada na api do unity quando resolvi fazer um webapp pra testar as funcionalidades.

Desktop



Como todo aplicativo ao instalar irá aparecer um icone no desktop...


Quicklist e Contador
A Quicklist exibe os menus do fórum. Como no fórum os menus são diferentes se você estiver logado ou não. O contador mostra a quantidade de tópicos novos.


Message Menu
O menu de mensagens exibe as 5 últimas mensagens do fórum (o aplicativo atualiza a cada 5 minutos).


Notificações
A cada atualização se houver mensagem nova o aplicativo notifica a ultima mensagem.


Uma coisa que queria implementar é a opção de pesquisar no fórum pela HUD. Infelizmente a HUD pra webapps não está funcionando aqui (nenhum app funciona). Então fica pra próxima :\

É um app bem simples. Quem quiser testar ou ver o código:

.deb https://copy.com/bCGVqw7sxNg8
.tar.gz https://copy.com/TgGESF40sVJe
Editado pela última vez por Davysson Silva em Qua, 16 de Outubro 2013, 17:32, em um total de 1 vez.
Avatar do usuário
Davysson Silva
 
Mensagens: 933
Registrado em: 14 Junho, 2011

Re: Ubuntued Fórum Webapp

Mensagempor hailton » Seg, 14 de Outubro 2013, 17:57

Obrigado Davysson! Bem prático. :D
A atualização é a cada minuto ou segundo?

hailton
 
Mensagens: 174
Registrado em: 02 Setembro, 2013

Re: Ubuntued Fórum Webapp

Mensagempor Davysson Silva » Seg, 14 de Outubro 2013, 18:05

hailton (14-10-2013, 17:57) escreveu:Obrigado Davysson! Bem prático. :D
A atualização é a cada minuto ou segundo?


A cada 5 minutos.
Avatar do usuário
Davysson Silva
 
Mensagens: 933
Registrado em: 14 Junho, 2011

Re: Ubuntued Fórum Webapp

Mensagempor Luis Cardoso » Seg, 14 de Outubro 2013, 19:10

Ora bolas, não tenho Unity para testar!
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Ubuntued Fórum Webapp

Mensagempor Davysson Silva » Seg, 14 de Outubro 2013, 19:11

Luis Cardoso (14-10-2013, 19:10) escreveu:Ora bolas, não tenho Unity para testar!


Como o redator do ubuntued não tem unity? 8| :D :D
Avatar do usuário
Davysson Silva
 
Mensagens: 933
Registrado em: 14 Junho, 2011

Re: Ubuntued Fórum Webapp

Mensagempor Luis Cardoso » Seg, 14 de Outubro 2013, 19:14

Davysson Silva (14-10-2013, 19:11) escreveu:
Luis Cardoso (14-10-2013, 19:10) escreveu:Ora bolas, não tenho Unity para testar!


Como o redator do ubuntued não tem unity? 8| :D :D

:| Pois... E para piorar, nem Ubuntu tenho instalado... :\
ImagemImagem
«Escolhe um trabalho de que gostes, e não terás que trabalhar um só dia na tua vida» - Confúcio
Avatar do usuário
Luis Cardoso
Redator
 
Mensagens: 10455
Registrado em: 26 Maio, 2011
Localização: Portugal

Re: Ubuntued Fórum Webapp

Mensagempor Claudio Novais » Seg, 14 de Outubro 2013, 21:10

Ei @Davysson Silva, parece-me algo MUITO bom!!!!!

Neste momento não estou em casa e vou chegar tarde por isso não poderei experimentar. No entanto tentarei fazê-lo o quanto antes pois parece-me algo muito bom!!

Entretanto os outros utilizadores podem ir já deixando feedback! Já agora, @Davysson Silva, você fez o software em quê? E através do quê? Seria importante ter isso num repositório para manter os utilizadores atualizados com as versões mais recentes. :OK:
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Re: Ubuntued Fórum Webapp

Mensagempor Davysson Silva » Seg, 14 de Outubro 2013, 21:16

Claudio Novais (14-10-2013, 21:10) escreveu:Ei @Davysson Silva, parece-me algo MUITO bom!!!!!

Neste momento não estou em casa e vou chegar tarde por isso não poderei experimentar. No entanto tentarei fazê-lo o quanto antes pois parece-me algo muito bom!!

Entretanto os outros utilizadores podem ir já deixando feedback! Já agora, @Davysson Silva, você fez o software em quê? E através do quê? Seria importante ter isso num repositório para manter os utilizadores atualizados com as versões mais recentes. :OK:


Webapps são feitos puramente em javascript utilizando a API do Unity. o código todo tem 133 linhas, algo bem simples.

O código todo fica em um arquivo .user.js
Código: Selecionar todos
// ==UserScript==
// @include       http://forum.ubuntued.info/*
// @include       http://forum.ubuntued.info
// @include       http://www.forum.ubuntued.info/*
// @include       http://www.forum.ubuntued.info
// @require       utils.js
// ==/UserScript==
 
window.Unity = external.getUnityObject(1.0);
 
var webappSettings = {};

function initUbuntued() {
  carregarConfiguracoes();

  var logado = usuarioLogado();


  //menu do unity
  if (logado) {
    Unity.Launcher.addAction("Painel de controle", makeRedirector ('http://forum.ubuntued.info/ucp.php'));
    var qtdMensagens  = document.evaluate('//ul[@class="submenu"]/li/a/strong', document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
    Unity.Launcher.addAction(qtdMensagens.innerHTML + " mensagens novas", makeRedirector ('http://forum.ubuntued.info/ucp.php?i=pm&folder=inbox'));
    Unity.Launcher.addAction('Ver as suas mensagens', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=egosearch'));
    Unity.Launcher.addAction('Ler mensagens sem resposta', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=unanswered'));
    Unity.Launcher.addAction('Ver mensagens não lidas', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=unreadposts'));
    Unity.Launcher.addAction('Ver mensagens novas', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=newposts'));
    Unity.Launcher.addAction('Pesquisar por tópicos ativos', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=active_topics'));
  } else {
    Unity.Launcher.addAction('Ler mensagens sem resposta', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=unanswered'));
    Unity.Launcher.addAction('Pesquisar por tópicos ativos', makeRedirector ('http://forum.ubuntued.info/search.php?search_id=active_topics'));
    Unity.Launcher.addAction('Entrar', makeRedirector ('http://forum.ubuntued.info/ucp.php?mode=login'));
  }

  //HUD

  atualizar();
  setInterval(atualizar, webappSettings.tempoAtualizacao);

}

function carregarConfiguracoes() {
  webappSettings.tempoAtualizacao = localStorage.getItem('tempoAtualizacao') || 300000;
  webappSettings.exibirNotificacoes = localStorage.getItem('exibirNotificacoes') || true;
  webappSettings.exibirContador = localStorage.getItem('exibirContador') || true;
  webappSettings.exibirIndicador = localStorage.getItem('exibirIndicador') || true;
  webappSettings.totalPosts = localStorage.getItem('totalPosts') || 5;

}

function atualizar() {
  if(webappSettings.exibirIndicador) {
    Unity.MessagingIndicator.clearIndicators();
    atualizarIndicador();
  }
  if(webappSettings.exibirContador) {
    atualizarContador();
  }
}

function usuarioLogado() {
  var no  = document.evaluate('//ul[@class="top_icons"]/li[@class="login"]/a'
                              , document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;

  var re = /^Sair/;
  return re.test(no.innerHTML);
}

function atualizarContador() {
  var req = new XMLHttpRequest();
  req.open('GET', 'http://forum.ubuntued.info/search.php?search_id=newposts', true);
  req.responseType = 'document';
  req.onload = function () {
    var no = this.responseXML.evaluate('//div[@class="topic-actions"]/div[@class="rightside pagination"]'
                                       , this.responseXML, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;

    //total de mensagens novas
    var re = /\s*\d+\s*/;
    var total = re.exec(no.innerHTML);

    //atualiza o contador do launcher
    Unity.Launcher.setCount(parseInt(total));
  };
  req.send();
}

function atualizarIndicador() {
  var req = new XMLHttpRequest();
  req.open('GET', 'http://forum.ubuntued.info/search.php?search_id=active_topics', true);
  req.responseType = 'document';
  req.onload = function () {
    for (var i = 1; i <= webappSettings.totalPosts; i++) {
      var post = {};
      var no = this.responseXML.evaluate('//ul[@class="topiclist topics"]/li[' + i + ']//a[@class="topictitle"]'
                                         , this.responseXML, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;

      post.titulo = no.innerHTML;
      post.link = 'http://forum.ubuntued.info' + no.getAttribute('href').substring(1);
      Unity.MessagingIndicator.showIndicator(post.titulo, {callback: makeRedirector(post.link)});

      //verifica se há mensagens novas
      if (webappSettings.exibirNotificacoes && i == 1) {
        var respostas = this.responseXML.evaluate('//ul[@class="topiclist topics"]/li[' + i + ']//span[@class="post_count"]'
                                                  , this.responseXML, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
        post.totalRespostas = parseInt(respostas.innerHTML);
        var ultimoPost = JSON.parse(localStorage.getItem('ultimoPost'));

        if (ultimoPost == null || post.titulo != ultimoPost.titulo || post.totalRespostas != ultimoPost.totalRespostas ) {
          var usuario = this.responseXML.evaluate('//ul[@class="topiclist topics"]/li[1]//dd[@class="lastpost"]//a[1]'
                                                  , this.responseXML, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;
          post.usuario = usuario.innerHTML;
          var hora = this.responseXML.evaluate('//ul[@class="topiclist topics"]/li[1]//dd[@class="lastpost"]'
                                                , this.responseXML, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue;

          var re = /<br>(.*?)<br>/;
          post.hora = re.exec(hora.innerHTML)[1];
          localStorage.setItem('ultimoPost', JSON.stringify(post));

          //exibir notificação
          Unity.Notification.showNotification(post.titulo, 'por ' + post.usuario + ': ' + post.hora, 'icon://unity-webapps-ubuntued');
        }
      }

    }
  };
  req.send();
}

Unity.init({ name: 'Ubuntued Fórum',
            domain: 'forum.ubuntued.info',
            homepage: 'http://forum.ubuntued.info',
            iconUrl: 'icon://unity-webapps-ubuntued',
            onInit: wrapCallback (initUbuntued) });


PS: O código fonte e o arquivo .deb pra instalação estão no final do primeiro post.
Avatar do usuário
Davysson Silva
 
Mensagens: 933
Registrado em: 14 Junho, 2011

Re: Ubuntued Fórum Webapp

Mensagempor Davysson Silva » Qua, 16 de Outubro 2013, 13:48

Avatar do usuário
Davysson Silva
 
Mensagens: 933
Registrado em: 14 Junho, 2011

Re: Ubuntued Fórum Webapp

Mensagempor Claudio Novais » Qua, 16 de Outubro 2013, 16:09

Pelas imagens, acho que está a ficar FENOMENAL!!!!

@Davysson, desculpe não estar a devida atenção para o que você está a fazer, mas este mês tenho estado e ainda vou estar muito ocupado. Mas sem dúvida que isto que você está a tratar tem futuro, não tenha dúvidas!!

Já agora, as WebApps não deviam ser "cedidas" pelo próprio site através de um "import" do JS? É que nos primórdios das WebApps cheguei a brincar um pouco, mas aquilo não dava para fazer quase nada e era disponibilizado pelo site. Mas você aqui está a disponibilizar via Deb. :|
Avatar do usuário
Claudio Novais
Editor do Ubuntued
 
Mensagens: 16869
Registrado em: 25 Maio, 2011

Próximo

Voltar para Programas

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 38 visitantes

cron