BIM – manage marking – view and release

This post continues on from the manage marking work and describes the design/implementation of the view and release operations of manage marking. There are strong similarities in what both operations do and how they do it, so doing them in one.

Both view and release take a collection of values and subsequently query/update the bim tables.

Implement simple controller

view.php gets a simple controller to call the right function. bim_manage_release and bim_manage_view.

Basic algorithm

Both will follow the same basic algorithm

  • Check and get the values for the parameters.
  • Perform operation
  • Display the result.


Aim to show essentially same data as show_teacher_post_details but based on a particular set of student ids.

  • Get student ids that match parameters.
  • Get matching student, marking and feed details based on student ids.
  • Get the details of the specific marker (if one).
  • Use the bim_setup_posts_table and bim_create_posts_display functions.

Posts/students in the “missing” category are going to be somewhat more difficult. “Missing” only makes sense if there is a question allocated. i.e. they are missing posts as answers to that question. So, missing = all students in course – those not belonging to the marker (if marker exists) – those with posts. And some of these will be unregistered, will need to handle those.



This is somewhat different – no missing – but mainly because it will seek to update the database, rather than display information from it.

Given either marker, question or neither, the aim is

  • generate a number of ids in bim_marking for posts that match the criteria and then to update them to Released.
  • only interested in posts that are:
    • currently in the Marked state
    • match the marker and/or question
    • if none of those, then it should match the bim

All pretty straight forward and it is now working.

What’s been done

The Manage Marking screen for coordinators has been completed. This brings to end most, if not all, of the interface for BIM.

What’s left includes:

  • The background/cron code to mirror and allocate student posts
  • The process for putting results into the gradebook.
  • Identify the CQU specific method for putting students and markers into groups together.
  • A general re-check of some of the code including:
    • Modification to meet Moodle coding guidelines.
    • Re-factoring the structure and location of functions.
    • Double checking the early functions on the basis of more recent knowledge.
    • Looking at the use of flexible_tables and in particular the sorting.
  • General run through the BIM life cycle.
  • Creation of online help resources.
  • Adding BIM into the Moodle contrib section.

BIM – Manage Marking

We come to the main last collection of functionality required of BIM to be operation (a major tidy up is needed after this, but it’s getting there). That last collection is currently going under the label “Manage Marking”. It covers the functionality required by the teacher in charge of a course to manage the marking being done by other staff, this includes the following tasks:

  • Track the marking progress of other staff.
  • Be able to quickly find and view the progress, marks and comments associated with a particular student (i.e. when they complain to the marker).
  • Eventually this might include some sort of advice/suggestions around what is going wrong for the student (mostly around their feed and its subscription).
  • The ability to manage the release of marks and comments.
    By default, a marker can only mark a student post. In this state, the student cannot see the mark or comments. The coordinator is meant to moderate the mark/comments and then, when ready, release them.

Additional discussion of this collection of functionality was in an earlier post

This post is an attempt to boil that basic overview into some more detailed plans for the implementation of this functionality and possibly discussion of how it has been implemented.

Implementation plan

Aim to have the more comment task on the first page, immediately accessible, including:

  • Button/link to release all current marked posts.
  • Button/link to view all current marked posts.
  • List of markers/groups and the stats on their progress
  • The stats should probably include a list of all questions for this BIM activity. For each column have a link to release all marked posts for those questions and also for those markers.
  • Each of the “stats” in the table should be a link to drill down the details of just those students that fit the stats.
    In turn, on this “drill down” page, have the links to release all marked posts of various types, including checkboxes to select individual students.
  • Search box to enter part of student username or name and see details about them.

This requires two fairly general methods/screens to:

  1. Release results; (op=release)and
    The idea here is that given a subset of student posts (represented in someway) that are currently in the Marked state, they need to modified into the Released state. Based on current designs the methods will be
    • Release all marked posts – no parameters
    • Release all posts for a given week (regardless of marker) – question=$qid
    • Release all posts for a marker (regardless of question) – marker=$qid
    • Release all posts for a marker for a given week – marker=$qid&question=$qid
  2. Display lists of students (op=view).
    Going to be 3 different parameters: marker, question and status. Use similar structure to release in implementation. i.e. construct SQL based on parameters passed in and then display them.

Implementation questions

  • Need to consider how the gradebook generates its look and feel and see if I can borrow useful stuff.

Required data

