GovernoSombra

From Laboratório MM 5

(Difference between revisions)
Jump to: navigation, search
(Base de dados desenvolvida)
(Recordsets/Queries utilizados)
 
(92 intermediate revisions not shown)
Line 1: Line 1:
 +
[[File:gsbanner.PNG|center|Banner "Governo Sombra"|]]
 +
 +
Eduardo Marques - 49719
 +
 +
José La-Salete - 50449
 +
 +
==Agradecimentos==
==Agradecimentos==
-
Para que este projecto fosse possível de concretizar, várias pessoas deram um contributo fundamental em diversas etapas da sua construção. Queremos agradecer especialmente ao Nelson Silva, colega de grupo que participou activamente na construção de todo o conceito da ideia nas unidades curriculares de Gestão de Empresas e de Implementação e Controlo de Projectos Multimédia. Agradecemos também a todos os docentes das respectivas unidades curriculares, nomeadamente aos docentes Hélder Caixinha, Licínio Mano, Nuno Ribeiro (Laboratório Multimédia 5) à docente Ana Margarida Almeida (Implementação e Controlo de Projectos Multimédia) e também à docente Vera Vale (Gestão de Empresas). Por último queremos também prestar os devidos agradecimentos aos consultores do nosso projecto, nomeadamente ao docente Vânia Baldi (Departamento de Comunicação e Arte) e ao docente Carlos Jalali (Secção Autónoma de Ciências Sociais, Jurídicas e Políticas)
 
 +
Para que este projecto fosse possível de concretizar, várias pessoas deram um contributo fundamental em diversas etapas da sua construção. Queremos agradecer especialmente ao Nelson Silva, colega de grupo que participou activamente na construção de todo o conceito da ideia nas unidades curriculares de Gestão de Empresas e de Implementação e Controlo de Projectos Multimédia. Agradecemos também a todos os docentes das respectivas unidades curriculares, nomeadamente aos docentes Hélder Caixinha, Licínio Mano, Nuno Ribeiro (Laboratório Multimédia 5) à docente Ana Margarida Almeida (Implementação e Controlo de Projectos Multimédia) e também à docente Vera Vale (Gestão de Empresas). Por último queremos também prestar os devidos agradecimentos aos consultores do nosso projecto, neste caso ao docente Vânia Baldi (Departamento de Comunicação e Arte) e ao docente Carlos Jalali (Secção Autónoma de Ciências Sociais, Jurídicas e Políticas)
Line 18: Line 25:
''"Um homem pode morrer, lutar, falhar, até mesmo ser esquecido, mas a sua ideia pode modificar o mundo mesmo tendo passado 400 anos."'' - V for Vendetta
''"Um homem pode morrer, lutar, falhar, até mesmo ser esquecido, mas a sua ideia pode modificar o mundo mesmo tendo passado 400 anos."'' - V for Vendetta
 +
==Base de dados desenvolvida==
==Base de dados desenvolvida==
-
[[Image:bd_print.png|right|Base de Dados de "Governo Sombra"|400px]]
+
[[Image:bd_print.png|center|Base de Dados de "Governo Sombra"|400px]]
 +
 
 +
 
 +
 
 +
O ''printscreen'' apresentado anteriormente foi retirado do programa ''MySQL Workbench 5.2'', onde foi definida e esquematizada toda a arquitectura da base de dados que serve de base ao ''website''.
 +
Mais concretamente, a base de dados é constituída por 22 tabelas:
 +
 
 +
'''Cargos-''' Esta tabela contém um catálogo de possíveis papéis/cargos que o utilizador desempenha no ''site'' (moderador, ministro, etc..).
 +
 
 +
'''Categorias-''' Esta tabela contém um catálogo de possíveis categorias de notícias que o utilizador atribui à(s) notícia(s) que publica.
 +
 
 +
'''Categorias_opinião-''' Esta tabela contém um catálogo de possíveis categorias para os utilizadores convidados pelos administradores classificarem os artigos de opinião que publicam.
 +
 
 +
'''Categorias_propostas-''' Esta tabela contém um catálogo de possíveis categorias para os utilizadores classificarem uma proposta que desejem publicar.
 +
 +
'''Comentários-''' Esta tabela armazena todos os comentários feitos às propostas, ideias, notícias e artigos de opinião.
 +
 
 +
'''Documentos-''' Esta tabela armazena documentos (tais como documentos de participação cívica, constituição portuguesa, outros) considerados pertinentes pelos administradores do website.
 +
 
 +
'''Estado_utilizador-''' Esta tabela tem o propósito de guardar estados dos utilizadores, tais como activos, não-activos, suspensos ou banidos.
 +
 
 +
