Moodle 2 Frustrations

With over ten Moodle 1.9.* installations that all need upgrading, the next few months are going to be exciting.

I have a clean Moodle 2 install, and a test 1.9 -> 2.1 install, and have been frustrated by some of the changes. I should note that I am also pleased at other changes, but those things I like will get less air-time than those I don’t, ’tis the way of things.

Some of the things I don’t like are:

Category Enrolments

I have not fully understood how these differ from Moodle 1.9 yet, though I am assured they do. Firstly, site-wide and category enrolments do not work the same – I’m not quite clear yet exactly how. There is a new enrolment plugin type called ‘Category enrolments’ that seems to be involved that supposedly restores old behaviour if enabled. This interacts with the new capability ‘category:synchronised’. I believe this specifically synchronises roles at a category down into a course level. I believe it does this as a proper enrolment rather than as an ‘other user’.

What I don’t like about this is that it has changed, I don’t understand it fully, and it becomes difficult for me to ensure desired pre-existing behaviour is maintained.

Hidden Assignments

Another thing that annoys me, is the removal of ‘hidden’ role assignments, replacing them instead with the concept of ‘other users’ in a course that will have access but not be listed as a participant.

On face value this seems to make sense, but one of the way we used to use ‘hidden’ enrolments was when enrolling site-wide users. We would set someone up with Teacher permissions site-wide, and to prevent them showing up as being a Teacher on every course we’d set the role as hidden.

If someone needs site-wide permission levels there is no way to do this as an ‘other user’. Where this Teacher role is granted site-wide because there is no ‘hidden’ option, that person is then listed on every course as a Teacher.

A solution is to tweak ‘course contacts’ so that Teachers aren’t listed as Teachers of a course, or better to duplicate the Teacher role and make sure they aren’t a ‘course contact’. Where multiple roles are used in both visible and hidden ways, this means duplicating those roles and them essentially being identical in ALL WAYS except for which are listed as ‘course contacts’. These roles may then be synchronised back down into courses if ‘Category enrolments’ and the ‘category:synchronised’ capability are enabled. I could easily see this then requiring even more duplicate roles.

Viewing Enrolled Users

In a course when I view enrolled users (course administration->users->enrolled users), I can choose to filter by enrolment method, but not by role. Ditto for ‘other users’. It isn’t easy to get a quick look at who is enrolled as a Teacher. For this functionality I specifically have to use the Participants link in the People block – which doesn’t show up ‘other users’ anyway. I can click on ‘enrol users’ to get the traditional side-by-side view of those enrolled and not enrolled. But (1) there is not a separate view per role, (2) if there are ‘too many users to show’ you’re out of luck.

Display a Directory vs Folder Resource

This is one of my largest frustrations.

In Moodle 1.9 we had a the following workflow.

  • Publications would update up to hundreds of course files (in a neat folder hierarchy) on a network drive,
  • A script would rsync these files with a folder on the Moodle 1.9 server,
  • Within an ‘all course materials’ course we would ‘display a directory’ that allowed students to navigate the neat folder hierarchy and access the hundreds of course files.
  • Because these files are synched when updated, we never need to go into Moodle and delete old files and replace with new ones.

Moodle 2 have changed the way files are handled. Repositories are a new and ‘good’ way to handle files in Moodle 2. As a consequence to the ‘new way of doing things’ the ‘display a directory’ resource. This has been replaced by a ‘folder’ resource.

When creating a ‘folder’ resource there is no way to point it to a folder within a repository. If all your hundreds of files from the server sit in a file-system repository, you can one-by-one add the files to your course ‘folder’, but not in bulk. Once a file is placed in your folder from the repository it is replicated into Moodle’s database. Presumably if the original file in the repository updates, nothing happens to Moodle’s database copy, and so every time a file is updated, you need to go into the ‘folder’ to remove the old one, and add the updated one.

What is the point of a repository if we can not update documents in there, and know that Moodle is picking up the update?

What is the point of a ‘folder’ if we can’t bulk select files from the repository? And no, adding zipfiles and unzipping them into the folder is NOT a suitable alternative.


Yesterday saw the first upgrade of the first of our live installs, and there were mixed results.

Capability – folder:view

More ‘folder’ frustration as it turned out that in my fresh M2 install, my test M2 upgrade, and the live M2 upgrade that the capability ‘folder:view’ is not set to ‘allow’ for students. What does this mean? It means that the ‘folder’ resource, presumably intended for students, is not actually visible to students!

I don’t know if this is a default Moodle 2 setting, or just something wrong at our end – but it certainly got me kicking, screaming, and pulling my hair out about folders all over again!

Capability – course:view