Data required to implement this initial screen includes:

  • List of all markers associated with the BIM.
  • Details of the markers.
  • List of all students associated with those markers.
  • Statistics for those students for each marker.
  • Probably a list of all the questions for the bim.

Get the data

List of all questions

Re-use the bim_get_question_hash

Markers and students

bim_get_markers_students – gets all student details for a given marker in the course. Now just have to find out who all the markers are? I wonder if this is getting into the realm of capabilities, roles and other complications. And perhaps start to have questions connected with the gradebook/grades module

Ok, this looks like it will be done via groups and may involve some local CQU customisation which I need to discover. In the meantime, I’ll stick with writing functions that will essentially work, but initially use some kludgey database tables I’ve added for this purpose. This will be one of the big things to discover.

So, add function bim_get_all_markers_students. It will get all the markers, then call bim_get_markers_students.

At this stage, we will need:

  • # Submitted, # Marked, etc for each marker (i.e. all their students).
    Most of these figures can be taken straight from bim_marking, but won’t have details about those who haven’t been marked. Will need to use the above function.

  • Will also need #submitted etc per question.

Implement bim_get_all_marker_statistics:

  • Take the markers_students array
  • Get list of all markers students ids (keys students)
  • SQL statement group num students in each status by question
  • Use that to populate group based array

Show the data

Rather than a form, I think this display will just be a table of some description. Rather than buttons, use links that can be processed. Will development this in a progressive sort of way:

  • Show list of markers, with overall stats.
  • Show the list of questions for the unit as columns in rows for each marker.

The data is being shown. Just need to add the links to release and view and this part will be done. Do release and view in a separate post.

To do this need to:

  • Show “release” link, when there is something to release for:
    • Each marker
      Which implies I need to know the overall status stats for each marker. bim_get_all_marker_stats is the obvious place to do this. Add an entry Total
    • Each marker and question
    • Each question
      bim_get_question_response_stats does this. Use that
  • Show “view” link, when there are students to view for each status for each marker DONE

What’s been done

I’m cutting this a little short in order to get onto other things. Currently the screen is showing a table that gives a summary of marker progress. It provides links to release results (where appropriate) and to drill down to specific student details (where appropriate).

What hasn’t been done

The main thing that needs to be done is the addition of the search box for a specific student. Though that should probably be provided for the normal marker as well?

What’s next?

Time to implement the “release” and “view” operations associated with manage marking.

BIM – question management/configuration

A central assumption in BIM is that student contributions to their feeds are, at least in some part, intended to respond to questions or activities that have been created to encourage reflection and other good stuff. This requires that the teaching staff using BIM have a mechanism for creating and changing the questions students will respond to. This post describes the initial implementation of this screen.

This will be implemented using Moodle’s formslib and borrow on work already done. It should be fairly straight forward.

Required data

Just about the only data required will be all the data associated with the particular BIM activity within the bim_questions table.

Will also want to include some statistics about how many students have answered, marked and released responses to these questions. This is to give staff some warning that they may not wish to delete a question for which people have already provided answers.

Get the data

Already have bim_get_question_hash

Need to generate stats about posts for a list of marking_details. This isn’t exactly what we want. Need generate stats for each question.

Add function bim_get_question_response_stats which will :

  • take an array of all the questions we’re interested in.
  • add a field response_stats for each question which is an array with keys matching status and values matching number of responses in the bim_marking table.

Show the data

This is going to be a single form with a set of elements for each question. For each question want:

  • The title as a text element.
  • The body of the question in a HTML editor.
  • The min and max marks in separate text elements.
  • Indication of the statistics of student posts for that question.

Want the coordinator to be able to:

  • Add a new question.
  • Change the values for an existing question.
  • Delete a question?
    In terms of safety, I don’t think we actually want to delete data from the database in response to this. Simply make it not visible to most users.

Any changes to a question, once students have answered the question could be a bad thing, but it is something we want the user to be able to do.

Okay, the form is up and showing the data. Time to process the data when the form is updated. The process for this will be something like:

  • If there is anything in the “add a question” then have to add a new entry into bim_questions.
  • If any of the existing questions have changed, then have to update those entries.
    • Loop through each question.
    • Compare the content of the question from the database with the content from the submitted form.
    • If there is a change, add the question (minus stats) to another array.
    • At the end of the loop use update_record with the other array to update the database. DONE

Essentially got add working, but need to clear the form and re-load the questions afterwards to get correct performance this will require some re-factoring of the function to remove duplicated code.