'''Género-''' Esta tabela contém um catálogo dos géneros dos utilizadores, apenas justificado pelo intuito de facilitar o carregamento dinâmico de ''drop-down menus''.
 +
 
 +
'''Ideias-''' Esta tabela armazena as ideias publicadas pelos utilizadores.
 +
 
 +
'''Ideologia-''' Esta tabela contém um catálogo de ideologias políticas passíveis de serem escolhidas pelo utilizador, de forma a evitar publicações de ideologias de partidos reais.
 +
 
 +
'''Mensagens_privadas-''' Esta tabela destina-se a armazenar as mensagens privadas que os utilizadores trocam entre si, não estando limitados a posts públicos no ''website''.
 +
 
 +
'''Modo_voto-''' Esta tabela contém um catálogo das escolhas do utilizador quando este vota numa ideia ou proposta, nomeadamente contra ou a favor.
 +
 
 +
'''Noticias-''' Esta tabela armazena as notícias publicadas pelos administradores ou editores nomeados para esse mesmo fim.
 +
 
 +
'''Opinião-''' Esta tabela destina-se a armazenar os artigos de opinião publicados pelos cronistas ou editores convidados.
 +
 
 +
'''Perfil-''' Esta tabela armazena as características do perfil dos utilizadores.
 +
 
 +
'''Propostas''' Esta tabela armazena as propostas publicadas pelos utilizadores do ''website''.
 +
 
 +
'''Tipo_utilizadores-''' Esta tabela contém as categorias de cada utilizador, influenciando directamente as suas permissões dentro do ''website''.
 +
 
 +
'''Utilizadores-''' Esta tabela armazena todos os utilizadores registados.
 +
 
 +
'''Utilizadores_has_ideias-''' Esta tabela foi automaticamente criada pelo Workbench devido à atribuição de uma relação de M:M entre as tabelas "Utilizadores" e "Ideias" .
 +
 
 +
'''Utilizadores_has_propostas-''' Esta tabela foi automaticamente criada pelo Workbench devido à atribuição de uma relação de M:M entre as tabelas "Utilizadores" e "Propostas".
 +
 
 +
'''Utilizadores_seguidores-''' Esta tabela armazena os utilizadores que seguem a actividade de outros utilizadores.
 +
 
 +
'''Votos-''' Esta tabela armazena todos os votos atribuidos a uma determinada ideia ou proposta.
==Implementação==
==Implementação==
 +
 +
Para a implementação do projecto, o grupo recorreu a diversos softwares de desenvolvimento de código Javascript, PHP e MySQL, nomeadamente Adobe Dreamweaver, Coda, PHP Designer e FlySpeed SQL.
 +
 +
''"A programação hoje em dia é uma corrida entre os engenheiros de software que tentam fazer programas maiores e melhores à prova de idiotas (...) e o universo que faz idiotas maiores e melhores. Até agora o universo está a ganhar."'' - Rick Cook
 +
===Descrição das principais funcionalidades da aplicação Web===
===Descrição das principais funcionalidades da aplicação Web===
 +
O "Governo Sombra" pretende ser inovador, irreverente, um ponto de partida ou projecção para uma ideia capaz de produzir efeitos no mundo real. Para isso, existe uma quantidade de serviços e funcionalidades que disponibilizamos aos utilizadores do ''website'':
 +
 +
'''Área de notícias:''' publicação de notícias da vida política portuguesa com vista a gerar opiniões convergentes ou divergentes por parte dos membros da comunidade. Pondo em prática o direito à informação, esta secção é acessível a todos os internautas, sem necessidade de qualquer registo.
 +
 +
'''Registo:''' é através do registo no ''website'' que o utilizador passa a ter direito a uma voz activa na comunidade, passando a estar admitido à maior parte das outras secções do "Governo Sombra" que só estão abertas a utilizadores registados. É através do formulário de registo que o utilizador cria o seu perfil, inserindo as suas informações pessoais, que pode posteriormente alterar se o desejar. Nesta fase é feita uma comparação dos dados inseridos pelo utilizador com os existentes na base de dados, evitando assim registos duplicados, com um ''username'' já ocupado por outro utilizador ou um e-mail já utilizado para o registo de uma conta.
 +
 +
'''Ideias:''' esta é uma das principais funcionalidades do ''website''. Uma das formas de os utilizadores registados darem o seu contributo ao "Governo Sombra" é a partilha das suas ideias. Não são restritas a nível político, são apenas...ideias. Uma ideia à hora certa, no terreno certo pode ter uma força invencível, e o "Governo Sombra" está aberto a ideias construtivas em prol da comunidade e da sociedade. As ideias publicadas estão obviamente abertas a serem votadas e comentadas pelos utilizadores registados.
 +
 +
