one xp-block for all moodle formation
Closed this issue · 12 comments
Ih, I begin to use your plugin in Moodle, i think it's really a good way to gamify courses! thank for your work.
But i try to use it for not only for one course, but for all year :
at the begining of the year all student have level 1, and they can have access just 2 or 3 courses. Then they have choice to begin to learn because they can choice the first course they want to do and after choice the second course, ect... . step by step they level up. When they win a new level, they unblock news courses. So they have choice again to do next courses.
All the years student can create them self the progression beetwen all courses.
I try to use your plugin to do like this but i can see it's just to manage one course by one course.
What can i do to uses your plugin on this way?
Hi,
I have to admit that by design the plugin is limited to one course. There must be ways for you to customise the plugin to share the XP across courses, but that will require some major tweaks.
If more users are interested in this feature, it is not impossible that I look into, but at the moment I will not have time to.
Thank you for your feedback!
Fred
It's ok, i don't haveyour level to coding php, but after few hours, i find a way. I know it's barbarian method, but modify a little bit php source like this :
replace all call instance
$manager = block_xp_manager::get($courseid) by $manager = block_xp_manager::get(1) (in all php code)
and also $manager = block_xp_manager::get($this->page->course->id) by $manager = block_xp_manager::get(1) (in "block_xp.php")
so now I have only one instance of level up for all courses.
perhaps i must write manually experience for my student, but it's okay...
Thank to you
Max
Sure, that might work. But then all the courses are shared, not a subset or a sequence. Also, look at the helper.php as the observer might do some conflicting filtering. Same with permissions, etc... There are assumptions in the code that the course is not the front page.
I completely agree with maximedub. We'd like to use the plugin across courses, system-wide.
Phoenix
Just to make sure I understand the request. Would you want the XP of all courses to be displayed in one block, or would you want the user to gain XP for events that happen on the site level as well?
Sorry to respond so late, I'm very busy actually. For me, xp_block is the center of my moodle. but my modification have some trouble with the last version of moodle. I can't find the way and I don't have time actually to find to find it.
It just working with Moodle 2.9 (Build: 20150511)
It would be great if XP of all courses is displayed in one block. If users gain XP in different courses and compete with all users at site-level, they would be more motivated to gain XP from more courses. Therefore they will spend more time on the platform.
We can use one liderboard for the whole site.
Dimo
I have a bit of time at the moment and would like to sort this out, however I am unsure what it is that you guys exactly want. We have two options:
1/ One block for the hole site
This means that the block can be added anywhere and will capture events in all the courses at once. There will be only one single leaderboard for all the sites and it becomes impossible to have a leaderboard in one specific course. In other word, the only course that the block is added to is the Frontpage, and it aggregates all the events from all the courses.
2/ The block can aggregate other blocks (courses)
This is really a different approach. Basically the block would display a leaderboard of all the users sorting them by the amount of experience points they gathered in all the courses where the block is enabled. That means that the block still needs to be added selectively to each course that will contribute to the global leaderboard, which gives the flexibility to ignore some courses, but also has the downside of requiring the block to be set up for each course.
I would personally prefer to go with the first solution for a few reasons:
- Performance wise it is much more manageable to go with solution 1.
- Solution 1 enables the capture of events on the front page.
- Solution 2 would fit better as a separate block/plugin, and solution 1 does not prevent that.
- Solution 2 can be confusing to the students if they see different XP all over the place (Course 1, Course 2, Dashboard, ...).
Cheers,
Fred
As a student I would like to see:
- my global leaderboard on the all site
- my leaderboards per course
Which translate into
- site block: the block would display a filter listing courses where I am enrolled. The block would then filter the course participants when i select a course.
- course block (then as a Moodle admin you likely don't want to set a site block): as the plugin works now
From a technical point of view I would store all the xp events to be able to check for (parent) course context. Maybe it's too many info to store... then I would calculate the course score on the fly (likely at it is already done)
The first solution sounds good to me if it is possible to add the block in each course.
Cheers,
Dimo
It's the same for me too, the first solution with option : event don't attribute xp if possible.
Thanks for commenting guys.
Thinking a bit more about this overnight I really think that the first solution is the right one. The problem if we have XP/Leaderboard based of other courses is that the data will be very inconsistent and meaningless.
Every course can set its own preference regarding the levels that you can level up to, how much XP is needed for each and how each event contributes to the XP. So, if we aggregate the XP a student got in all the courses he is enrolled into, what will be its level? We cannot use the standard formula to determine their level as they multiply their XP by the number of courses they are part of, so the teacher would have to set a formula.
So far, it's not too much of a trouble, except that it's adding more work for the teacher. But, the problem is that we now would have a single block with leaderboard and levels which is comparing students not necessarily being enrolled in the same course. Students in less courses, or courses which do not include the block will have very little XP compared to students in more courses, or in courses that give more XP per event.
Conclusion: Solution 1 wins.
Thanks!
Fred