Well, according to this thread it appears that you can’t do this. So, I’ve had to go with the redirect route. Done and working.

Last steps to be done:

  • Check that the addition and modification is working.
  • Add in rules into the form for basic checking. e.g. (complete this in the cleanup at the end)
    • All elements of a new post must be provided – also with existing.
    • min_mark must be less than max_mark
    • There shouldn’t be duplicate questions (title and body)
    • Maybe treat duplicate title as a special exclusion.
  • Add the capability to delete a question.
    • Add a check box to each question.
    • Detect the check box on submit and delete the question.
    • Ask for confirmation?

What’s been done

Essentially the management of questions is working. It’s not tidy and complete in terms of full validation of inputs and a few other niceties, but those can wait.

On to the “Manage Marking” screen I believe – viewing markers, marking progress and releasing results.

Another idea for research project arising from the indicators project

One of the good and also problematic things about the Indicators project (attempting to identify patterns in LMS usage data) is that there are so many interesting idea for further research that arise from the patterns being identified. What’s best/worst is that the project has really only scratched the surface. This post is an attempt to write down an idea I had today in order to save it for another day, perhaps see if anyone has any insights that can improve it, and if anyone is keen to get involved.

Why is age correlated with LMS usage?

This idea arises out of an interesting pattern that Col has identified. The pattern establishes a very distinct correlation between the age of distance education students and their level of usage of the LMS.

When we presented at ASCILITE’09 the pattern was opposite to what people initially thought. The older students used the LMS more than the younger students. The graph follows.

28,000 Undergraduate distance education students. Average hits grouped by grade.


The obvious question is why? That’s the research project.

I can see three parts to the project:

  • Literature review to find related reports and theories that might offer an explanation?
    Any suggestions?
  • More statistical analysis of the figures.
    The above is, I believe, just hits on the course site. What about course discussion forums? Posts and replies on those forums? What other patterns and correlations exist? How strong are those patterns? Is there something similar for on-campus students? What about on-campus students of different types? Do students perform differently in different courses?
  • Ask the students. (more detail below).

Ask the students

Initially this is an investigation so asking the students probably can’t be done by surveys because of the bias. Open-ended interviews and other methods that are more exploratory than confirmatory would probably be best suited.

You could use the usage logs to identify students that fit within the various groups, ask them what they think and then perform analysis of the responses to see if there are any commonalities.

Perhaps asking students what they are doing on the LMS as the term progresses might be better than a one-off. A one-off interview would be biased by what they were thinking at any particular point in time.

Perhaps identifying the students first might lead to too much bias. Perhaps just ask the students questions during term and then at the end of term look at the usage data.

Suggestions and volunteers?

What could be done to improve this idea?

Interested in being involved?

BIM – getting capabilities working properly

Increasingly BIM development is getting to the stage where the functionality for BIM’s three different types of user (coordinator, markers and students) are just about complete. I’ve been using a very naive, probably misleading interpretation of Moodle’s capabilities system to distinguish between the different types of users and what they can do. Yesterday, doing what I thought was some minor updates, it broke. I’m currently having to use a kludge to get BIM to work for different users. This post is documents my attempts to fix this problem.

The components of the problem

This task is complicated by the mixture of a number of different domains including:

  • CQU practice and the origins of BAM;
    Must of the design of BAM is based around CQU practice, where BAM started. The basic assumption of BAM/BIM (at the moment) is that there are three types of user:
    1. Coordinator – the teacher in charge(s) of a course, can do just about anything.
    2. Marker – any teacher who isn’t a coordinator. Normally responsible for marking the posts of a subset of students.
    3. Students – people registering feeds with BIM.
  • Moodle default roles;
    This is an area of confusion for many and in which I’m still somewhat limited in understanding. My default installation of Moodle has the default user roles of:
    1. Administrator – can do anything in all courses.
    2. Course creator – can create courses and teach in them.
    3. Teacher – can do anything within a course (sounds like a Coordinator)
    4. Non-editing teacher – can teach in courses and grade students, but not alter activities (sounds like marker)
    5. Student
    6. Guests
  • How those default roles are being applied at CQU; and
    It looks like the CQU installation of Moodle has defined some Moodle roles that are more like the original CQU ones defined above. With BIM I’m in the interesting situation of coming from the CQU context but having to create something that will have minimal CQU assumptions so that other institutions can use it.
  • Moodle’s roles, capabilities, permissions and contexts.
    Moodle is moving (since 1.7) to a more flexible permissions system. This is what I need to actually use to achieve the melding of the above. This seems to be the best explanation of how permissions are calculated in this regime.
  • How you define capabilities etc within an activity block like bim.

