I have funding from a school district in my state (New Hampshire, USA) to work on a simplified Open Source student portfolio system. (For my client, OSPI is considered too mammoth and the technical dependencies are unacceptable.)
There has been some discussion in the forums of various ways of making Moodle work with or as an e-portfolio system, but is there any solid work being done on this now?
It makes sense to me that there should be a table named something like "prefix_portfolio_item" that will contain individual portfolio items and be keyed by at least an id, a userid, and a submitted assignment ID.
I'm a little less sure how to approach the creation of the portfolio's structure; each school needs to be able to create its own "portfolio framework" (or whatever we're going to call it). For example, the teacher in charge of administering portfolios needs to be able to specify:
Level 1 Portfolio Assignments (writing item, math item, art item)
Level 2 Portfolio Assignments (writing item, math item, art item)
Level 9 Portfolio Assignments (writing item, Personal Learning Plan)
Level 10 Portfolio Assignments (writing item, resume, science item)
Level 12 Portfolio Assignments (senior paper, 5-year plan, etc.)
That is intended to be the portfolio framework that each student will fill in as she passes through each level. (Students also need to be able to create custom ad-hoc portfolio items, but we can solve that probelm later.)
In the U.S. we would use the word "grade" instead of "level", but I've been using "level" as a genericized term. Maybe this is something that should be configurable in the portfolio module -- "What word do you use for an education level? [grade, year, etc.]"
I don't know how it would be best to approach this part, but I see three different major types of answers:
- Use a course with several assignemnts as the portfolio framework; every student is enrolled in the Portfolio course
- Use a course for each different level of the portfolio framework, and either have all students enrolled in all of them or only enroll students in their own current levels.
- Don't use courses at all, and make the portfolio into a totally separate thing from courses that will probably be very similar.
In addition, the process of creating the portfolio framework is just like creating the set of assignments for a given course.
The problem is that a portfolio isn't exactly like a course, in that nobody is really "not enrolled" in it.
It would be beneficial to make portfolios use existing Moodle concepts (courses, assignments) because that will give great flexibility to the user, who could create a single portfolio course if desired, or who could create the entire portfolio framework for all students. In addition, the portfolios will need to be viewable by the public, and if that could be applied to any course to make that course's assignments publicly viewable that may also be useful sometimes. However, doing this would require existing structures to be changed so that (for example) a course is marked as "assignments_public" or not, and an assignemnt is tagged with a publication level, and permissions, etc.
So in summary, I want to use existing Moodle concepts and code where appropriate, without abusing them or introducing unreasonable interdependencies. I also want to avoid bolting something foreign to the hull.
At this point I'm starting to write some code just to try things out, and I'm already running into issues. If this module will be an independent add-on, I can't change existing structures, which may end up (ironically) creating all sorts of interdependencies from the Portfolio module onto other modules. For example, if the Assignment module is used to handle everything related to the submission and management of portfolio items, then I'll need to create a separate portfolio_item table that has foreign keys into the assignment table. That makes sense and it may be a fine approach, but since I'm new to Moodle development I'd appreciate a thumbs-up from somebody knowledgeable. (An alternative would be to change the assignment table to include columns of portfolio-related data. This would be a cleaner solution in some ways, but not in others.)
I'm interested in all comments and opinions as I work on this project, so let me know what you think! (Especially if you want to help! )
Are you planning this as a secondary moodle instance? On our campus, we planned to spin up a completely separate moodle instance for the portfolios, particularly in order to limit students who would be given "instructor" rights to build out their portfolio. A variety of things would be changed on that server (i.e., removing the "login as" feature, or allowing import of content from other courses). It could not be part of our instructional moodle. You are not planning to make students into instructors, so you don't face the same issues, but it might help eliminate some of the problems if you knew that the ONLY thing the instance had to support was the portfolios.
I hadn't actually considered using the grading column(s) of the assignment in association with portfolio items, but there's no reason not to (and the interfaces to do that already exist). You're right; since this interface will give access to different collective slices of student assignments, lots of different grade analyses could easily become available.
The additional information we need to store about portfolio items v. assignments includes at least:
- publication level
No, we aren't planning this as a secondary Moodle instance. I haven't gotten into the problem far enough to know yet how well it would work, but I was figuring the Portfolio module could simply create a single course to hold miscellaneous portfolio content as each student needs such a course. I'm not sure what security implications fall out of that...
The following is another copy 'n paste of the project prospectus:
2 - Administrator able to create new assignment types?
Front-page view of a specific portfolio
1 - levels view (as defined by administrator)
- topical view (e.g. Science, Math, Language/English)
- students see below
- teachers see
- drop-down list of students she's advising
- administrators see
- which teachers are advising which students
- others see
- link to portfolios front-page
- drop-down list of published portfolios (by last name?)
- drop-down list of categories/topics? (English, Science)
- portfolio block
- want to see a grade/level view of the items to submit for the current level
- link to full-page view (similar to Calendar block) with the option to view other grades/levels and configure some things
- portfolio block
- this could be the same/similar page as the real, front-page portfolio view
- only needs front-page view with teacher-specific items
- front-page view
- ability to mandate portfolio content by level
- can define levels and portofolio content for each level
- ability to customize portfolio block content (?)
- default is locked-down
- publicaton can be defined on a student-by-student/item-by-item basis
- admin needs to be able to specify that each teacher has full access to all his/her students' portfolios
- publication levels
- student-group (students & teachers)
- interface should allow to narrow search by student/teacher, etc.
- all of school (all authenticated users)
- public (only admin/reviewer can set this)
- public-pending (settable by students, automatically flagged for review by advisor, who can then publish publicly)
- student-group (students & teachers)
- admin can system-wide disable any publication level
- portofolios need (to be able?) to have advisors
- student-by-student basis (in moodle terms, it's as if each student has his/her own course)
- needs to define site-wide list of levels and portofolio contents for each level
- student needs to be able to add portofolio items ad-hoc
Hopefully that helps to give more of an indication where we're heading with the project. The Klahowya portfolio system has a simplicity of functionality that we're aiming for, BTW.
If we had a way to create html pages inside the portfolio, or something similar, then MyFiles could serve as the filesystem base for a portfolio system. We're in fact working on this now, be interesting to talk and see if there might be some overlap or ways we can work together.
The beta version of the block is available here:
I just showed my teacher's here in NYC the added My Files block for their students to use. The share feature is excellent. I was very happy to see that you are working on a portfolio system to tie into this block. The NYC DOE is interested in Moodle and ways it can enhance learning here in New York City. If you need anyone to Beta test this system please include me on your list. I would love to show this to the higher ups at the NYCDOE.
- When a file is shared it shows 2 occurances of the same file for the person who is viewing the share in their My Files area.
- Group sharing does not seem to be available (this should be at the top of the list if Groups are enabled).
Cudo's for your team, job well done!
I was thinking of allowing students to become 'teachers' in their own course but remove the ability for them to add "activities" leaving them with the "add resource", topic course format and labels for them to put together a portfolio.
Have been searching to see if anyone has done this already but havn't found anything yet and I can see a problem in that the 'real' teacher wouldn't be able to grade what they have done, unless they were to use a forum...I'll stop talking off the top of my head and carry on searching...
I have seen a working example of a course site created for each student. They are the sole student on the course with their teacher having setup some standard activities for them to use as a personal toolset (some of these seen, others are just ideas):
- a forum (communicate with teacher or as a simple journal/blog tool)
- a student contribution glossary (record of research or even an annotated file storage facility)
- wiki for developing web pages or as draft writing tool (teacher can then comment on the draft)
- Online assignment as a journal
- maybe an assignment for submitting independent work, but makes more difficult for a teacher to manage so would be better to actually submit assignment work on the general course site
- Moodle 1.6 will have a course specific userfiles area for students/teacher to share files
This works ok if the student is only doing 1 course or only working with 1 teacher. If a student has more than 1 "personal course site" I can see it getting complicated quickly.
I think the student as teacher on a course has more possibilities. That way they can selectively allow other people access to the site as teachers or students or guests. So their personal site could work in association with several other teacher-led courses. You miss out on the grading options but you could keep the grades in the relevant general course site.
Moodle 1.6 will have some nice features to facilitate this type of arrangement e.g. options for administrator to restrict which modules are available for a teacher to use on a course.
All this portfolio stuff starts to get mixed up with myMoodle. Have you seen a version of the myMoodle page currently being developed for 1.6? I'm not even sure if it is in the current 1.6 build, but we are using a version of 1.5.3+ which already has it (courtesy of Martin/Patrick/Penny and the rest of the IT Catalyst team and the NZ OSVLE project). It gives a student/teacher an overview of the forum activity on all the courses they have access to plus allows them to add their own blocks to the page. There is also an HTML editor associated with the user profile. But it isn't a course so they can't add modules to it.
This is turning into a real ramble but there is also quite a bit of discussion about using ELGG as the basis for an ePortfolio and linking it with Moodle.
There's some more postings on this over at the OSVLE eduforge site https://eduforge.org/forum/forum.php?thread_id=652&forum_id=75
You can see a sample course and myMoodle page by visiting http://nmittest.lms.eduforge.org/course/view.php?id=20.
Login as username & password: MoodleTeach for teacher view and use the standard login as option to see the student view. I have added 1 block to the myMoodle page of the Moodle Student user.
Feel free to explore a few of the other options like stats and inactivity reports. I have used the new "restrict teacher abilities" setting to reduce the visible options in the admin panel (including hiding our site user list).
- The system knows who is enrolled in Moodle
- people - not enrolled in Moodle - can visit the public part (must be finished)
- Everyone - teachers also - gets a personal portfolio
- the portfolio is course independent
- You can find a user by clicking on the index (the filtering needs tuning)
- The user can create folders and subfolders (for example a copy of your grade/subject structure, others can choose competencies as categories)
- The user can publish or hide these (sub)folders by folder (checkbox)
- in each folder a user can store annotated files (annotation fields are now: title, description, what I learned, what I would change the next time.. (inspired by klahowya portfolio ) and a checkbox for "public"
- mime types Moodle recognises, can be published in line (needs settings for which mime types?)
- On top of the portfolio the student can add hyperlinks to portfolio related webpages he cannot/wishes not to integrate in his folders:
- trick, this can also be a hyperlinks to a self-created page that gives an overview/story (with hyperlinks) of a subset of his files: this html file is in his portfolio.
- In the settings page the user can choose to publish his Moodle profile and he can choose from different css style sheets (css not created yet)
- the user can share individual files - for comments and reviews - with other users
- all the files are stored in a directory tree
- the user can export an xml-index of this tree and all the portfolio files in a zip-file (not yet with a subset selection mechanism)
- A button (hack), integrated in the navigation toolbar of every Moodle-page, like Williams bookmark
- When a student pushes this button, he can send the homework on that page to his personal folder
- this file goes in the waiting room of his portfolio
- when the student makes time () he can give the files in the waiting room a better place in one of the subfolders (file moving mechanism)
Will you be placing this code in CVS contrib? It would give Matt a platform to start from rather than scratch.
Thanks for all your work in improving Moodle.
You can see my development box directly here: http://moodle.yi.org/moodle/. The interesting page is http://moodle.yi.org/moodle/portfolio/view.php.
PLEASE keep in mind that I'm actually working right on that box itself, so at any given time it could be terribly broken.
I'm now working with the folks who are making Elgg into a Moodle-friendly portfolio system (see http://tinyurl.com/bbh93 on eduforge.org if you're not familiar with that project).
My next step is to automatically create a self-taught course for any student when she adds the first item to her portfolio. That course will be used to store all her portfolio contents so that things elsewhere in the system can be safely deleted without affecting the portfolios.
The Elgg-portfolio folks have also tipped me off that somebody somewhere may be working on a moodle site-wide search of some sort, and that has commonalities with what I'm doing with (what I'm currently calling) the new generic filter class. I'll keep poking around the forums to see if I can contact whoever is doing that work, but if anybody knows and wants to tip me off that would be helpful.
In addition to the above problem, I'm running into the problem that while I have very cute links to several assignments in Student One's and Student Zero's portfolios right now, those links to go http://moodle.yi.org/moodle/mod/assignment/type/online/file.php?id=2&userid=3, and only the owning user is able to view the assignment. This is a sign of Moodle's lack of publication levels; the accessibility of almost everything is hard-coded (or all-or-nothing). The quickest fix would be for me to modify contrib/portfolio/mod/assignment/type/online/file.php (and offline, and uploadsingle) to check whether a student's assignment submission is in her portfolio, in which case it is implicitly published to the world. But of course it would be better to have an entire publication levels/permissions system within Moodle to do this The Right Way(TM).
So do I start building such a system and introduce further independencies between the portfolio module and changes to all the rest of Moodle, which will likely make it even more difficult to get the module accepted into Moodle, or do I just do a simple hack in the meantime that makes the module...well, a hack in the meantime.
I really don't know how to approach this one yet, but I know they've either already got publication levels (access control) working in Elgg or they're going to be working on it soon, and Daryl's mentioned to me that the blogs module also has quite a bit of access-control structure coded.
Can we possibly work together to develop a robust, generic access-control base class that we can share?
Can we possibly work together to develop a robust, generic access-control base class that we can share?
Hi Matt, I think we have the start of a pretty decent access sharing permissions set up in the MyFiles block, which currently provides user based file sharing, but just for files, not Moodle activities at this time.
You could take a look at the code in CVS/contrib and we'd be happy to work with you as much as makes sense.
Problem #1: Data Persistence
I'm developing a portfolios module for Moodle, and Daryl's and my idea is that anything in Moodle can be added to a portfolio. At the moment, the only thing I've implemented is for Online assignments to be added. The problem we foresee is that the portfolio module will need to store everything for each portfolio item, unless we can safely assume that none of the relevant things will ever go away. Alternatively, we will need to enhance the deletion-related code everywhere to deal with the portfolio_item table as well.
FYI, here's the definition of the portfolio_item table:
CREATE TABLE `prefix_portfolio_item` (
`id` int(10) unsigned NOT NULL auto_increment,
`item_foreignkey_id` int(10) unsigned NOT NULL default '0',
`item_type` varchar(255) NOT NULL default '',
`userid` int(10) unsigned NOT NULL default '0',
`courseid` int(10) unsigned NOT NULL default '0',
`timecreated` int(10) unsigned NOT NULL default '0',
`timemodified` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`item_foreignkey_id`, `item_type`, `userid`),
KEY `id` (`id`)
) COMMENT='A submitted portfolio item';
item_foreignkey_id is the id of whatever item this particular portfolio_item is, and item_type tells us what kind of item it is. For example, the 'assignment' item_type indicates that the item_foreignkey_id is actually in the course_modules table, but the portfolio_assignment subclass understands that and deals with it appropriately.
Since I wrote that I've begun modifying the portfolio system to automatically create a self-taught course for each student (e.g. "Sally Student's Portfolio"), and newly-added portfolio items will be attached to that course. This should solve the persistence problem for anything tied to courses.
I'm wide-open to other ideas about how best to do this.
The other way this could be done is if I add fields to the portfolio_item table to contain the portfolio data directly.
The first way has the benefit of being able to use existing Moodle code to help manage and display portfolio items, because they're stored in the same tables in the same ways -- they are only duplicated and associated with individual students' portfolio courses. It has the detriment of having a few more dependencies on the database schema remaining the same, though each portfolioitem subclass will need to be kept up-to-date with the relevant tables for the data it processes, anyway. This way also has the detriment that right now Moodle doesn't allow anyone but teachers and the owning student to view a given assignment_submission, so taking advantage of the existing code to display assignments isn't much help. OTOH, even if Moodle had robust and comprehensive access controls, this option doesn't make it easy to produce a nicely laid-out portfolio for printing purposes, which I know some folks have mentioned that they need.
The second way has the benefit of being more generic and more modular; it would be easier to create a meaningful portfolioitem base class that could hopefully/possibly be shared with the Elgg effort. The downside is that the portfolio system would need its own display capabilities, which it doesn't have right now and which it will, in some sense, be duplicating from elsewhere in Moodle. OTOH, if the portfolio module had display capabilities it would be easier to make it produce a nice layout for printing a portfolio.
I'm in a strait betwixt two, but I already have the first way implemented and working so I'm inclined to go that way for now. Does anyone have any suggestions about what may be the best way to do this?
that the best way to add real, honest-to-God group support into Moodle
is to enhance the user_base class (or create one if it doesn't exist)
and add properties such as "users" (list of userids in the group) and
other relevant group-handling functions.
That way groups can be users just like any other user, and the code
changes should be minimal. Places that currently do things like this:
if ($id == $user->id)
should be changed to do something more like this:
$user->id would still be fine, of course, though it should probably
only be set if $user represents a single user. That would be backwards-compatibile.
That would work whether $user is actually a single person or a group.
We need this before we can do proper access controls, though I haven't yet looked at the MyFiles access controls to see what they've done.
Hopefully I'm just repeating discussions that have already happened elsewhere.
It may, of course, delete all of your data and cause general calamity, so I heartily recommend that you only let it near a test system.
This update brings in some update smarts, so that if you have added a submitted assignment to your portfolio and you update your submission, you get a nice "Update this in my portfolio" button. And you should *only* get that button in that circumstance.
The next thing I'm planning to tackle is allowing portfolio owners to delete things from their portfolios, and of course there are a few other loose ends to tie up. After that, I'm planning to try to figure out how to handle access control.
- If the user has no existing (self-taught) Portfolio Course, one is created and this student gets an entry in user_teachers so she is teaching the course. (She is not currently auto-enrolled because I haven't looked into doing that yet.)
- The course_module, assignment, and assignment_submission records are all copied and reinserted, but now related to the student's Portfolio Course instead of the original course. (This ensures persistence of portfolio data even when the original course is deleted.)
Additionally, each student has a "View my portfolio" link in her profile, and this is a link to her Portfolio Course, which is just a slightly simpler version of the filtering page described above. (The primary difference is that we only search on that user's things.)
Here are some hindrances to this being a better portfolio system:
- The self-taught Portfolio Course is a nice view that can be further enhanced and distinguished from the generic, catch-all filtered view under /portfolio/view.php. But nobody can look at this course unless she is enrolled in it...and that's not intuitive or useful. In fact, it's quite confusing, because once you've looked at somebody's portfolio course it shows up in your own list of courses. Not what we want! I could just stop using a "course" for the Portfolio Course, and make it a brand new thing in the portfolio module -- but the course is in so many other ways the perfect thing for it to be. (Eventually it should be the case that students have the ability to submit their own work here; they shouldn't need to have a teacher assign something for every item they put in their portfolios.) It would be nicer if nobody was allowed to enroll in this course except the owning student, but everybody was allowed to view it. Is this possible?
- Alternatively, maybe the self-taught portfolio course should be a private, personal view of one's own portfolio, and it could still be the place/mechanism through which one creates customized portfolio entries. This still means it would be nicer if nobody was allowed to enroll in this course except the owning student, but the owner still needs to be able to see it, then.
- The table printed out by the filtering module contains links to the assignment submissions in the portfolios -- but only the owning user can view them! This is less-than-ideal for a publicly-visible portfolio system, of course. One alternative, again, would be to ditch all the existing code and design of Moodle and just store portfolio items in their own table(s) and write a view() method for each type of thing that might get put in there...this way, the access control of portfolio items can be handled by the portfolio code itself and nothing else in Moodle would need to change. But since Moodle already has the existing database tables and management and display code for all these things that people will add to their portfolios, it seems a terrific pity not to leverage the work that's already been done; and yet to use that work while we wait for a more comprehensive access-control mechanism will require portfolio access-control to be bolted onto the display code in the meantime. What is the right thing to do?
Have I answered my own question correctly?
I was just looking at your test site. I do like how it is setup as a course for the student. My two questions are 1) If the courses are deleted or the student is unenrolled, will their portfolio page stay the same and carry with them through their upcoming grades? For example, my 9th grade students go through to 12th grade and their work is categorized for the year or level. I know the MyFiles block uses the username to tell where the student is enrolled and it is not dependent on courses. 2) Can you tie it into the MyFiles block so it is not dependent on just the assignment module? This would allow greater freedom by the student to place files other then just teacher-driven assignments onto their portfolio.
Thanks for all your work. It is a great feature you are developing.
See my latest post in this MyFiles discussion.
But to answer your question, I had solved the course-deletion problem by putting all the portfolio items under a self-taught course for each student. (And if you viewed that course, you saw the owning student's portfolio items only.) You can still see all this in the demo system I've linked from these forums; click on a student's name and then click "View my portfolio".
But I'm ditching lots of that code now and just moving toward storing all the portfolio items as files in their own portfolio space. I may use the file_manager at some point, but ATM I'm thinking that I'll just put everything under a portfolio-specific directory.
Thank you for clearing some questions. So, you are moving any archives/copies of student work to their own course and then having them administer that page. And if I could follow the other discussions you have it where at each instance a student submits some work or sample of work they can include it as a file.
I am also curious about activities such as forums and places where they show process of learning. Will your code work with these activities as well. I just tried to access your demo site but to no avail so sorry if these things are there already.
Scenario 1: As a student I reply to a post and include an attachment, can I check a box during that post to have a copy of the forum and attachment sent to my portfolio? I know it sounds like a tall order but if you are going to make it seamless it should work for everything that students contribute on in Moodle and give them a choice to include it in their portfolio. Similar to the choice of, if I post to the forum send me copies to my e-mail. Maybe it could send an internal copy to the portfolio files block?
I am sorry for the long post but my non-profit has started these schools in the Bronx, NY and I introduced Moodle to the community to use. They are still struggling with aspects of the program because of ease of use. I just wanted to make sure this is a homerun if I show them because I am excited about it. The staff does not have the same skill set as I do with technology. Thats why I have a job . On a side track, have you looked at LAMS and the integration into Moodle. It provides a backend to create your learning scheme and then students click on one link on the course page to take them to the LAMS activity page. It seems like an easy way for teachers to layout their content and activity process. I wonder if it could be linked to your portfolio as students go through their activities there. Just thinking down the road.
Thanks again. Like I said, I am excited about this feature you are tackling. It is something that is needed for students to showcase their work to the public when they want.
Actually, I'm no longer planning to have each student's work hanging off her own, personal portfolio course. I'm hoping to build the portfolio system on top of the MyFiles block instead, so the course isn't necessary. (If we can think of a way it would be useful, we can always bring it back in.)
YES -- the intention is that eventually any sort of artifact you can imagine in Moodle will be submittable to your portfolio. I'm building the portfolio system generically for exactly that reason. (When you add a portfolio item the item type is identified, and the portfolio module code creates an object of the correct type and there ya go.)
RE: Scenario 1: Sure. At the moment, as I'm building the system, I've just put "Add this to my portfolio" buttons on assignment submission pages. But I'm not at all sure this button is the best way to handle adding things to one's portfolio, and I'm not at all sure why there couldn't be a checkbox when the assignment (or forum post, or whatever) is first submitted. So I don't see this as a tall order at all -- it's what I set out to do!
I really appreciate your comments, input and feedback. To give you an idea of my timeframe, I'm presenting at MassCUE on this system in March, so this portfolios module had better be sufficiently usable by then that I can recommend it to my audience.
Give the demo system another try if you will. My server rebooted today and I don't know why. This is very bothersome to me because I'm one of those geeks who cares about uptimes... Anyhow, things seem to be back up and running now.
E-portfolio is a growing issue here in the UK, and I am struggling to understand the discussion so far, I am an education process specialist and it takes me a while to catch up on technical issues.
Can someone summarise so far for a non-specialist like me?
Numerous discussions and efforts have taken place to get Moodle working with/as an ePortfolio system. I'm working on that same problem now, and I'm hoping to build a robust and highly useable system that will stick around for a while.
I know that several folks have used Moodle manually to construct portfolios, but the closest thing (that I know of) to a typical sort of ePortfolio system is the MyFiles block, which allows a user to upload artifacts and share them to other system users. I'm hoping to build on that foundation, adding some more comprehensive access-control/publishing capabilities and a searchable page view of portfolio items (by user, course, course category, item type, portfolio name ("Professional", "Academic", etc.), etc. You can see the beginnings of this page on my development system.
I hope this helps to explain what I'm doing, and to give a brief summary of my limited view of Moodle ePortfolio history.
and there aren't any library routines yet that allow access to something like that.
So I'm hoping to move to MyFiles, though that codebase will need significant modification before this will be possible.
In the meantime, you can poke at this new version of the portfolio system on my dev box here: http://moodle.yi.org:1080/mcvs/portfolio/view.php. (Feel free to create your own user on the system, enroll in a course, submit an assignment, and then view your submission and click on the "Submit to Portfolio" button.)
Also, all my latest code is attached.
Thank you for the clarifications. I know that you are working on the code to get the functionality of the system in place (get it what you want it to do) and then I am assuming that you are going to think about the design/layout options that students will have. Again, it goes to the theory and papers about e-portfolios in which the student has creative control over their portfolio and be able to provide a link to people that will be publicly accessible. Again, let me know if I am wrong. Now that I see the way that you are going with the code I am wondering if their is a way with say customized templates (portfolio 1, portfolio 2) using the option that is already in Moodle to allow users to change the themes on course pages to give them that flexibility of layout?
If there is any help that I can offer (even though I a not a coding expert) I would be happy to oblige. I could also get feedback for you from some of my faculty and principals once it is stable enough.
Hi Matt, I wondered if you had seen this annoucement (I don't remember seeing it posted here). It seemed like Elgg has alot of the functionality of portfolio/file system/blog?
LMS Project Manager
Courseware Development Center
California State University, Humboldt
Yep, there are some folks working on making Elgg into a Moodle-friendly portfolio system, and they're planning to make it possible to push artifacts straight from Moodle into Elgg. Their intent is to make a multi-Moodle portfolio system, so that, say, each school in the district can run its own Moodle but the district can have one portfolio server. (Of course you can also connect Elgg to just one Moodle.)
In addition, we're planning to make it possible to push straight from the portfolio system I'm doing up to Elgg, so if you start with just Moodle and my portfolio system, then later you can decide to move to Elgg and easily push everything up from Moodle.
We've discussed collaborating, but so far I've just been getting this off the ground. It'll be time pretty soon for me to look more at what they're doing, and show them what I've done.
And the things I happen to be sharing at the moment are portfolio items.
If you want to take a look, go to http://moodle.yi.org:1080/mcvs/ and log in as "sammy" with password "portfolio". Then either click on Sammy's name in the top-right corner and click on "View my portfolio", or just go to http://moodle.yi.org:1080/mcvs/portfolio/.
Note that in the portfolio list that you can see, you're only seeing the items that you either own or have been granted access to see. (ALAS -- I haven't done anything with file.php yet, so if you click on a portfolio item you won't be able to look at it. Just be happy with the list for now. )
Go ahead and click on "Publish" and you'll see the publication interface -- which, again, is generic and can be applied with minimal coding to any item in any Moodle table.
Then, if you like, you can log out and log back in as "checker" with password "portfolio" and go to http://moodle.yi.org:1080/mcvs/portfolio/ to see (or not see) the item(s) listed appropriately.
I still have lots to do, including the following:
- enable users to delete their portfolio items
- add a nice "publish to the world" button/checkbox on the Publication page
there needs to be an advisory system such that if you don't want
students to be able to publish directly to the world, they can at least
request world-publication and their "portfolio advisor" will receive a
notice to review and publish the item accordingly
- Also, there needs to be an advisory system such that if you don't want students to be able to publish directly to the world, they can at least request world-publication and their "portfolio advisor" will receive a notice to review and publish the item accordingly
- enable viewing of the contents of the portfolio items
Anyhow, it's acting a lot more like a real portfolio system now.
I have viewed "Sammy DaStudent's" portfolio and would like to test this code. However, after downloading the .tar file at http://majen.net/misc/backup-06-01-20.2.tgz I am somewhat confused as to which directory each of these folders gets placed. I noticed that several of the folders had language files within. How can I implement this in my Moodle Development installation?
Thanks for everything you are doing.
I confess that I don't really understand yet how contrib modules are intended to be added to a Moodle installation, so what I do is read the mysql.sql files from each necessary module directly into my moodle DB, and then I rsync the module files to the appropriate place. But you've asked some very good questions -- where are the appropriate places?
I have a small shell script that I use to update my running moodle while I change code in /contrib, and it looks like this:
rsync -av contrib/portfolio/ ./
rsync -av contrib/filter/ ./
rsync -av contrib/access_control/ ./
Just to be clear, this means that you take everything from contrib/portfolio/, contrib/filter/, and contrib/access_control/ and drop it straight into your Moodle's installation root. ($CFG->dirroot )
Additionally, you'll want to do something like this:
$ mysql moodle_db_name < contrib/access_control/db/mysql.sql
$ mysql moodle_db_name < contrib/filter/db/mysql.sql
$ mysql moodle_db_name < contrib/portfolio/db/mysql.sql
And then you should be all set.
And since somebody's actually going to do something with it now, I'll upload my brand-spankin' newest code for you: http://majen.net/misc/backup-06-01-22.2.tgz
The filter and access_control code has been documented and cleaned up, and at this point I'm planning just to add another feature or two (totally public publication with email-prompted advisor review) to the portfolio module before I ask a friend to help me get these into CVS.
Thanks for your interest in trying this out; all comments are welcome!
I downloaded the file, can you help me with whre to place which folder.
$ mysql moodle_db_name < contrib/access_control/db/mysql.sql
$ mysql moodle_db_name < contrib/filter/db/mysql.sql
$ mysql moodle_db_name < contrib/portfolio/db/mysql.sql
...because the tables defined in those files have prefix_ on their names. First you'll have to replace prefix_ with the correct table prefix for your Moodle installation, and then read those files into your database like I have above.
It's still not production-ready for at least the following reasons:
- no logging implemented
- no backup implemented
- no security in the module's file.php!
Here's the latest version: http://majen.net/misc/backup-06-01-25.0.tgz.
There are now *gasp* installation instructions!
I've also removed almost all the file collisions and added install.php files to create the database tables.
NOTE: Unfortunately, I didn't realize the get_fieldset_sql() routine was only in Moodle CVS, so right now you have to have the latest CVS version to use this system. I'll work on removing that dependency later today.
I said above that I wasn't quite ready because I've only tested the install.php's with postgres7 once each, and never with mysql...though I just did and it worked fine as far as I got. (My test system was set up for Moodle stable, so I immediately got the following after installation:
Fatal error: Call to undefined function: get_fieldset_sql() in /var/www/mymdl/portfolio/lib.php on line 247
...and that is -- for now -- normal and to be expected unless you're installing in the latest CVS.)
So I hope this makes installation easier. Comments are welcome!
Installation seems to be working out OK, too.
This is still far from production-ready, but it's getting close to the point where serious testing is feasible.
Just follow the included instructions if you want to try it out.
- artefacts that were created by whoever the portfolio is about (i.e. its
- formal records of achievement about the subject.
Do you think there may be scope to link in the Certificate module?
You'll find installation instructions included.
Meta-access is actually implemented now, so (for example) users can't publish to the world unless an administrator has granted them world-publication access.
Here are a few things I think are next on the agenda, though I'm meeting in about an hour with the guy funding this work, so we'll have to see what he thinks :
- bug finding and fixing, of course
- file.php security
- add portfolio-advisors, somehow. Not sure how this should work or be stored in the DB. (It should really be generic, a mechanism that can be used whenever a user tries to do something without having the appropriate meta-access. But how are these advisor users designated generically, and how are they designated for portfolio users?)
- Add the ability to give names to portfolios (right now everything is in "Default") and to portfolio artifacts (right now you just see a filename). I'm sure there are other interesting attributes of portfolio artifacts that the user should be able to edit, as well.
- Add the ability to publish/delete multiple portfolio artifacts at once. This will take a bit more work than the previous items.
- group support for the access_control module (oy!)
Must congrat you on the module.
I was trying to unzip the backup zip but it gave a header problem and could not open. Could you ZIP it and load it again.
Just FYI, the .tgz file is a TAR-Gzipped file, which should be easily extractable on Linux, and also on Windows by something like 7-Zip. I have no idea if Winzip or any built-in MS unzipping thing can understand .tgz.
- "imposed" item description? I'm not sure what you mean by "imposed", unless you mean that the student is required to fill it in. In any case, I'm working right now to add a portfolio artifact editing page where a portfolio name ("Professional", "Educational", etc.) can be specified and where students can add reflections on the given artifact. Will this meet your needs here?
- Linking to/from blogs...well, I was intending that any Moodle data could potentially become a portfolio artifact, and that includes blog posts. Is this what you mean?
The word Portfolio means so manythings nowadays that it is impossible for me to know what features would be considered standard in a 'portfolio', but I heard someone describe its functions as a 'space' (whether it is on-line or an actual portfolio) where the student compiles his/her work in combination with some sort of diary about her learning experience. Things like "This assignment was very difficult because it involved...I think I learned a lot of vocabulary on X...".
Maybe this could be considered extreme by some, but I find that at least some way to associate a note to a given artifact so that the student can add some comment or description is something very desirable to have in the Portfolio Module.
Just my 2 cents.
Firstly, please note that I'm trying to move discussion to a more appropriately located thread.
With that said, I've just finished implementing the very beginnings of the artifact-editing page (including user comments) and it's all in CVS.
I guess the contribs are wrapped up every 24 hours or something, so whenever that happens the new stuff will be available right here.
In the meantime, my newest testing/dev Moodle is running at http://moodle.yi.org:1080/mdev5/ and it has the changes, too. Feel free to create an account and try it out!
Please reply in the new thread.
How do you install this onto a Windows system?
Same as Mac and Linux, except that you can't use the 'patch' commands. I mention the following in portfolio_INSTALL-HOWTO.TXT:
That's undoubtedly the easiest way to install it, but it will overwrite three core files in your Moodle installation (presumeably it will ask you about doing this) and that will
- overwrite any changes that have been made in those files since 1.5
- overwrite any changes that have been made in those files by other plugins
I have just upgraded to moodle 1.6+ version and when I go to the access_control page I receive the following
"No Access Controls Present"
I do have a backup so I can retrieve old files if necessary but I do not know where to look, can you offer any assistance with this
Thanks in advance.