'''Propostas:''' esta secção actua como uma consequência das Ideias. O facto de se fomentar a discussão e votação de uma ideia, irá promover uma consolidação da própria ideia, e até provavelmente a alienação de outras ideias semelhantes à mesma causa. As ideias tornam-se mais coerentes, concisas, completas. Posto isto, estão reunidas as condições para passar do conceito de "apenas uma ideia" para algo mais formal, estruturado : uma proposta. Isto requer um número considerável de apoiantes, apela à união, e caso seja bem sucedida, pode perfeitamente levar à criação de um movimento cívico organizado com os mesmos objectivos e ideais, algo cada vez mais frequente na sociedade contemporânea. As propostas são também sujeitas a votação, e de acordo com estas votações ao longo de um determinado período de tempo, as melhores propostas são registadas e arquivadas como tal, podendo levar a criação de petições ou até serem apresentadas ao governo actual.
 +
 +
'''Opinião:''' a secção de opinião é uma secção bastante restrita do "Governo Sombra". Apenas os administradores e os utilizadores/colunistas convidados para participarem, têm a possibilidade de escrever os seus artigos na secção de Opinião. Esta é uma secção onde este grupo restrito de ''users'' publica os seus artigos de opinião própria. Todos os outros utilizadores registados apenas têm a possibilidade de ler e comentar os artigos publicados nesta secção.
 +
 +
'''Mensagens privadas:''' esta funcionalidade é vista como um incentivo à interacção social entre os utilizadores registados do ''website'', pois permite que os utilizadores contactem mais directa e informalmente com outros utilizadores, sem haver a necessidade de ''off-topics'' excessivos nas secções principais da comunidade.
 +
===Mapa de páginas===
===Mapa de páginas===
 +
[[Image:esquema_pags.png|center|700px]]
 +
 +
 +
 +
''"Que os vossos esforços desafiem as impossibilidades, lembrai-vos de que as grandes coisas do Homem foram conquistadas do que parecia impossível."'' - Charlie Chaplin
 +
====Server Behaviours utilizados====
====Server Behaviours utilizados====
-
Look, just because I don't be givin' no man a foot massage don't make it right for Marsellus to throw Antwone into a glass motherfuckin' house, fuckin' up the way the nigger talks. Motherfucker do that shit to me, he better paralyze my ass, 'cause I'll kill the motherfucker, know what I'm sayin'?
+
 
 +
 
 +
Para uma melhor dinâmica, consolidação e usabilidade, foram utilizados os seguintes ''server behaviours'':
 +
 
 +
 
 +
'''''Repeat Region:''''' Criação de zonas de repetição para inserção de conteúdos vindos da base de dados.
 +
 
 +
'''''Insert Record:''''' Adicionar um novo elemento à base de dados.
 +
 
 +
'''''Update Record:''''' Alterar/Actualizar um elemento da base de dados.
 +
 
 +
'''''Delete Record:''''' Remover um elemento da base de dados.
 +
 
 +
'''''User Authentication:''''' Permitir ao utilizador registado iniciar ou fechar sessão no ''website''.
 +
 
 +
'''''Dynamic Text:''''' Inserir texto de forma dinâmica, como por exemplo data e hora momentâneas na publicação de uma notícia.
 +
 
 +
 
====Recordsets/Queries utilizados====
====Recordsets/Queries utilizados====
 +
 +
A nível de ''recordsets'' e ''queries'' o nosso primeiro objectivo era que o ''recordset'' das notícias actuasse de forma dinâmica. No entanto isto tornou-se inviável devido a estarem implementados limites na ''query'' e isto tornava impossível a intenção de fazer com que o ''recordset'' se actualizasse de forma dinâmica sem que o utilizador fizesse ''refresh'' à página. Isto levou portanto à implementação de um ''recordset'' manualmente.
 +
Criamos também bastantes catálogos na base de dados para posteriormente carregar de forma dinâmica os ''dropdown menus'', sendo estes alimentados por ''recordsets'' próprios.
====Parâmetros passados entre páginas====
====Parâmetros passados entre páginas====
 +
 +
Os parâmetros que são passados entre as páginas do ''website'' são através de dois métodos: ''POST'' e ''GET''.
 +
Ambos os métodos foram estudados ao longo do semestre, e tanto um como o outro têm vantagens e desvantagens que tiveram de ser avaliadas no momento da decisão sobre qual método utilizar em cada situação específica.
 +
 +
Levando em conta o que foi escrito anteriormente, optamos por passar através do método ''GET'' alguns valores de ID's e alterações de estados de eventos, como por exemplo comunicar que uma notícia foi actualizada com sucesso.
 +
Já através do método ''POST'' foram maioritariamente passados os parâmetros de entrada da submissão de formulários, assim como também alguns valores de variáveis.
 +