What I’m planning to do

With an activity module you are meant to define capabilities that exist for that module in the db/access.php file. At the moment, I’m hoping to define the following capabilities:

  • mod/bim:coordinator
  • mod/bim:marker
  • mod/bim:student

Hopefully, there’s a sensible link between these and the above. In the module code I am using which of these capabilities a user has to drive which part of the code is executed. That had been working. It broke yesterday as I was making changes.

Testing it

I currently have different user accounts that take on each of the different default Moodle roles. Each of these are configured to receive particular capabilities within BIM. Time to test them and see what bim thinks they are. This is after a re-boot of the computer (separate reason) and so the outcome may be different. I think there was some “caching” issues yesterday.

  • Administrator – coordinator (correct)
  • Course creator – appears to end up enrolled as a student through moodle. Ignore for now.
  • Teacher – coordinator (correct)
  • Non-editing teacher – generates an error with no recognised capability
  • Student – student (correct)

Okay, seems like non-editing teacher is the only problem. Why?

Dumping out the USER object doesn’t give a lot of information, apart from the fact that this user has a value of -1000 for all the bim capabilities. Which appears to imploy that they don’t have the capability. Yes, lib/accesslib.php defines CAP_PROHIBIT as -1000. Which implies the capbility I have set to CAP_ALLOW isn’t working.

Is it just this capability. What if I change another? Changing db/access.php doesn’t seem to make any different.

First, let’s find out what role the user has, or at least Moodle thinks he has.


I think it’s working now. Seems that after changing db/access.php you have to:

  • increment the version in version.php
  • run the “admin notifications”
  • log the use out and then back in again.

BIM – Mark Post screen

This post is meant to document the (hopefully short) process of getting the Mark Post screen implemented in BIM.

Required data

The screen is passed the various cm->id and the id for bim_marking. It will need to get:

  • Contents of bim_marking – i.e. the post to mark.
  • Details about the student, including progress mark.
  • Information about the other questions – mostly to implement the “ReAllocate” drop box.
    This can borrow from the AllocatePost screen.
  • Information to generate the marking progress information – basically all of the student details stuff duplicated from AllocatePost.

Implementation questions

This will be implemented using a form and be very similar to the AllocatePost screen. Should be able to borrow, reuse and re-factor most of that code.

So, let’s try that first. Copy the allocate method and make the changes necessary for marking (if this works, it shows the design ain’t that great).

First change is that markingId is passed in, not user id. That fixed, it’s basically working. Now need to create the form.

This is essentially a modification of the allocate posts form to deal with a single post and include a HTML editor for creating the comments.

Some initial problems with setting the data, but that’s more due to learning more about the forms processing/scripting in Moodle/PHP. All fixed. Just now fiddling with the proper logic in processing the form and displaying a decent message to the user.

What’s been done

That seems to be working. Marking is done.

What’s left to be done

  • BAM has the ability for the marker to navigate to the next/previous question for the same student. BIM doesn’t have that yet.

BIM – Design of “Manage Marking” and other features for Coordinators

BAM/BIM has initially been designed for use at CQU. In that time it has been used in 29 course offerings with 13 of those averaging around 200 students per offering. i.e. BAM/BIM is originally designed for large offerings and hence needs to provide support for the teaching staff in charge of those large offerings.

I’m currently implementing the “coordinator” (at CQU the “coordinator” is the academic in charge of the course) interface for BIM (initial work here). The purpose of this post is to generate feedback from current and past coordinators about what features might be useful.

The post has the following sections:

How will it work?

The basic process will be something like this

  • Your Moodle course is created via the normal institutional means.
  • You can add a BIM activity in the same way you add any other activity to a Moodle course.
    There will be support, if you desire, to have multiple BIM activities in your course. When you add a BIM activity you will configure the activity.
  • Once added there will be a link in your Moodle course as shown in the following image. (Click on the images to see larger versions)
    BIM link from dummy moodle course
  • Students and staff will use this page to access BIM related services.

Depending on the type of person using BIM, they will see different information. More information about what students and other staff will see will be outlined later. The rest of this will focus on what the coordiantor will see.

