Forum OpenACS Q&A: Project Manager: Subsite Aware ?

Collapse
Posted by Malte Sussdorff on
I was wondering how I can achive the following with Project Manager (as it does not seem to be subsite aware).

I have a subsite for each of my clients. Obviously, the clients should only have access to their respective client projects.

How do I do this? Is it possible to just have one PM instance with all the clients projects but assign certain projects only to certain clients (and they will only see the projects they are assigned to in the overview) ?

How do others deal with this?

Collapse
Posted by Nagita Karunaratne on
I was working on this but stopped a few weeks ago.

I'm no expert but it seems that the project-manager is based on the content-repository. I could not find any 'package_id' parameter in any of the pm_* tables.

One possible way may be to subtype the cr_items table with a 'pm_item' object_type and have a 'package_id' item parameter much like cr_folders.

This would allow multiple packages and each project to map to a particular package. Also a package may have multiple projects.

Collapse
Posted by Dave Bauer on
A better solution is to create a table mapping package_id to a cr_folder and to give each project manager instance a cr_folder for its projects similar to how file-storage works.
Collapse
Posted by Nagita Karunaratne on
Would you add a new file-storage package (to each subsite) with a root folder and give all the projects in that subsite a folder under this root folder

or

would you create an a file storage package in the main instance with a folder for all projects and give all subsite project manager packages each a root folder under this root folder and under each of these folders give them folder for each project.?

I guess thats a little confusing.

Collapse
Posted by Richard Hamilton on
Malte,

I am planning to do some work in the coming weeks to address a similar requirement. What I plan to do though is this:

1) Modify the code to support permissions control at project and task level.

2) Progress the user interface to support sub-projects and 'aggregate tasks'.

The end result would be that groups/parties could be used to conveniently control who can see what. A master Project Manager instance on the Main Subsite could share projects with a subsite mounted instance of PM (and vice versa) based on permissions and group membership.

I also think Dave's suggestion is a good one - I think that it should be an option when mounting an instance of PM whether or not you want its projects to be completely insulated from other instances (content folders used where the answer is yes) or able to share between instances.

Regards
Richard

Collapse
Posted by Malte Sussdorff on
Richard, what you plan to do is great. Let me know when you got started and I will help with testing. And yes, in an ideal world I would like to have on "master" instance where I can decide whether to insulate each project or not. But I'm not sure how this will behave with logger (though logger has the option to aggregate each logger instance into a master logger if I'm not utterly mistaken).

Either way, let me know how it goes, looking forward to it.

Collapse
Posted by Jade Rubick on
There are two separate issues here:

One is making project-manager subsite aware. I think Logger does a fairly good job with this, and can be looked at as an example. Logger allows you to determine what each subsite sees. I wouldn't just copy Logger's implementation, but it's worth looking at.

The second issue is permissions controls. Currently, project manager allows you to see and manipulate just about everything if you have permissions on the package_id.

Both of these are great improvements to make, but they must be implemented carefully.

Collapse
Posted by Michael Steigman on
Just an FYI - subsite awareness in logger is broken now. It was working as of around 6 months ago but entries now show up across instances.
Collapse
Posted by Richard Hamilton on
OK, I think I am missing some important details here. What exactly is meant by the phrase "subsite aware".

I had presumed this to be that a module respects the groups and permissions associated with the subsite node upon which it was mounted. I assumed that this was simply a matter of ensuring that the necessary permissions inheritance was correct.

What else in involved in conferring subsite awareness?

R.

Collapse
Posted by Dave Bauer on
Subsite aware really isn't the right description. What people mean when they say that is that each instance of a package only displays objects created under that package instance.

The term subsite aware was probably originally used when folks though subsites would be used to group package instances together. So that each subsite would host one instance of project manager, and each project manager instance would only should those objects created under that instance.

So, to build in awareness of package instance the main objects in a package under OpenACS 5.1 should store a package_id or other identifier of which package instance they were created under.