The situation would be for a staff development course or a course for communication and collaboration where other teachers (who are students in that course) are uploading their own files to the course site files or certain folder/directory.
I see that I can change the role of my student to a teacher BUT that enables that user to have the same controls as the teacher - which we don't want.
Any ideas or information would be greatly appreciated! Thanks!
The ability to access course files is controlled by the capability moodle/course:managefiles ("Manage files"), which has the value Allow in the predefined Teacher role. When you assign the Teacher role to students, you are giving them this permission, but you are also giving them lots of other permissions that they should not have, like the ability to manage activities. So a better approach would be to give these users the specific permission moodle/course:managefiles ("manage files") = Allow, either by overriding the Student role in the course context, or by defining a simple role CanManageFiles with moodle/course:managefiles = Allow and all other permissions Not set, and assigining the role to selected users in the course context.
However as you have already noticed, this permission gives the user complete access to course files. There is no way to restrict them to a particular sub-folder. Many people have asked for it, but it is unlikely to happen.
Since your students are adult teachers in a professional development setting, then perhaps you could set up subfolders for each of them and rely on them to only add files to their own subfolders. This is probably what I would do. What's the worst that could happen?
An alternative that is often suggested is to use a Database activity.
If I were tocreate a new role for that, would you suggest making a global role for many courses to use or just creating a role within a course (can that be done?).
The forum suggestion is also a good work around. I would have to look into how that would be organized but I can definitly see it working. Thanks for the suggestions.
I really don't like duplicating roles. You end up with lots of big fat roles which differ in only small ways, and you are almost always including permissions that are not required. I prefer to define new, extremely simple roles with just a handful of meaningful, closely-related permissions -- often only one, as in the case of CanManageFiles. These simple roles can assigned independently. For example, you can assign them to the same user, but in different contexts, giving you the ability to target the permission to the context where it is needed. You can't do this with a fat role. You give all the permissions all at once in the same context, whether they're needed there or not, usually with unintended consequences.
Don't think about roles first. Think about users and what they need to be able to do in various contexts. Then list the permissions they need in each context. Then allocate those permissions to role assignments and/or overrides. This is design, and like all design problems, it works up from requirements. Starting from a role is like starting with a finished design (the hammer looking for the proverbial nail).
A technique I encourage people to use is to write a job description. Call it "staff member" (this is a job title, not a role). Then list the responsibilities, both current and future. Use the job description as the basis for your design.
If I were to create a new role for that, would you suggest making a global role for many courses to use or just creating a role within a course (can that be done?)
All roles are defined by the administrator. Roles aren't defined in a context. A newly defined role just is (I don't worry about where it is). A newly defined role can be assigned in any context (including System), and it can be overridden in any context (other than System). If you are the administrator, then in every context (Course, Module, Block, etc.) you will see all roles listed in your Locally assigned roles and Override permissions tabs. Initially, only you will see the new roles listed. You must take explicit steps to allow other roles to assign and override these roles. This is the purpose of the Site administration -> Users -> Permissions -> Define roles -> Allow role assignments and Allow role overrides tables.
Given the above explanation, you can see that your question doesn't make sense. You (as administrator) need to define the role (or roles); then you need to assign those roles to the appropriate users in the appropriate contexts. If you want to delegate the role assignment to teachers, then you need to check some boxes in the Teacher row of the Allow role assignments table.
I have the same problem. I need give edit files access one user, only in a subfolder.
One way to do this is to set up a forum. Participants (including students) can attach files to forum postings, and in the message area, they can describe the upload. If you name the forum something like "Shared uploads" it should not cause too much confusion.