What will it look like?

As above, this focuses on what BIM will look like for staff who are coordinating the course.

3 main sections

The coordinator interface for BIM will consist of at least 3 main sections:

  1. Configure – allows modification of the configuration of BIM.
  2. Manage marking – services associated with managing and releasing the marking of student posts.
  3. Show details – provides the coordinator with access to the normal BAM screens showing details of students, posts, allocating posts and marking of their students.

The default Moodle page will look something like the following.

Configure BIM

Note the three tabs that allow the coordinator to navigate between sections/services. At this point, only the Show Details section has been implemented.

Show details

This is essentially what coordinators see at the moment with BAM. It’s also what markers will see. There are four main pages in show details.

  1. Show student details – shows details about the students.
    Show student details

    The tables here will be sortable.

  2. Show post details – shows the summary of all the posts for students.
    Show post details
  3. Allocate posts – this is how the marker manually changes the allocation of a student post as an answer.
    Allocate posts
  4. Mark post – how you mark an individual post (not currently implemented).

Ideas for manage marking

The main aim of this post is to ask for suggestions for the Manage Marking section for the coordinator. I’m currently suggesting the following as possibilities (might get included in the initial release of BIM) or requirements (will be included in the initial release of BIM):

  • Ability to release marked posts (Requirement)
    When posts are marked by markers, they are not visible to the student. To be visible to the student they will have to be released by the coordinator. My intent for this interface is to duplicate some of the functionality from OASIS. This means that it should allow the coordinator to release marked posts:

    • For all students.
    • For groups of questions (e.g. all marked posts for “Week 5”).
    • For all students of particular markers (e.g. all Fred’s and all Ginger’s students)
  • Ability to get an overview of marking progress of all markers. (Possibility)
    Again, an idea borrowed from OASIS. As coordinator you should be able to see a list of all the markers and a summary of the progress in marking/submitting posts for each question by their students.
  • Ability to dig down into the marking progress view to see the details (Possibility).
    e.g. if you see that Fred has 15 student posts not marked, enable you to click on the 15 and see the details of those 15 students.

A request for your ideas

That’s a fairly limited selection. Due to this and because BAM has never really provided this functionality, I’d like to hear any suggestions you may have. Let me know.

BIM – getting navigation bread crumbs and tabs working

In the last bit of work on BIM I got the Allocate Posts page working. This created the issue of getting the navigation/bread crumbs trail work in a useful way. I made an initial start on that, this post tries to get it complete. It will also be an attempt to get the “tabbed” screen for the coordinator working.

Work to do includes:

  • Get them working for a student.
  • Get bread crumbs working for marker.
  • Start work on the coordinator screens – tabs and breadcrumbs.
  • Maybe do some re-factoring for the bread crumbs code.

Student bread crumbs

Have made various changes to view.php while getting the markers stuff to work. Need to check that and get the breadcrumbs working.

First, there is now no header being shown for the student. That’s due to the new header function. Fixed. Bread crumbs are working.

Bread crumbs for the marker

Basically an extension of yesterday’s work, checking it fits and fixing any errors. Work to do includes:

  • Add a link/some description about the show post details screen on the show student details screen. DONE

Coordinator screens

The use of bread crumbs for the coordinator is in large part tied to the use of navigation tabs for the interface. A coordinator will be able to perform the following tasks:

  • Configure the bim activity.
    This is the initial task and is probably going to include:
    • Details about the activity (name etc).
    • Specifying the questions for bim.
  • View student details.
    Essentially the same as a normal teacher.
  • Manage the release of marking.
    Only the coordinator can authorise the release of marks/comments back to students. Eventually this should be able to be devolved and worked into the view student details, in someway.

Might also be good to provide some details about marker progress – which markers done what.

So, initially, let’s try for three tabs: Configure, Manage Marking (include details about marker progress and release of results), and View Student Details.

mod/quiz/tabs.php seems to be an accessible way to understand the use of tabs. Let’s start with that. The process seems to be:

  1. Create an array of tabobjects with at least three values: unique string id, link and textual name (to be displayed?).
  2. Call print_tabs and pass in: list of all tabs, the current one, any that are inactive, those that are activated.
    The current one uses the id of the tabobject. The other two parameters are an array of ids.

Okay, it seems that the list of all tabs, is actually a nested list. That was one of the barriers I was facing. It’s actually an array of arrays of tabobjects. Not an array of tabobjects.