Going back to my frustration with site-wide and category enrolments, imagine my frustration when everyone with our ‘College Admin’ role (site wide) who had previously been able to see all courses, was suddenly unable to see any courses! It turned out that this was because their role did not have the ‘course:view’ capability. In our other 1.9 installs this role does have this capability, so either something took it off in the upgrade or this one install didn’t have it set (I don’t believe this!).


While I am pleased at some of the new features (cohorts!) of Moodle 2 I am really disappointed in the loss of some Moodle 1.9 features.

8 Replies to “Moodle 2 Frustrations”

  1. re: folder:view capability

    It seems this is unset by default for the student role but should be set by default for the authenticated user role – it wasn’t for me (boo) but at least the default isn’t CRAZY like I worried it might be (yay)

  2. I’m with you on all of these gripes, except of course the permissions issues related to your installation 😉

    It seems to me that, despite many enhancements and new features which will no doubt benefit teaching staff and students, Moodle 2 is designed to significantly increase the workload of administrative staff. A good example is the new “cohort sync”, which is intended to replace category enrolments. Each cohort is a group of users with no assigned role within the cohort. This means you need a new cohort for each role you wish to assign. Once you’ve created and populated the cohort you then have to add each cohort to each applicable course, choosing the role in the process. There is no option to assign a cohort to a role in all modules within a category, and so without significant development (which, thankfully, we have) it creates a huge administrative burden. Even then, I’m still struggling to get it working properly.

    I hadn’t even realised the hidden assignment issue, so thanks for that one. Have you worked out “sticky blocks” yet? I managed to get help from Tim Hunt to set mine up, but teachers can still move or hide the blocks within courses, so a core-code change (or “local plugin”) may be required. See for my initial rant.

  3. Fortunately I don’t care about sticky blocks, so I don’t have to worry about them. From the sound of it if I did care I’d be pulling out even more hair :/

    I agree with you about cohorts – but we are looking at some development to tweak a 3rd party plugin that will automatically create, populate, and sync cohorts from our LDAP.

    We will still have to manually assign cohorts to courses.

    The missing functionality IMO in this workflow is then linking cohorts into groups.

    e.g. If I had 3 groups in LDAP called Psych-101-A, Psych-1-1-B, and Psych-101-C I’d like each to become a cohort. I’d then pipe all three into a single course called ‘Psych 101’, and then within that course I’d pipe each into a separate group/grouping. That would then let me not only sync enrolments into courses, but also into groups/groupings.

  4. Agreed, but I’d be happy if you could just set cohort enrolments at the category level so you don’t have to do it in every course. What bugs me is that Cohorts are shoved down your throat the entire time you’re trying to set up a category enrolment; on the docs page for category enrolments and also when you edit this enrolment method’s “settings” it just says “Category enrolment plugin is a legacy solution for enrolments at the course category level via role assignments. It is recommended to use cohort synchronisation instead.” with NO settings whatsoever. Yet cohorts don’t offer the same functionality.

  5. I know! The number of times I’ve read that and wanted to kick someone! Cohorts are great, could do better, but great. But whatever they are, they are NOT a replacement for category level effin’ enrolments!

    Breathe … must … breathe …

  6. Hi, good to see intelligent people have noticed the loss of basic functionality (or the removal of it completely in the case of 2.2 “file management”).

    I am trying to give a colleague (soon to be plural) access to my courses in an “observer role”. Like a superguest, or ofsted inspector, who can walk into your courses and have a look round, maybe leave a comment but otherwise not edit or interfere with the lesson. I want them to see what good things I am doing without being in the gradebook. I thought I could make them a site-wide non-editing teacher and then reduce some of their permissions. No such luck.

    No such role exists and if I create a cohort I have this lengthy procedure via “enrolment methods” for each and every course within my various categories, SEPARATELY.

    This is crazy, and not for the first time I have wasted so much time re-enabling a legacy solution that would do the job to find it doesn’t work… then google, then moodle docs … no solution. Don’t suppose you have any idea how I do this since google has brought me to you. Sure you’ve got better things to do, but then so have I and I’m getting really frustrated. If you get within kicking range, kick them harder for me, or point them out to me and I’ll help.

  7. Hi Paul,

    We do something similar to this, so I think this is possible.

    From your define roles page /admin/roles/manage.php pick the role with permissions closest to the one you want for this observer role (probably the non-editing teacher role if you have it).

    Click on the x2 icon next to it to make a duplicate. Give it a new name, shortname, etc.

    Make sure you pick a role archetype – this way when new capabilities come along later this role will be granted the permissions of the archetype (learnt this the hard way).

    Skim through the permissions and add/remove as suitable for the observers. One you *will* need is “View courses without participation” (moodle/course:view)

    Under ‘Context types where this role may be assigned’ make sure system and category are ticked.

    Then go to the assign system roles page /admin/roles/assign.php?contextid=1 and give a test user your new role, and test to see if it works.

Leave a Reply

Your email address will not be published. Required fields are marked *