Coder Social home page Coder Social logo

Comments (12)

FMCorz avatar FMCorz commented on July 19, 2024

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

from moodle-block_xp.

maximedub avatar maximedub commented on July 19, 2024

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

from moodle-block_xp.

FMCorz avatar FMCorz commented on July 19, 2024

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.

from moodle-block_xp.

phuonghoangdn avatar phuonghoangdn commented on July 19, 2024

I completely agree with maximedub. We'd like to use the plugin across courses, system-wide.
Phoenix

from moodle-block_xp.

FMCorz avatar FMCorz commented on July 19, 2024

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?

from moodle-block_xp.

maximedub avatar maximedub commented on July 19, 2024

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)

from moodle-block_xp.

basethic avatar basethic commented on July 19, 2024

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

from moodle-block_xp.

FMCorz avatar FMCorz commented on July 19, 2024

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

from moodle-block_xp.

mouneyrac avatar mouneyrac commented on July 19, 2024

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)

from moodle-block_xp.

basethic avatar basethic commented on July 19, 2024

The first solution sounds good to me if it is possible to add the block in each course.

Cheers,
Dimo

from moodle-block_xp.

maximedub avatar maximedub commented on July 19, 2024

It's the same for me too, the first solution with option : event don't attribute xp if possible.

from moodle-block_xp.

FMCorz avatar FMCorz commented on July 19, 2024

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

from moodle-block_xp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.