Bugger, that limited understanding has held me up a bit. Easy to move on now.

What’s to be done

To complete the coordinators stuff there are three main tasks:

  1. Implement the form and processing for the configuration of BIM.
    This will need to
    • Work properly from the start (i.e. no configuration).
    • Ensure that any changes to configuration once use of the BIM activity has started is done safely.
  2. Design and implement the manage marking page.
    Aim here to allow the coordinator to :
    • view a summary of what markers have marked what
    • release marked results/comments
    • view the details of a markers students
  3. See how the existing student/post details screens can be harnessed to show up in the coordinators “Show details” tab.

I’m going to leave the first two to other posts. These are new functionality. Will look at reuse for the last point now.

Matching coordinator with Moodle stuff

Moodle has the following roles in courses (at the moment): administrator, course creator, teacher, non-editing teacher, student, guest. Not 100% clear where CQU is going with the conversion of local roles into Moodle, will have to ask. But theoretically teacher might be equivalent to coordinator, and that’s not currently working that way.

This is set up in db/access.php.

This is finally set up and working and the capabilities are better named now as well.

Coordinator’s show details

The coordinator of a course is also likely to be a marker. So they need to be able to see the same details about students and posts as other markers. That code is already implemented. The aim here is to reuse that code for the coordinator and make the output appear as part of the coordinator’s tabs.

Basically working simply by adding in the appropriate calls to the functions via the coordinator function. One limitation is that the bread crumbs aren’t working for the coordinator. This is in part due to the overuse of the screen parameter. Suggestion

  • Rename the screen parameter for the coordinator tabs.
    It’s no been changed to “tab”. Should also change the value so it matches in the id for the tab in bim_build_coordinator_tabs. Done.
  • Add a screen parameter.
    Make sure the param for the show student details is used appropriately.
  • Update the bim_print_header function to work with coordinator.
    Improved the navigation for both groups.

What’s been done

First major steps in the coordinator screen have been taken. The tabs work. They can see details about their students. When I implement marking for other teachers, it will work for the coordinator.

What’s to be done?

The two remaining screens for coordinator need completion

  1. Configure BIM – this needs connection with the “normal” Moodle configure aspect. The use of formslib should ease this. I hope.
  2. Manage marking – need to think about how to design this and what to put in. May need to ask the coordinators for suggestions.

Also need to implement the marking screen. Once that is done. There is some tidying up to do and it is just about there.

BIM – Allocate questions screen

The last bit of work I did on BIM continue the current trend of getting screens mostly working without some of the extra effort required for a production system. This is in part driven by my desire to become more familiar with differing aspects of Moodle development.

This post continues that trend by describing the implementation of the “allocate questions screen”. This is the screen used by a teacher to change the allocation of student posts to questions. A basic premise of BIM is that for a given course students are expected to respond to particular questions. BIM attempts to automatically detect student posts that answer a question and allocate them appropriately. Sometimes, however, there is a need for some manual intervention.

This screen shows a list of all the student posts recognised by BIM, including a specification of which have been allocated to which questions. The teacher can then modify the allocation.

Required data

The screen is passed the user id of the student and should also be passed the id of the course_module (course, bim id etc).

  • Student user details.
  • Markers students (is this student on the markers).
  • Summary statistics about marking/submission.
  • A progress result in terms of overall marking.
  • List of all posts for the student – contents of bim_marking
  • Details of the students feed
  • List of all questions for the course.
  • Course weeks?
    The CQU version/BAM converted the time/date posted into the week of the CQU academic term. If a Moodle course is divided into weeks, it might be possible to do the same thing here.

Implementation questions

  • How/should the date/time of a post being posted be converted into the weeks used by the course (if in the weekly structure).
  • This will have to include a form and drop down boxes to change the allocation. Need to figure out how this will work (have idea, but needs to be checked).

Get the data

Most of these are from previous screens or straight forward.

  • Student user details.
  • Markers students (is this student on the markers).
  • Summary statistics about marking/submission.
  • A progress result in terms of overall marking.
  • List of all posts for the student – contents of bim_marking
  • Details of the students feed
  • List of all questions for the course.
  • Course weeks?
    The CQU version/BAM converted the time/date posted into the week of the CQU academic term. If a Moodle course is divided into weeks, it might be possible to do the same thing here.

Show the data

