Model complex permissions based on groups - plone

I am trying to model the following permissions in Plone and would like to know the best approach I should take:
Group 1 - Senior members
Group 2 - members
Group 3 - Senior members
Group 2 - members
All the members in the groups shouldn't be able to view any content item associated with them.
Senior members should be able to view and amend content items within their sub groups but should not be able to view each others content items - these content items all have a user_id field to indicate who the content belongs.
Members in sub groups should not be able to view content associated with senior members nor each others content items.
Thank You

I think you're going to get the same answers here as you got with your mailing list post: http://plone.293351.n2.nabble.com/Implementing-bespoke-access-control-levels-in-Plone-td6986879.html
You'll need to write your own local role adapter using http://pypi.python.org/pypi/borg.localrole. Perhaps take a look at http://pypi.python.org/pypi/borg.project as well and the article introducing it: http://www.martinaspeli.net/articles/developing-with-plone-3-borg.localrole-and

Try using collective.subscribable sections. I haven't fully tested it yet, but it seems to be doing the job for me. I went the borg.localrole route, and it was a major pain, and I was never happy with my solution.

Related

Logic to Sell Memberships for Children Using Ubercart and Drupal

I'm sorry if this is not within the acceptable question guidelines for Stack Overflow, but I am feeling stumped, and I feel that what I'm trying to do might just be incredibly simple for some of the veterans here.
I've set up an Ubercart on a Drupal installation for a small gym website. What they are wanting is to allow a customer to register and pay for various memberships for their children (youth flag football, teeball, etc.). One person may come back and sign up multiple times throughout the year, and each customer may have multiple children who can each participate in multiple programs.
What I'm thinking is to disable anonymous checkout on Ubercart. The customer billing address will be the saved information for the "parent." I'm thinking that the parents could create Members (their children) which could be stored in a content type called Members and the Members could be linked to the programs of which they are a member via entity reference. The children could maintain their relationship to their parents by authorship.
I've been trying to work through this for the last few hours. Does anyone know of a way the I can accomplish this--maybe with rules? I'm thinking some kind of credit system in which for each quantity of a membership (per program) that they pay for, they get one "credit" to create one entity reference between a member and a program.
Any brainstorming and help on this topic would be majorly appreciated. Thanks.
Your use case sounds more like event registration than selling memberships. Each class would be an event that parents would register their children for. It may seem like overkill here, but I would use something like CiviCRM or RedHen CRM for this. Both support the concept of relationships between members and provide event management tools. You could make each class an event that people would sign up for, pay (they could even register multiple children at the same time) and get a receipt. The event history information would be stored so parents could sign in and see what each child has done. You could even make the list of kids in the class public so parents could see who else is in the class.
Afterward, it would be easy to put together a survey to send to the "attendees" to get feedback on the event/class and notify them about future events. I can think of a dozen different things that these systems cover that you may need in the future (early bird event registration, special pricing for returning parents/children, activity reports to email to parents every year so they can see what their children did...).
You may be able to pull together modules and custom content types (Ubercart Event Registration module as a starting point), but a CRM would provide the things you are looking for now, and the features your customer will be asking for in the future.

Drill Down Search using Sql

it seems like alot of ecommerce sites these days are providing products filters to search for items. For example you can search items by WIDTH,HEIGHT,TV SIZE, Furniture Type etc.
now if it was a simple website with just a few searchable filters then its easy to do, but I am managing a website which sells furniture,appliance & electronics and every category has alot of sub categories as well. for example:
Appliance:
Laundry
Searchable Attributes (Washer,Dryer,Washer Type..Microwave,Width, Height)
Electronics
Tv(Tv Size, Width)
Games (ps3, Genre,Sale Date)
I am sure you get the idea. an ecomerece sites offers basic categoies and then every category could have sub categories OR Searable filters to drill down your search.
what would be the best way to do this using MS SQL Server & Asp.net. I am interested in creating a optimized searchable schema in SQL.
any Hints, Suggestions will be welcome.
Thanks
You can use the Entity-Attribute-Value model.
The simple concept is that instead of having a column for each of your model's attributes (such a genre, sale date, etc for a ps3 game), youll have another table, named Attributes, where the attributes and their types will be listed, and a third table, where your main model instances (ps3 game) will be linked with attributes via 3 columns:
Model Id (the id of the ps3 game)
Attribute Id
Attribute Value
This concept might be harder to manage, and require more complicated queries, but it will alow addition of new products / categorites in the easiest way.
Of course, with this model, if few products share a common attribute (sugh as pc game and ps3 game sharing a genre), you'll have the attribute defined only once, and both model will be linked to it, allowing a common search query on different products.
Too much for a single question. Look for a book on database design. For a drill down you can have a table with as many PK columns as drill downs. But when it comes to details you will need separate tables as TV does not have the same details as a stereo.

