- 1 OverView
- 2 Details
Crabgrass was never designed to be radically altered for different installations, but this is how people are using it. Crabgrass-core is a total rewrite of the view and controller code with the goal of making it really easy to customize the behavior of the application. Furthermore we are re-writing the permission model.
Design goals for crabgrass-core
- create a powerful, stable, and well defined API for customizing themes and mods.
- create a minimalist UI with the basic features needed for crabgrass. At every turn, do what is most clean and simple for now, and allow different installations to remove or enhance the feature if desired.
- refactor the helper code and the base controller code to provide more logical and simple support for error reporting, permissions, etc.
- make it super easy to install crabgrass-core and make sure it works on a variety of platforms.
- create a flexible permissions model for groups, networks and people.
you can get the crabgrass-core repository from labs.riseup.net:crabgrass-core.git
Code has been moved out of the core and is being re-added, reviewed, and reworked one bit at a time. Things taken out will either be added back to the core or put outside the core.
Added Back to Core¶
- crabgrass-core is being built in rails 2.3.x
- FIXME (something here about engines vs mods and core using RoR standards. this wik
lays out how pre-core cg mods worked. i believe for core-crabgrass we are using more standard rails structures.)
- This is a deep rework of the models underlying the permissions system to allow for a much more flexile and powerful permissions. We’re moving the permissions flags like “may_pester” out of the profiles and into a separate model. Then you can grant each of these permissions to a certain entity such as your friends or members of a particular group. This way we can even map the permissions a council has on its group.
- This also means moving away from having the permissions policy in the controller permissions and instead moves them into the model creation. For example … we used to check if the current user is a member of the groups committee for administration. Now we will grant administration rights to everyone in the group committee upon creation and check for the administration rights when needed.
- for the initial work the behavior of permissions will remain the same.
- The way mods define hooks now is really limited. Version strings will be used to show a break in backwards compatibility.
- Theming wiki
- this is mostly done.
- the system allows flexibility without ability to break the html. you can customize a lot of the css, but you wont touch the selectors without digging.
- part of the theming is a flexible navigation system. Navigation has been abstracted allowing themes to define the entire navigation hierarchy.
- part of the theming is is a set of toggle options, things you can turn on or off, like for example full width masthead or no.
- Along with the themeing system rework a large UI rework is underway.
- CSS work is being done to create an out of the box UI that can be customized.
- The changes will be used by riseup, and the theming system will allow current installations to keep their UI / design if so desired.
- These have been added back to core and are mostly left alone for the initial core rework.
- Changes to the sidebar previously scoped will be made. we.riseup.net/cgdev+ui/unicef-wireframe...
- path_finder: rework to resolve inconsistencies between the mysql and sphinx searching.
- reworking the search UI.
- re-writing alert system. alerts fade away or can be x-ed out.
- updating the controllers that control the me-sections in a way that models how controllers in general are written for crabgrass.
Moved out of Core¶
Yet to be touched¶
Are these going back into the core? are they being reworked for 0.9?
Notes on getting a dev environment setup and/or installing crabgrass-core.
- blueprints gem missing when trying to run ‘rake test:units’
- INSTALL doc does not mention sphinx install
can I get access to git clone labs.riseup.net:crabgrass-core.git ? — I get Permission denied (publickey).
i’m keeping a running list of issues to the documentation in the redmine issue tracker. it needs some cleaning up and organizing, which i plan to do this week. in the mean time the ticket with the install problems is here labs.riseup.net/code/issues/2662
Hi, I am very interested in your plans of how to rework permissions!
Is this the right place to follow these specific area of development – BTW I have real problems finding things in crabgrass and even more problems in deciding where to post things… however, it would be very clever to implement RBAC into crabgrass, these things do not have to be reinvented, the base work for this is already existing – many very clever heads have spent many hours thinking about groups and permissions – just google for RBAC and you will find everything you need – Ruby implementations of RBAC exist.
We have a number of special roles such as “friends of azul” that require some features I don’t expect to find in the standart RBAC – but if there are tools that match our needs I’m happy to adopt them rather than reinventing the wheel as you say.