An HMVC module to specialize controllers and views

Bráulio Bhavamitra braulio at eita.org.br
Sun Jun 1 15:12:21 BRT 2014


Hello all,

At EITA, we use Noosfero social-economic with multiple *plugins* (think of
engines), each one with its models, controllers and views.

These plugins may interact with other, even overwriting the behaviour of
another plugin. That is where HMVC enters. The stating point for that in
Controller Inheritance. By making one plugin's controller inherit another
plugin's controller, you mean you want to *reuse/overwrite* its *actions*
and *partials/templates*, and *replace URLs* to use the more specific
controller.

It is something like the STI in models.

I have made a simple module,
https://github.com/CIRANDAS/noosfero-ecosol/blob/master/plugins/suppliers/lib/controller_inheritance.rb,
with which you may call on the controller:
  hmvc PluginClass

The PluginClass respond to a controllers method to know which controllers
are defined on this hmvc context. Then it create a hash of controllers
paths, based on controllers' classes inheritance. With this,
*partials/templates* will look up on the entire inheritance tree and *URLs *are
replaced to use the most specific controller available on the inheritance
tree.

This HMVC model is not a multi-app model with each app sending requests to
one another. It is in-app HMVC.

Also, something similar was done to I18n, allowing translations overwrite,
depending on context.

*I would like to make this a gem (maybe rails-hmvc), so anyone interested
in colaborate please contact me.*

cheers,
bráulio

-- 
"Lute pela sua ideologia. Seja um com sua ideologia. Viva pela sua
ideologia. Morra por sua ideologia" P.R. Sarkar

EITA - Educação, Informação e Tecnologias para Autogestão
http://cirandas.net/brauliobo
http://eita.org.br

"Paramapurusha é meu pai e Parama Prakriti é minha mãe. O universo é meu
lar e todos nós somos cidadãos deste cosmo. Este universo é a imaginação da
Mente Macrocósmica, e todas as entidades estão sendo criadas, preservadas e
destruídas nas fases de extroversão e introversão do fluxo imaginativo
cósmico. No âmbito pessoal, quando uma pessoa imagina algo em sua mente,
naquele momento, essa pessoa é a única proprietária daquilo que ela
imagina, e ninguém mais. Quando um ser humano criado mentalmente caminha
por um milharal também imaginado, a pessoa imaginada não é a propriedade
desse milharal, pois ele pertence ao indivíduo que o está imaginando. Este
universo foi criado na imaginação de Brahma, a Entidade Suprema, por isso
a propriedade deste universo é de Brahma, e não dos microcosmos que também
foram criados pela imaginação de Brahma. Nenhuma propriedade deste mundo,
mutável ou imutável, pertence a um indivíduo em particular; tudo é o
patrimônio comum de todos."
Restante do texto em
http://cirandas.net/brauliobo/blog/a-problematica-de-hoje-em-dia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20140601/f606272e/attachment.html>


More information about the Noosfero-dev mailing list