Two main parts:

  • Details table – summary of student details, progress result, num answered/marked etc. DONE
  • Blog posts – a list of all the blog posts by the user

    Going to initially simply implement this is a collection of tables, with no form elements. Get that working and then think about the forms stuff.

Okay, the table is working. However, there are a number of questions to be answered:

  • Need to get the title of the question to display from the qid.
    Always good to start with an easy one. The data was there, just had to reference it.
  • How to display the timepublished as a human readable time?
    It may be possible that the methods used to set this time in the database (during creation of the test database) may have been incorrect.

    Yep, this is the first problem. I haven’t handled the conversion from DATETIME in BAM to the bigint used in Moodle. Have to look at that.

    This discussion forum thread explains the usage of UNIX time and methods to go back and forth. Including a pointer to this online converter that I’m using for some initial testing. ANd the PHP date function.

    Suggests the need to do a complete update of the timestamps in the bim_marking table.

  • How to include the form stuff to work appropriately?
    The requirement is to have one form per post with a drop box that allows allocation to another question (or unallocation).

    This comes back to having to grok the moodleforms stuff and how that works. A bit of hunting around and I seem to now have a better handle on it. That will be tomorrow’s job.

    Ok, time to revisit BAM and see how it is done. A single form for the whole page, each drop box has a name that uniquely identifies the post (uses link, but with BIM can probably use post id)

    Finally getting the hang of using formslib.php, including customdata. Part of it is getting back into coding and getting familiar with PHP. The form is being created now. Two tasks to complete: include the title of the post in the header, and process the form.

    Post title is usually included in the allocate page. Trouble is it’s not stored in the dbase. Need to get it from the RSS file that is cached. I could get it from there, but that raises some questions about caching (e.g. what happens if the student posts lots and their blog engine only puts the last X posts in the RSS file?). For now, will not include the title.

    Process the form Should be able to follow the standard process. Things to check:

    • How to get it to auto-submit when a allocation is made?
      Setting some attributes in the select box for “this.form.submit()”. DONE
    • What’s the URL being generated by the form? (Has to go to the right place)
      Will need to add some hidden variables. DONE
    • Where should that be handled in the view.php?
      Looks like it should be handled just after when the form is created as it stands. But this raises questions about the first run, when the form data isn’t being passed in. Ahh, there’s is_submitted as a method that helps there. Done
    • How should it be handled?
      Essentially I need to get the data about which of the select menu was changed. The get_data method is meant to return the form data, trouble is it’s currently only returning the hidden values. Not the values in the select menu chosen.

      Is this a problem caused by using the Javascript onchange function? Let’s put a submit button in and use it instead. Nope, that doesn’t make it work either.

      So, is there something else I’m doing wrong? Yep. I was putting a space in the name of each select box. Which meant the first part of each one was the same as the others. Remove the space and with the submit button it shows up. Yep, that fixes the problems with the javascript approach as well.

      The only change that a user can make is to one of the allocations. This is shown in the parameter “Reallocate_id” (where id is from bim_marking) is not default. The value of the parameter will be the qid or Unallocated (i.e. not “default”). Have that checking in place.

      That all seems to be working.

    • Add a link back to the Show Post Details screen.
      This type of thing, was going to be done – at least in part – with tabs once I figured out how to get them working. This is slightly different.

      One option might be to change the bread crumbs in the navigation for the view.php for the bim module. Trouble is, that currently this is done prior to the smarts in the form processing. It looks like I need to move the navigation building down into the processing.

      Intent is to create a stand-alone function – bim_build_navigation – that I can move around at will until working. This is requiring a fairly major refactoring of the code. Surely there has to be a cleaner way to handle this.

      This work deserves its own post.

What’s left to do

Allocate posts is essentially working.

  • Need to reduce the size of the right hand column in the details table.
  • Update the timepublished field in bim_marking to be correct UNIX timestamps.
  • Question of converting a given date/time to a specific week within a Moodle course (if using that course structure).
  • Some additional testing and tidying up.
  • The breadcrumbs will need to be fixed.
  • Breadcrumbs for the student view will also need to be revisited.
  • Think about adding the “next/prev” student mechanism for allocation and mark.

The next steps in BIM development should probably be:

  • Nut out the breadcrumbs for staff and students (so far).
  • Maybe get some screen dumps out to current users.
  • Get the marking page done.
  • Start thinking about the configuration/creation/management interface. (This is linked to the tab interface).