===Integração (e.g. Flash, AJAX Frameworks, etc)===
===Integração (e.g. Flash, AJAX Frameworks, etc)===
 +
 +
Um projecto deste calibre implica uma extensa pesquisa e integração de diferentes linguagens nas várias áreas do projecto. Entre os vários tipos testados, apenas os seguintes foram utilizados:
 +
 +
'''HTML:''' Estruturação das divisões da página.
 +
 +
'''Javascript:''' Validação de formulários.
 +
 +
'''JQuery:''' Menus animados e outras animações.
 +
 +
'''PHP:''' Interacção com base de dados, actualização de conteúdos de forma dinâmica.
 +
 +
'''Facebook Comment System:''' Após várias tentativas de implementação de um sistema de comentários em ''JSON'', acabou por ser utilizado o sistema de comentários disponibilizado pelo ''Facebook'' através da sua API (''Open Graph'') para a adição de comentários aos conteúdos do website.
==Desenvolvimentos Futuros==
==Desenvolvimentos Futuros==
 +
 +
Tendo em conta as limitações temporais e humanas, algumas secções do ''website'' não puderam ser tão bem elaboradas e implementadas como inicialmente estava previsto e planeado, sendo relegadas para desenvolvimentos futuros.
 +
Pretendíamos implementar um website com integração total com o ''Facebook'', o que acabou por se revelar inviável de cumprir por completo, estando apenas o sistema de comentários integrado com o mesmo. Mais concretamente, pretendíamos oferecer a possibilidade do utilizador poder fazer ''login'' com a sua conta do ''Facebook'' caso tenha uma, sem haver necessidade de se registar directamente no ''website''. Esta integração tinha também o objectivo de ser um facilitador na tarefa de divulgação e partilha das actividades/acções dos utilizadores no ''website''. Será também interessante oferecer aos utilizadores a possibilidade de no seu perfil do ''Facebook'' poderem adicionar o "Governo Sombra" às suas ideologias políticas.
 +
 +
Relativamente a secções não totalmente operacionalizadas, há que referir alguns pontos que o grupo não conseguiu implementar de forma eficaz ao "Governo Sombra": tentámos implementar um script de "''Load More''" em ''AJAX'', que permitisse o carregamento de mais notícias de cada categoria, semelhante ao estilo do ''Twitter'', mas acabamos por não o conseguir. Ainda dentro deste tópico, não conseguimos também implementar totalmente um crop automático nas imagens inseridas pelos utilizadores quando estes inserem uma notícia. Por último, não conseguimos também implementar totalmente uma função de recuperação de password, e ainda de envio de convites, apesar dos muitos esforços empregues nesta tarefa.
 +
 +
Infelizmente não conseguimos também implementar alguns dos principais objectivos definidos, nomeadamente criação da secção de propostas, um sistema de mensagens privadas e gestão de permissões. Apesar de terem sido cuidadosamente planeados e esquematizados, e termos a base de dados preparada para os efeitos, tanto por limitações de tempo como de competências, infelizmente não conseguimos implementar estas funcionalidades, o que acaba por causar algum desânimo e consequente impacto negativo no projecto. Há no entanto que destacar que todos os pontos referidos anteriormente são passíveis de serem implementados num futuro próximo, pois todos eles foram pensados e esquematizados para serem implementados, estando a base de dados perfeitamente preparada de os suportar.
==Conclusões==
==Conclusões==
 +
 +
São várias as conclusões que podemos retirar após o término do projecto "Governo Sombra":
 +
Este foi um projecto que deu um prazer enorme ao grupo de trabalho em realizá-lo, desde a fase da concepção do tema que a sua subjectividade e complexidade nos motivou muito em não desistir da ideia, o momento contemporâneo de crise em que nos encontramos é propício ao surgimento de novas ideias capazes de contribuir a nível nacional e mundial, e o nosso objectivo é o de dar uma voz e um corpo a essas ideias.
 +
O facto de ter sido um tema que provocou reacções, sugestões e opiniões muito diferentes por parte do corpo de docentes e dos consultores de projecto, dificultou um pouco na altura de tomada de decisões fulcrais do "caminho" e "direcção" do projecto, mas ao mesmo tempo acabou também por nos estimular a trabalhar ainda mais para ir ao encontro das mais diversas expectativas, tanto dos docentes como dos consultores, sem esquecer obviamente as definidas por nós.
 +
 +