Organic Groups - types of nodes allowed to create

Wondered if someone can shed some light on OG groups in Drupal.
I know you can restrict what types of NODES that can be created within groups, but what if yuo have two types of groups. Can you restrict the creation of a certain type of node to only one group ?
Example:
I allow users to create groups called Sports
I allow uses to create groups called Movies
I have two types of nodes: Food & Shoes
Can I set that the Food node, can only be created inside the movie group
And set that the Shoes node can only be created inside the Sports group ?
thanks :)
Core behavior of OG is that every Content type defines it's own relationship to OG. They might be barred from a group relationship, a group node, or a group post. There is nothing in that base configuration to specify the relationship between a content type and each group type individually.
However, there are a few tricks you could put in place to try to facilitate something.
Cheap Trick
For example, if you hide the navigation to create a node of a given content type, you've cut off the obvious approach.
OG User Roles
Probably the most conventional trick I can think of would be to carve up the different content types on a permissions level. I'm not entirely positive this will work, so it will bear some experimentation.
Create a Sports Writer role, limit the ability to create and edit Basketball nodes to it.
Use OG User Role to automatically promote members of the Sports group types into the Sports Writer role.
Cutting Edge Shenanigans
You can also use the Spaces module to toggle content type availability by Feature. In fact, the implementation of spaces_menu_alter() might show you how you could programmatically build out the functionality you are looking for. Sounds like it would be useful.
When you create a Shoe/Food node, there is a dropdown/select list to choose the group it gets added to, right?
It should be possible to write a module that implemented hook_form_alter to intercept the node form for the food and shoes node and do a lookup based on the node type to filter the groups made available to it.
edit This module seems to exist, it may do what you require: http://drupal.org/project/og_content_type_admin

drupal user interested terms

hi i'm using drupal 6. In my user page i want to show latest activities related to user interest. interest means terms that user participated (forum topics, articles, polls..). Can any one know the best way to do it.
For ex : stackoverflow shows questions related user participated tags.
This sounds like something you might be able to do using the Flag terms module (http://drupal.org/project/flag_terms). This is a module that complements the much acclaimed Flag module (http://drupal.org/project/flag_terms), by allowing you to flag certain taxonomy terms. You can use views (http://drupal.org/project/views) to display lists of user flagged content.

best way to manage team membership in drupal-based site

I'm creating a site to manage a sports league. At the beginning of each season, there's a draft during which captains choose their teams. Currently, I'm considering using Organic Groups and/or a user reference field on the Team type. (Which one? Both?)
I'd like to provide a clean interface for managing the draft where an admin would have a bucket of users and could drag them into buckets for each team. Or between tables or via a dropdown interface or whatever. I'm less concerned about the interface at the moment than I am that:
the admin can see and edit all the users
grouped by team
with an ungrouped group
easily move them between the groups
I imagine I might be able to use views bulk operations to whip something up, but before I do, is there anything like this out there?
It sounds like a good scenario for organic groups, as you suspected. You can make a private group per team, and only allow administrators or 'team captains' to add people to a given team. A views query can allow you to show a page of players who don't belong to any group. We do something similar for project teams.
Yup, perfect scenario for Organic Groups! That's exactly what that module was meant to do.

Resources