Não podemos descartar também as dificuldades que nos assistiram por apenas serem dois os elementos do grupo de trabalho, o que causou alguma sobrecarga de trabalho em cima dos dois elementos e acabou por ter alguma influência na definição de objectivos ainda mais ambiciosos. No entanto chegamos ao fim do projecto com o sentimento de "dever cumprido", pois achamos que atingimos a maioria dos objectivos a que nos propusemos no início da concepção do "Governo Sombra". Ambos os elementos deram tudo o que puderam de si, saindo deste projecto com a consciência tranquila de que tudo fizeram para ultrapassar as dificuldades que foram surgindo ao longo do projecto.
 +
Este projecto foi também muito enriquecedor a nível de conhecimentos, pois além de fazer com que recordássemos conhecimentos já utilizados noutras unidades curriculares , fez com que consolidássemos conhecimentos já existentes, e ainda com que aprendêssemos um pouco mais sobre aquilo que foi leccionado e praticamos ao longo de todo o semestre.
==Referências Bibliográficas==
==Referências Bibliográficas==
 +
 +
Livros:
 +
 +
MERKEL, Wolfgang; KEANE, John; ALONSO, Sofia - "''The Future of Representative Democracy''". ISBN:978-0-521-17703-0
 +
 +
TURKEL, Sherry - "''Alone Together''". ISBN-13: 978-0465010219
 +
 +
 +
Web:
 +
 +
"W3Schools"- ''http://www.w3schools.com''
 +
 +
"Facebook Developers"- ''http://developers.facebook.com/''
 +
 +
"Web Design Fan" -''http://webdesignfan.com/jquery-slider-tutorials-and-plugins/''
 +
 +
"iOnline" -''http://www.ionline.pt/''
 +
 +
"Público" - ''http://www.publico.pt/''

Latest revision as of 08:57, 20 January 2012

Gsbanner.PNG

Eduardo Marques - 49719

José La-Salete - 50449


Contents

Agradecimentos

Para que este projecto fosse possível de concretizar, várias pessoas deram um contributo fundamental em diversas etapas da sua construção. Queremos agradecer especialmente ao Nelson Silva, colega de grupo que participou activamente na construção de todo o conceito da ideia nas unidades curriculares de Gestão de Empresas e de Implementação e Controlo de Projectos Multimédia. Agradecemos também a todos os docentes das respectivas unidades curriculares, nomeadamente aos docentes Hélder Caixinha, Licínio Mano, Nuno Ribeiro (Laboratório Multimédia 5) à docente Ana Margarida Almeida (Implementação e Controlo de Projectos Multimédia) e também à docente Vera Vale (Gestão de Empresas). Por último queremos também prestar os devidos agradecimentos aos consultores do nosso projecto, neste caso ao docente Vânia Baldi (Departamento de Comunicação e Arte) e ao docente Carlos Jalali (Secção Autónoma de Ciências Sociais, Jurídicas e Políticas)


Introdução

No âmbito da unidade curricular de Laboratório Multimédia 5, foi proposto ao grupo de trabalho a realização de um projecto em articulação com as unidades curriculares de Gestão de Empresas e Implementação e Controlo de Projectos Multimédia. O principal objectivo deste projecto é criar o website "Governo Sombra" recorrendo aos conhecimentos adquiridos ao longo do semestre a nível de base de dados, gestão de recursos humanos e recursos técnicos.


Objectivo do documento

O objectivo do presente relatório é a retratação de todas as etapas que constituem o processo de criação do website "Governo Sombra", desde o seu planeamento, decisões tomadas, concepção e implementação, até aos desenvolvimentos futuros passíveis de serem aplicados ao website.


Visão geral do projecto

O website "Governo Sombra" desde cedo se revelou uma proposta deveras interessante e aliciante pela sua complexidade mas sobretudo pela capacidade de gerar pontos de vista bastante diversos, não só entre os elementos do grupo, mas também entre os docentes das unidades curriculares e até dos próprios consultores do projecto. "Governo Sombra" acaba por evidenciar influências de um pouco de todas as ideias que foram discutidas, provavelmente reunindo o melhor de todas elas. Consiste na criação de um portal democrático com os objectivos de discutir e opinar criticamente sobre propostas coerentes e concretas que possam, tendo em conta os constrangimentos orçamentais que se vivem em Portugal e no restante mundo. Tudo começa por uma simples ideia ou proposta, e em "Governo Sombra" cada indivíduo poderá criar o seu próprio partido, os seus movimentos, recrutar os seus seguidores.

"Um homem pode morrer, lutar, falhar, até mesmo ser esquecido, mas a sua ideia pode modificar o mundo mesmo tendo passado 400 anos." - V for Vendetta


Base de dados desenvolvida

Base de Dados de "Governo Sombra"


O printscreen apresentado anteriormente foi retirado do programa MySQL Workbench 5.2, onde foi definida e esquematizada toda a arquitectura da base de dados que serve de base ao website. Mais concretamente, a base de dados é constituída por 22 tabelas:

Cargos- Esta tabela contém um catálogo de possíveis papéis/cargos que o utilizador desempenha no site (moderador, ministro, etc..).

Categorias- Esta tabela contém um catálogo de possíveis categorias de notícias que o utilizador atribui à(s) notícia(s) que publica.

Categorias_opinião- Esta tabela contém um catálogo de possíveis categorias para os utilizadores convidados pelos administradores classificarem os artigos de opinião que publicam.

Categorias_propostas- Esta tabela contém um catálogo de possíveis categorias para os utilizadores classificarem uma proposta que desejem publicar.

Comentários- Esta tabela armazena todos os comentários feitos às propostas, ideias, notícias e artigos de opinião.

Documentos- Esta tabela armazena documentos (tais como documentos de participação cívica, constituição portuguesa, outros) considerados pertinentes pelos administradores do website.

Estado_utilizador- Esta tabela tem o propósito de guardar estados dos utilizadores, tais como activos, não-activos, suspensos ou banidos.

Género- Esta tabela contém um catálogo dos géneros dos utilizadores, apenas justificado pelo intuito de facilitar o carregamento dinâmico de drop-down menus.

Ideias- Esta tabela armazena as ideias publicadas pelos utilizadores.

Ideologia- Esta tabela contém um catálogo de ideologias políticas passíveis de serem escolhidas pelo utilizador, de forma a evitar publicações de ideologias de partidos reais.

Mensagens_privadas- Esta tabela destina-se a armazenar as mensagens privadas que os utilizadores trocam entre si, não estando limitados a posts públicos no website.

Modo_voto- Esta tabela contém um catálogo das escolhas do utilizador quando este vota numa ideia ou proposta, nomeadamente contra ou a favor.

Noticias- Esta tabela armazena as notícias publicadas pelos administradores ou editores nomeados para esse mesmo fim.

Opinião- Esta tabela destina-se a armazenar os artigos de opinião publicados pelos cronistas ou editores convidados.

Perfil- Esta tabela armazena as características do perfil dos utilizadores.

Propostas Esta tabela armazena as propostas publicadas pelos utilizadores do website.

Tipo_utilizadores- Esta tabela contém as categorias de cada utilizador, influenciando directamente as suas permissões dentro do website.

Utilizadores- Esta tabela armazena todos os utilizadores registados.

Utilizadores_has_ideias- Esta tabela foi automaticamente criada pelo Workbench devido à atribuição de uma relação de M:M entre as tabelas "Utilizadores" e "Ideias" .

Utilizadores_has_propostas- Esta tabela foi automaticamente criada pelo Workbench devido à atribuição de uma relação de M:M entre as tabelas "Utilizadores" e "Propostas".

Utilizadores_seguidores- Esta tabela armazena os utilizadores que seguem a actividade de outros utilizadores.

Votos- Esta tabela armazena todos os votos atribuidos a uma determinada ideia ou proposta.

Implementação

Para a implementação do projecto, o grupo recorreu a diversos softwares de desenvolvimento de código Javascript, PHP e MySQL, nomeadamente Adobe Dreamweaver, Coda, PHP Designer e FlySpeed SQL.

"A programação hoje em dia é uma corrida entre os engenheiros de software que tentam fazer programas maiores e melhores à prova de idiotas (...) e o universo que faz idiotas maiores e melhores. Até agora o universo está a ganhar." - Rick Cook


Descrição das principais funcionalidades da aplicação Web

O "Governo Sombra" pretende ser inovador, irreverente, um ponto de partida ou projecção para uma ideia capaz de produzir efeitos no mundo real. Para isso, existe uma quantidade de serviços e funcionalidades que disponibilizamos aos utilizadores do website:

Área de notícias: publicação de notícias da vida política portuguesa com vista a gerar opiniões convergentes ou divergentes por parte dos membros da comunidade. Pondo em prática o direito à informação, esta secção é acessível a todos os internautas, sem necessidade de qualquer registo.

Registo: é através do registo no website que o utilizador passa a ter direito a uma voz activa na comunidade, passando a estar admitido à maior parte das outras secções do "Governo Sombra" que só estão abertas a utilizadores registados. É através do formulário de registo que o utilizador cria o seu perfil, inserindo as suas informações pessoais, que pode posteriormente alterar se o desejar. Nesta fase é feita uma comparação dos dados inseridos pelo utilizador com os existentes na base de dados, evitando assim registos duplicados, com um username já ocupado por outro utilizador ou um e-mail já utilizado para o registo de uma conta.

Ideias: esta é uma das principais funcionalidades do website. Uma das formas de os utilizadores registados darem o seu contributo ao "Governo Sombra" é a partilha das suas ideias. Não são restritas a nível político, são apenas...ideias. Uma ideia à hora certa, no terreno certo pode ter uma força invencível, e o "Governo Sombra" está aberto a ideias construtivas em prol da comunidade e da sociedade. As ideias publicadas estão obviamente abertas a serem votadas e comentadas pelos utilizadores registados.

Propostas: esta secção actua como uma consequência das Ideias. O facto de se fomentar a discussão e votação de uma ideia, irá promover uma consolidação da própria ideia, e até provavelmente a alienação de outras ideias semelhantes à mesma causa. As ideias tornam-se mais coerentes, concisas, completas. Posto isto, estão reunidas as condições para passar do conceito de "apenas uma ideia" para algo mais formal, estruturado : uma proposta. Isto requer um número considerável de apoiantes, apela à união, e caso seja bem sucedida, pode perfeitamente levar à criação de um movimento cívico organizado com os mesmos objectivos e ideais, algo cada vez mais frequente na sociedade contemporânea. As propostas são também sujeitas a votação, e de acordo com estas votações ao longo de um determinado período de tempo, as melhores propostas são registadas e arquivadas como tal, podendo levar a criação de petições ou até serem apresentadas ao governo actual.

Opinião: a secção de opinião é uma secção bastante restrita do "Governo Sombra". Apenas os administradores e os utilizadores/colunistas convidados para participarem, têm a possibilidade de escrever os seus artigos na secção de Opinião. Esta é uma secção onde este grupo restrito de users publica os seus artigos de opinião própria. Todos os outros utilizadores registados apenas têm a possibilidade de ler e comentar os artigos publicados nesta secção.

Mensagens privadas: esta funcionalidade é vista como um incentivo à interacção social entre os utilizadores registados do website, pois permite que os utilizadores contactem mais directa e informalmente com outros utilizadores, sem haver a necessidade de off-topics excessivos nas secções principais da comunidade.


Mapa de páginas

Esquema pags.png


"Que os vossos esforços desafiem as impossibilidades, lembrai-vos de que as grandes coisas do Homem foram conquistadas do que parecia impossível." - Charlie Chaplin


Server Behaviours utilizados

Para uma melhor dinâmica, consolidação e usabilidade, foram utilizados os seguintes server behaviours:


Repeat Region: Criação de zonas de repetição para inserção de conteúdos vindos da base de dados.

Insert Record: Adicionar um novo elemento à base de dados.

Update Record: Alterar/Actualizar um elemento da base de dados.

Delete Record: Remover um elemento da base de dados.

User Authentication: Permitir ao utilizador registado iniciar ou fechar sessão no website.

Dynamic Text: Inserir texto de forma dinâmica, como por exemplo data e hora momentâneas na publicação de uma notícia.


Recordsets/Queries utilizados

A nível de recordsets e queries o nosso primeiro objectivo era que o recordset das notícias actuasse de forma dinâmica. No entanto isto tornou-se inviável devido a estarem implementados limites na query e isto tornava impossível a intenção de fazer com que o recordset se actualizasse de forma dinâmica sem que o utilizador fizesse refresh à página. Isto levou portanto à implementação de um recordset manualmente. Criamos também bastantes catálogos na base de dados para posteriormente carregar de forma dinâmica os dropdown menus, sendo estes alimentados por recordsets próprios.

Parâmetros passados entre páginas

Os parâmetros que são passados entre as páginas do website são através de dois métodos: POST e GET. Ambos os métodos foram estudados ao longo do semestre, e tanto um como o outro têm vantagens e desvantagens que tiveram de ser avaliadas no momento da decisão sobre qual método utilizar em cada situação específica.

Levando em conta o que foi escrito anteriormente, optamos por passar através do método GET alguns valores de ID's e alterações de estados de eventos, como por exemplo comunicar que uma notícia foi actualizada com sucesso. Já através do método POST foram maioritariamente passados os parâmetros de entrada da submissão de formulários, assim como também alguns valores de variáveis.


Integração (e.g. Flash, AJAX Frameworks, etc)

Um projecto deste calibre implica uma extensa pesquisa e integração de diferentes linguagens nas várias áreas do projecto. Entre os vários tipos testados, apenas os seguintes foram utilizados:

HTML: Estruturação das divisões da página.

Javascript: Validação de formulários.

JQuery: Menus animados e outras animações.

PHP: Interacção com base de dados, actualização de conteúdos de forma dinâmica.

Facebook Comment System: Após várias tentativas de implementação de um sistema de comentários em JSON, acabou por ser utilizado o sistema de comentários disponibilizado pelo Facebook através da sua API (Open Graph) para a adição de comentários aos conteúdos do website.

Desenvolvimentos Futuros

Tendo em conta as limitações temporais e humanas, algumas secções do website não puderam ser tão bem elaboradas e implementadas como inicialmente estava previsto e planeado, sendo relegadas para desenvolvimentos futuros. Pretendíamos implementar um website com integração total com o Facebook, o que acabou por se revelar inviável de cumprir por completo, estando apenas o sistema de comentários integrado com o mesmo. Mais concretamente, pretendíamos oferecer a possibilidade do utilizador poder fazer login com a sua conta do Facebook caso tenha uma, sem haver necessidade de se registar directamente no website. Esta integração tinha também o objectivo de ser um facilitador na tarefa de divulgação e partilha das actividades/acções dos utilizadores no website. Será também interessante oferecer aos utilizadores a possibilidade de no seu perfil do Facebook poderem adicionar o "Governo Sombra" às suas ideologias políticas.

Relativamente a secções não totalmente operacionalizadas, há que referir alguns pontos que o grupo não conseguiu implementar de forma eficaz ao "Governo Sombra": tentámos implementar um script de "Load More" em AJAX, que permitisse o carregamento de mais notícias de cada categoria, semelhante ao estilo do Twitter, mas acabamos por não o conseguir. Ainda dentro deste tópico, não conseguimos também implementar totalmente um crop automático nas imagens inseridas pelos utilizadores quando estes inserem uma notícia. Por último, não conseguimos também implementar totalmente uma função de recuperação de password, e ainda de envio de convites, apesar dos muitos esforços empregues nesta tarefa.

Infelizmente não conseguimos também implementar alguns dos principais objectivos definidos, nomeadamente criação da secção de propostas, um sistema de mensagens privadas e gestão de permissões. Apesar de terem sido cuidadosamente planeados e esquematizados, e termos a base de dados preparada para os efeitos, tanto por limitações de tempo como de competências, infelizmente não conseguimos implementar estas funcionalidades, o que acaba por causar algum desânimo e consequente impacto negativo no projecto. Há no entanto que destacar que todos os pontos referidos anteriormente são passíveis de serem implementados num futuro próximo, pois todos eles foram pensados e esquematizados para serem implementados, estando a base de dados perfeitamente preparada de os suportar.

Conclusões

São várias as conclusões que podemos retirar após o término do projecto "Governo Sombra": Este foi um projecto que deu um prazer enorme ao grupo de trabalho em realizá-lo, desde a fase da concepção do tema que a sua subjectividade e complexidade nos motivou muito em não desistir da ideia, o momento contemporâneo de crise em que nos encontramos é propício ao surgimento de novas ideias capazes de contribuir a nível nacional e mundial, e o nosso objectivo é o de dar uma voz e um corpo a essas ideias. O facto de ter sido um tema que provocou reacções, sugestões e opiniões muito diferentes por parte do corpo de docentes e dos consultores de projecto, dificultou um pouco na altura de tomada de decisões fulcrais do "caminho" e "direcção" do projecto, mas ao mesmo tempo acabou também por nos estimular a trabalhar ainda mais para ir ao encontro das mais diversas expectativas, tanto dos docentes como dos consultores, sem esquecer obviamente as definidas por nós.

Não podemos descartar também as dificuldades que nos assistiram por apenas serem dois os elementos do grupo de trabalho, o que causou alguma sobrecarga de trabalho em cima dos dois elementos e acabou por ter alguma influência na definição de objectivos ainda mais ambiciosos. No entanto chegamos ao fim do projecto com o sentimento de "dever cumprido", pois achamos que atingimos a maioria dos objectivos a que nos propusemos no início da concepção do "Governo Sombra". Ambos os elementos deram tudo o que puderam de si, saindo deste projecto com a consciência tranquila de que tudo fizeram para ultrapassar as dificuldades que foram surgindo ao longo do projecto. Este projecto foi também muito enriquecedor a nível de conhecimentos, pois além de fazer com que recordássemos conhecimentos já utilizados noutras unidades curriculares , fez com que consolidássemos conhecimentos já existentes, e ainda com que aprendêssemos um pouco mais sobre aquilo que foi leccionado e praticamos ao longo de todo o semestre.

Referências Bibliográficas

Livros:

MERKEL, Wolfgang; KEANE, John; ALONSO, Sofia - "The Future of Representative Democracy". ISBN:978-0-521-17703-0

TURKEL, Sherry - "Alone Together". ISBN-13: 978-0465010219


Web:

"W3Schools"- http://www.w3schools.com

"Facebook Developers"- http://developers.facebook.com/

"Web Design Fan" -http://webdesignfan.com/jquery-slider-tutorials-and-plugins/

"iOnline" -http://www.ionline.pt/

"Público" - http://www.publico.pt/

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox