This resource type allows teachers to browse and preview learning objects in a central repository, then add them to their courses.
The location of the central repository is moodledata/1/repository (though this may be changed in the resource type config.php) i.e. within the site files folder.
As with the Object module, the directory structure of the repository is used to create the navigation, so it's important to set this up in a logical way to enable teachers to easily find relevant learning objects.
In response to Object module feedback requesting the ability for teachers to upload object packages, we've "borrowed" Eloy's code for New resource type: IMS CP and included it in the object repository resource type i.e. teachers may choose to upload an object package or browse the central object repository.
When teachers upload packages, they are stored in the course files folder, however a possible future development would be to provide the option of packages being uploaded to the central repository.
Either of the options to upload a package or browse the central object repository may be disabled in the resource type config.php.
Future development of the object repository resource type will include a search facility.
As always, comments or suggestions for improvement are appreciated!
PS. We're just playing with the code a little more before posting it.
To set up the repository, either make a folder called "repository" in the site files folder or repository.zip (containing sample learning objects) to the site files folder and unzip.
I don't have a problem with the object being a resource type rather than an activity. However, by its nature, it could be either, which rather mucks up the (in my view rather arbitrary) division between activities and resources.
This set me thinking. The LMS interface that was dummied out in the object activity module (is it still?), but is implemented in Bobo's should really be at a much higher level in Moodle so that any module, wherever it is run in Moodle, can interact with bookmarking and student progress recording. We'd then a have a consistent system for Workshops, Hot potatoes, SCORM format units like those in the object repository and so on.
The next step on this jounrey would be to have a Moodle standard (much like the datalib interface for example) that could be a wrapper for any type of activity or resource that would allow it to be packaged as an object that could communicate throught the same LMS calls.
I have just picked up on Moodle and I am having my first go at developing some functionality. I am trying to pick up on the design philosophies in Moodle, so feel free to jump on me if I get things wrong.
Maybe its all a bit like cooking, a resource is essentially something like a cake tin, a knife, an oven, a cookbook, whereas an activity is more like a recipe, a dish. These latter things are also resources, but in a different sense. If there is a suggestion of cooking, baking stirring, etc. then it belongs on the activities side. These "activities" are resources in a different sense, in that they can be reused in the creation of meals. I would be interested in any reasons why it was decided not to implement Learning objects as activities.
OK now here's my problem. Basically the people round here want to do a bit more with resources, like rate them, something like Amazon really. I mean a book review for example, with a rating by a philanthropically-minded teacher, that could be read by other teachers. The review of resources is a teacher centered activity which is where Moodle looks weak to me.
The question was raised above, what is the distinction between activities and resource types in Moodle? Well it sees to me that activities are just that, things to be done by students in a student-centered view, whereas resource types essentially have been conceived of as physical rather than logical. They appear to be the online classes of thing that teachers and students might grapple with. A file to upload, an HTML page to read, a passage of text. A directory/folder of files even. The existence of files and directories on the server allows for a measure of generality, and thats enough to get started, because you can get to your files from elsewhere.
I found the moodle source quite easy to follow and modify, kudos to the author. Resources as implemented in Moodle seem to suffer from a lack of generality, for example a completed student assignment should be able to be also a resource for future students, and also resources are effectively "nailed" to the course structure, which makes the reuse etc. difficult.
In order to extend the information available about resources it seems logical to me to create a block called "Resource review". The alternative would be to modify the core moodle too much. A few database tables/fields can be added easily enough to support the additional information.
Extending the resource view like this still does not solve the problem of
reviewing books when the book itself if not physically online. Moodle allows for the creation of a "freeform" webpage or text passage which could represent an offline resource, but is lacking a means of creating a structured resource record.
In the moodle scheme this record would be a physical database record, but from the user perspective the internal representation is actually irrelevant. It could be an XML or a relational storage format, so it seems to make sense to me to extend Moodle with a resource type to represent offline resources (and I could easily get Moodle to generate a webpage from a database record anyway). I just called it "registry" to keep it open, because I want to represent an offline resource in an internal registry system and the physical basis now actually doesn't matter.
It was surprisingly easy to add this resource type and to modify the dropdown resource menu to read "Reference an offline resource". The idea is that you can then enter a book review of your own, or some offline resource, and at the same time get more information about the quality of resources, in a more reusable framework.
As a Moodle newbie I would appreciate feedback.
Thanks for your comments. You may be interested to read the 2004 discussion Proposal to separate resources from activites.
The main reason why we have developed the Object module into a repository resource type was because it was Martin's wish for it to be so.
For example, the book module is really a static resource from teachers perspective but it shows up in the Activities popup. Another example, the glossary can be used either as a resource or as an activity but it is in the Activities popup. At the same time, the Object module can also be a resource or an activity as discussed here but it shows in the Resources popup.
May be it is time to review this and see whether it can be improved along the lines what Chris suggested. For example, easy to implement would be to have an option for each module to be assigned to either popup (or both) by the developers or site administrator.
Glad I have some support for this point of view.
Some practical specific suggestions for how to do it....
a) Recast existing resource types so they follow the same coding structure as activities. The activity model is more pluggable than the resource one.
b) Provide for an in topic/week 'block'. We could then use one of these to contain the drop-down menu for the resources and/or activities and/or any other combination or other useful thing that might at some time be thought of.
The block would of course automatically be repeated in every topic/week.
Although it wouldn't be necessary in the case of 'Add resource' 'Add activity', the block's code could usefully have access to a course/topic variable to allow it to adjust its behaviour if necessary.
Thanks for your comments.
Regarding the Book and Object modules, please note that neither are standard modules. As far as I know, the plan for the Book module is to develop it into a multi-page resource type. The Object module was only a temporary solution, whilst we learnt how to re-write it as a repository resource type.
The Glossary module is quite different in that it provides options for students to add entries, comments and/or ratings.
'That's a great deal to make one word mean,' Alice said in a thoughtful tone.
'When I make a word do a lot of work like that,' said Humpty Dumpty, 'I always pay it extra.'
'Oh!' said Alice. She was too much puzzled to make any other remark.
'Ah, you should see 'em come round me of a Saturday night,' Humpty Dumpty went on, wagging his head gravely from side to side, 'for to get their wages, you know.'
Well, I understand what you are saying, Helen, and I have no problem buying it as a developer and administrator. I don't want to sound too contrary but Moodle is for teachers and users not just us, and I think what we have is confusing. And I am just sometimes tired of explanations that go along the line: if you want to add a static resource like blah blah, use the resource popup menu on the left. Ah, if you want a multipage resource, look for the book module under activities. Ah, and glossary is also under activities because it has an option be used as an activity.
Nota bene, the book module, whilst not part of standard distribution, already is a multipage resource And since I installed it right away, other users have no clue it is not part of the standard distribution.
This is wrong, or at least it is not how Moodle implements resources. Resources (as implemented) and learning activities are not necessarily mutually exclusive, as the examples above readily demonstrate. Learning objects are yet another case in point, and I see where developers have been uncertain where to lodge these. The dictum to lodge these as resources further breaks the conception of "static" things being resources. I think that this point is agreed.
So what in a Moodle resource? The primary distinction is obvious, the resource droplist menu in fact presents a classification of "Resource Types", not of resources per se. We need to look then more closely at what distinguishes these "Resource Types". These types are NOT about teaching or learning or constructivism, or education, they are about computers. The definition is operational based on process (locating) rather than on pedagogical character (static vs interactive). So we have files/directories/links/objects as resource types.
Now what about my need to reference an object such as a book or a public lecture, or anything at all that does not necessarily have a corresponding object on the server to locate? So we have the resource types of "webpage" or "text" for references created on the fly for such cases, but as I mentioned above, these are inadequate, I really want database-like features for these.
Perhaps "Learning objects" can subsume such things, that might be a clean solution. At least then we could be liberated from the tyranny of physical technology distinctions, after all these choices ought to be buried in something we computer people call an "abstraction layer".
Whilst I am in a reflective mood, a fascinating thought occured to me when composing during this post. Initially when people learned that computers could model reality, the phrase "virtual reality" was coined. But that generation was formed by people who marvelled at their creations. Nowadays we have younger people growing up with this technology. What is so "virtual" about something that you need to desperately need to submit for real grades to pass a real course and earn real money? A resource is "real" if I can download the file, or hear it on my iPOD, or find it in Google, that is the reality. So in Moodle for example if I can get to the resource then it is real. But if I have to go to the library, then it is not real, in this world view, digital objects are real, physical objects are virtual. Virtual resource type? Oh well, I always try to have at least one paradigm shift before breakfast. ;)
I'd like there to be a level of indirection both within and above learning objects.
In the repository, I'd like there to be a convention that if it is public, that there is a file with a well-known name actually in the root of the repository that lists the locations of all the manifest files in the repository. This could be of the format of a manifest file itself (since they also list resources) however it ough to have a different name. This would allow you to reach all the individual manifest files, and thereby all of the resources that they point to.
By this means, you could reach into any remote repository.
The imsmanifest file could indeed list resources of type 'real' (or virtual if you prefer), or collections of resources if appropriate.
The other side of this would be a link file that could be placed in one's own repository that would form a type of sym-link into that other repository and could be followed transparently.
1. Caches the IMS manifest navigation information (in cache.ser) to avoid reprocessing data every time. Speeds up the program considerably. Cache created whenever md5 of imsmanifest.xml changes. Stores md5 hash in cache.ser. Use get variable force=true to force refresh the cache.
2. Handles titles of materials better improving reliability.
3. Detects more errors in XML and silently ignores the offending material.
4. Can cope with repository directories not in moodledata/1 now. Useful if you don't want to use file.php to view things since this is painfully slow. Also could be used to centralize information for several different moodles. NB. Won't work on just URL yet since must write cache to the repository.
1. Minor - if there is no repository in modledata/1 then it fails ungracefully.
2. I can't find cache.ser - I think I have another use for this and would like to see it.
3. Language strings. A plea to central developers to make it possible for the needed strings to be addedwithout overwriting resource.php in lang/en. O BTW, the instructions say expand en.zip in moodle/lang, but you need to do it in moodle/lang/en.
4. Is putting the repository in moodledata going to cause problems? Internal relative URLs inside courses are not going to know to use file.php to resolve their references, and if as recommended moodledata is outside the web root (mine isn't) then won't those references fail?
5. Where do you configure resource types?
6. I'll try to add the search functionality I wrote for the object activity module to this new resource type.
Thanks for your comments.
1. You're right about a repository folder being required. The readme file contains instructions for setting up the repository. However, if the repository folder does not exist, we could do with an appropriate error message explaining the situation.
2. When an object is browsed in the central repository, cache.ser is created in the object folder, containing the serialized data structure for the object navigation.
4. We initially thought that it wouldn't be possible to put the repository in moodledata, however Eloy's IMS CP resource type helped show how to make it work. (A big THANK YOU to Eloy! )
5. A GUI for configuring custom resource types does not exist (yet). The object repository resource type is configured using ims/config.php.
PS. Please find attached latest version tidied up. Apologies for including backup files previously - a Friday-style error!
ok, I'll have a look at adding my config code into ims/config.php
In my version of the search for the resource version I have made minor changes to finder.php (modded 1 line) and ims.html. (added one line). These are clearly documented in the code (tip: search for CGJ).
All the remaining code is in searcher.php and its library searchlib.php.
Warning: reset(): Passed variable is not an array or object in c:\program files\easyphp1-8\www\moodle\mod\resource\type\ims\imslib.php on line 155
when you try to choose the object.
Any ideas? I'd attach the manifest file but it's 2MB.
Thanks for your testing and for your feedback - much appreciated. Please could you provide further details of your set-up.
It's reassuring (for me, at least) that the warning message has been reported previously. No doubt we will find the cause when we have chance to investigate the issue thoroughly.
Would it be possible to zip up the object that's causing the problems and email it to firstname.lastname@example.org so I could take a look at it to try to see what is going wrong? Thanks!
I'm pretty sure some versions of PHP have issues with reading files of about 2MB+ (PHP 5.0.4?) but I don't know if this could be the cause of the problems here it could well be something unrelated entirely What operating system and version of PHP are you using?
I've taken this version and added in the search facility.
HOWEVER, the search facility needs to be able to build an index, and I can't find a place where I can put the button allow the administrator (but not a teacher) to do this. It takes much to long to be triggered when someone does a search, it really must be done when someone intends to do it.
Also, I have some database tables starting with object_ any suggestions how/whether these should be renamed so they can be used with the resource type.
could you possibly add the index creation to the cron?
I have now built in the incremental functionality. It checks the datestamp and file size of the imsmanifest files. If they are different to last time the file is re-scanned and the metabase updated. It is very quick if there are no updates, so it is practical to add it to the cron.
Now I have a different problem.
This is a RESOURCE. Resources aren't currently 'cron'ed. I had to
a) set 'cron' to 1 in '_modules' for the 'resource' module
b) I had to add function cron() to mod/resource/lib.php - this change is just to do an include for mod/resource/type/ims/cron.php
These are core changes, and I can't really distribute them with the code. What to do?????
Going a little insane here. Have followed install instructions to the letter and have set up a repository folder in the corerct directory.
Yet no matter what I do, I get the following error:
Warning: opendir(home/moodle/moodledata/1/repository): failed to open dir: No such file or directory in /home/moodle/public_html/mod/resource/type/ims/finder.php on line 253
Warning: readdir(): supplied argument is not a valid Directory resource in /home/moodle/public_html/mod/resource/type/ims/finder.php on line 256
Warning: closedir(): supplied argument is not a valid Directory resource in /home/moodle/public_html/mod/resource/type/ims/finder.php on line 283
I have tried using a URL link instead, I have tried moving the repository to different locations. Yet no matter what I do the code says it cannot find the repository.
For testing purposes I filled the repository only with your testing data.
Any Ideas what I am missing? I am using the code submitted online on Dec 21.
It appears that the script is looking for the repository folder in moodledata inside the moodle directory. Please could you confirm whether it is the case that you have set things up so that moodledata is inside the moodle directory.
my moodle is actually stored in:
while my moodledata is in:
Apologies for the delay in replying.
It seems that the error you describe is related your using Unix, as Eloy has reported the same. Unfortunately it's a problem for us to test on anything except Windows. We'll try our best to investigate your error, though any offers of help with this, and/or with further testing, would be much appreciated...
Hi Helen (and the rest),
my automatic-hipersensible name detector has been able to inform me about my name being used in your previous post. It worked!
I've pasted below the entire content of the email message I sent you, where some problems are reported and some ideas are shared. Thanks for the recommendation about sending it here!
Hi Helen, I've been playing a bit with your IMS resource type and here there are some ideas and some problems I've found with it. 1.- The premise: I really think that to include it for 1.6 would be really good. Anyway, first we should talk about the next 2.- Conditions: In order to fit inside Moodle distro, source code must comply this characteristics: a) No DOS linefeeds at all. This is easy. ;-) b) Follow Moodle coding style guidelines. Basically, I've find that some parts of your code don't satisfy this completely (variables always lowercase, if/else brackets syntax...). Not too much (it's overall very nice code) but we need to follow that common style. (you know, http://docs.moodle.org/en/Coding) ;-) c) Avoid local config.php files. There are two alternatives for this: 1) By default, use the most common settings and allow to modify them by defining them in the main /config.php file ($CFG). 2) By default, use the most common settings and allow to modify them in the Admin/Configure/ Modules page. d) Make it work like a charm, solving these 3.- Issues/Bugs: When I was using your resource type, I've found some problems that I explain below: a) Having the repository option disabled (default), when any .zip file is selected in the course area, there isn't visible feedback (location) of it. b) While I select any .zip file from the course area, the package seems to be properly deployed (to moddata) but, with debug enabled, I got this warning: Warning: md5_file(): Unable to open file in /Users/stronk7/cvs_moodle/moodle_head/mod/ resource/type/ims/imslib.php on line 51 followed by thousands of: Warning: reset(): Passed variable is not an array or object in /Users/stronk7/cvs_moodle/moodle_head /mod/resource/type/ims/imslib.php on line 152 and the process never ends and I've to stop the browser. c) When I press the "Repository" button, I see one blank page with this error: Warning: opendir(Users/stronk7/Sites/ moodle_data_head/1/repository): failed to open dir: No such file or directory in /Users/stronk7/ cvs_moodle/moodle_head/mod/resource/type/ims/ finder.php on line 253 And I think everything is ok in my settings: dirroot='/Users/stronk7/cvs_moodle/moodle_head'; dataroot='/Users/stronk7/Sites/moodle_data_head'; And the /1/repository under dataroot exists and is readable. And these are the problems/requirements about the whole thing. Now I would write something about the resource way of work itself and how we could improve it (under my opinion). Currently the resource does two different things: 1) Deploy and display course area IMS packages. 2) Navigate and display repository area IMS packages. What if we do this: 1) If the zip file is inside course area: a) Copy it under its moddata/resource/xx dir. b) unzip it. c) deploy it building the "standard" files: 1) moodle_inx.ser: Where the structure of the package is stored in an easy to read format. 2) moodle_hash.ser: Where we store a hash of the package. The md5 of the .zip file. Used to detect if the original package has changed. 2) If the package dir is inside repository area: a) Copy it under its moddata/resource/xx dir. b) zip it! c) deploy it building the "standard" files (above). If we do this we always will have the resource under moddata/resource, both its .zip version, the unzipped one and the "standard" files to be able to re-deploy it if necessary and ready to display it properly. The reason of my interest about having all the stuff under moddata is that then we can "transport" it over backup files without problems (while maintaining it in the repository area will break backups). Also it has another interesting feature: resource will continue working although the original files (course area/repository) were deleted! Once we have the common structure under moddata/resource we can rely on the moodle_inx.ser contents to display the ims package structure (as you are doing currently), or the navigation menu (as I was doing in my original ims resource type). I really think that such file has all the needed info to display both of them. I'm ok about defaulting to "display structure" in resource settings but I'm pretty sure that a lot of ims packages will require only the navigation bar or none of them at all (or both). It depends about how everyone has built the packages. Also, using the moodle_inx.ser as base for display will do the imslib unnecessary (if I'm not wrong) and we'll have centralized the parser (at deploy time) and will avoid to parse the original imsmanifest file everytime it's displayed (I haven't checked if this is the actual approach, is it?) Finally, we can use the moodle_inx.ser file to check periodically if the package has changed and, if so, perform all the work again. And this is all. How does it sound for you? I think that following this path we'll have the best of both worlds with a new ims resource type able to work against both areas, with the max of shared code and great functionalities like changes-auto-detection, separated from original files and transportable inside backups and capable of run SCORM files with the dummy RTE included. Bravo! That's all moodlers! The discussion is open, of course ;-) Ciao, Eloy :-)
Also, the IMS resource type has its own category in the bug tracker now, so feel free to use it for your needs. Everything about this category will be assigned, by default, to Helen.
And this is all. I hope the email was useful. Ciao
Thanks ever so much for your feedback - much appreciated!
It seems that the repository feature would benefit from further discussion, plus we need to resolve the issues you describe. So, rather than becoming stressed about including our resource type in 1.6, I've put the code in cvs:/contrib/ims (download link: http://download.moodle.org/download.php/modules/ims.zip). Perhaps the code may be included in a later Moodle release.
Tried to install from http://download.moodle.org/download.php/modules/ims.zip
Can you check the version in this file - came up with error messages
1. couldn't read version.php (so I copied the file from the object module)
2. couldn't read db/mysql.php - this directory is missing.
Apologies for not making it clear that the zip should be extracted to moodle/mod/resource/type. This will create a folder called "ims" in the type folder.
Because this is a resource type, i.e. part of the resource module, it doesn't have it's own version.php or mysql.php.
I extracted the (ims) resource to the ../resource/ type folder
Nothing happened it doe not showup.
Is there anything that I am missing.
Do we need to add lang files to the Lang files folder???
Will try again
Looking at the error, it looks to me like the directory for the repository has been specified without a leading slash. This means that PHP/Moodle will be looking for the repository in
which is presumably not what you meant.
Not quite sure why it would be doing this. I have looked at the code, but it seems well buried. But in the meantime, it would be worth checking how you have configured the path to the data directory in Moodle if this is the first time you've tried storing anything that uses moodledata.
$ISINMOODLEDATA = true; // ./moodledata/1/$REPNAME (true) or $REPNAME (false) as the repository root
$REPNAME = 'repository'; // In this case, /moodledata/1/repository
$REPURL = ''; // Not used, unless $ISINMOODLEDATA = false
Funny thing is..when cron run, it starts indexing my learning objects just fine. So it obviously was able to follow the path.
New issue...when cron runs the indexing seams to be timing it out (I have a large amount of objects)
Fatal error: Maximum execution time of 30 seconds exceeded in /home/moodle/public_html/lib/adodb/drivers/adodb-mysql.inc.php on line 687
For the time being I have removed the extra ims cron code. Just thought it was worth noting.
I have a strange problem,
I got the IMS module working fine on my localhost windows sandbox machine, but when I upload it to my server, I get the same errors listed above
Warning: readdir(): supplied argument is not a valid Directory resource in /var/www/html/moodle/mod/resource/type/ims/finder.php on line 256
Warning: closedir(): supplied argument is not a valid Directory resource in /var/www/html/moodle/mod/resource/type/ims/finder.php on line 283
Also, if I choose upload, and then select my learning object zip, I get this error:
Warning: md5_file(var/www/html/moodledata/1/moddata/resource/43/imsmanifest.xml) [function.md5-file]: failed to open stream: No such file or directory in /var/www/html/moodle/mod/resource/type/ims/imslib.php on line 51
Warning: file_get_contents(var/www/html/moodledata/1/moddata/resource/43/imsmanifest.xml) [function.file-get-contents]: failed to open stream: No such file or directory in /var/www/html/moodle/mod/resource/type/ims/imslib.php on line 69
Warning: reset() [function.reset]: Passed variable is not an array or object in /var/www/html/moodle/mod/resource/type/ims/imslib.php on line 152
Fatal error: Cannot access empty property in /var/www/html/moodle/mod/resource/type/ims/imslib.php on line 155
very strange... any helping hands would be REALLY appreciated...
Thanks for your testing and for your feedback - much appreciated. Please could you provide further details of your set-up, particularly about your server.
As promised previously, the issue will definitely be investigated. However, please be patient - we may not have chance to do so until mid-April. In the meantime, you may wish to consider trying the following:
- IMS content package resource type - standard in Moodle 1.6, also works in Moodle 1.5+. For further details, please check the discussion New resource type: IMS CP.
- Object module - a contrib module we are using on our production sites, works in Moodle 1.5+ and 1.6. For further details, please check the discussion New module: Object.
I checked my server config - here are some details:
(attached is my php info as an htm file)
- Apache Webserver 2.0
- docroot: /var/www/html/
- moodle data 777
- php 5.1.1
- MySQL 4.0.24-standard
- moodledata/1/repository exists
$REPNAME = 'repository'; // In this case, /moodledata/1/repository
$REPURL = '';
I hope this helps to find out the problem.
As always, many thanks for you and your teams fantastic work on the ongoing development of the object repository. Can't wait to finally see this becom standard in Moodle (maybe 1.6?)
A question I would like to raise, and sadly without answer, is how to manage teacher additions to the repository.
I have three trains of thought and would like to know where you see this going.
First of course is that the teacher adds to the central repository. Makes sense for sharing and eqsy access for other teachers. However it will also create issues if teachers upload duplicate content, put it in the wrong place or upload something just plain inapropriate. Essentialy it makes it just plain hard to manage from the site level.
Second option is that when teachers add to the repository it sits only within their own course. This creates the opposite issues and benefits of the above solution.
A third possibility is that the repository stores objects in folders (categories) that match the moodle installation. This would allow for better catagorisation of objects and allowing of sharing while forcing objects into the folder that was relevant based on the course from which it was uploaded by the teacher.
Hard part would be hooking repository folder maintenance to the course category functions. How would it know to create a new repository folder? If a category is deleted what would happen to objects stored in the related folder? I'm sure more issues can be thought of by yourselves.
So essentially, I would like to open up this dilema to discussion and see what you all think would be the best to do.
Thanks, as always, for your ideas and encouragement.
A fourth option for managing teacher additions to the repository would be to use data from the imsmanifest file to put the package in an appropriate place in the central repository.
All comments and suggestions are appreciated!
This new feature is excellent and we are already using this on our site.
I was thinking about Julian's question about how staff would upload materials to the Repository without replicating other materials....
It thought it might be a good idea to use some kind of temporary holding area which staff could upload to and then a Mederator would then approve the materials at a later date.
The Moderator would have an admin screen which would let them approve the upload and add a brief comment and also let them move the upload into the right folder. The brief comment would then be automatically emailed to the Moderator f and the staff member who uploaded the material.
I don't know if this is a good idea, any comments...
The way we do it with NLN materials is that the materials aren't uploaded via Moodle at all. The Administrator/Moderator actually puts the materials in the Repository folder on the server directly. Moodle's Object module then finds the folder automatically on its next visit.
Doing it this way gives us total control over what materials are added and where they go, otherwise staff will be adding all sorts of stuff and creating bizarre folder structures which suit them but mean that no-one else will be able to find the materials they need.
I have placed IMS in the ..../resource/type/ ims.
Made changes to the config file therin as under
set repository = true
set path to the repository in moodledata/1/repository/
Still I do not see the resource typr in the resources.
Can you please guide me into understanding wher I may be going wrong.
Apologies for the delay in replying.
The most likely cause of the problem you describe is having a folder called "ims" within mod/resource/type/ims. Please check you have only one folder called "ims".
Thanks for the guidance.
I have done a recheck.
1. There is only ONE ims folder in " .....mod\resource\type\ims"
2. I have added the Lang files as under:
"...en\help\resource\type... added the ims.html here"
"...lang\en\help\resource... added the imsbuttons.html here"
Could the problem lie in the config file.
The path for the location given my me is as under.
"$REPNAME = 'C:/moodledata/1/repository'; " This is the location where the repository is located.
UNDER the resource type I only see the resource " ADD AN OBJECT".
I guess this is the setting and there is no additional drop down in the resource menue.
Shall appreciate a confirm.
Thanks once again.
Yes, this is how it should be. Please try adding an object.
I have installed the New object Module and on trying to create a Object as a resource in a lesson I get the follwoign erros:
"Warning: main(lib.php): failed to open stream: No such file or directory in e:\program files\easyphp\www\lms\mod\resource\type\ims\deploy.php on line 43
Fatal error: main(): Failed opening required 'lib.php' (include_path='E:\Program Files\EasyPHP\php\pear\') in e:\program files\easyphp\www\lms\mod\resource\type\ims\deploy.php on line 43"
I am using Moodle 1.5.3. CVS download
OS Windows 2000
I need your help in resolving this.
Checked the folder location.
It is in the location suggested.
I am using the IMS zip date 28 Jan
The IMS option is visible but the deplyment of the dummy lession in the repository does not load.
Any other checks you suggest???
Apologies for not noticing your post before now. If the problem remains unresolved, please could you provide further details of your set-up.
My Problem persists and I am unable to make full use of this beautiful functionality.
My Environment: OS windows 2000 SP 4
Moodle 1.5.3 CVS Download.
Easy PHP 1.7
If there is anything specific you want me to check out and post I could do so and give you a feed back.
Problem: When I want to add the demo resources type The resource type shows up and I can drill down to the object in the present case. The central object repository button is clicked which opens up the Object Index. In the object index is a folder --> MAths. On clicking this I get Two object Descision Maths and Puzzle.
On clicking Descision Maths Open Up Linear Programming
When I click to add this I get the error.
"Warning: main(lib.php): failed to open stream: No such file or directory in e:\program files\easyphp\www\lms\mod\resource\type\ims\deploy.php on line 43
Fatal error: main(): Failed opening required 'lib.php' (include_path='E:\Program Files\EasyPHP\php\pear') in e:\program files\easyphp\www\lms\mod\resource\type\ims\deploy.php on line 43"
On Review of ..\ims\deploy.php on line 43 we have the following code:
I am at a loss at how to proceed further.
Look forward for your help.
Thanks for providing further details. Your problem will be investigated when we have time, though this may not be for a while.
Any chance you had a chance to look at my problem.
I have successfully installed your module... wow.. what a great idea.
I have a question though, how can I get multiple moodles on my webserver to share the same repository?
Is this possible?
Thanks for your feedback.
If you wish to share the same repository between multiple Moodle sites then the repository should be located outside moodledata. Please check ims/config.php for further details.
This discussion is great! but a little confusing for newbies... ie: what does NLN stand for?
Also how can I create a new object (my own object)?
I know how to upload... but for example, what if i have a fantastic flash .swf lesson, or moodle lesson, or powerpoint file, that Id like to upload to the repository for other teachers.... how can I change one of these into an object?
Please let me know
I am excited to try it out!
basically, you need to create assests, format your material, and package it...
... er what????
Well fortunetally found all of this information packaged nicely into a learning object itself which you can follow as a tutorial... so if you have installed the object resource in this forum, you can unzip the accompaning file attached (which came from the ilearn website) and unzip it into your repository folder.
And then add it as an object to your course.
There is also a dreamweaver extension that you can use to make learning objects: found here
I have also copy and pasted some of the content of the learning module below in case the above links become invalid over time.
What is a Learning Object?
A Learning Object can be anything from a single piece of digital content to an entire course.
For this discussion, we'll consider a Learning Object as a number of assets covering a particular topic, which are assembled or compiled to form a unit of learning.
The page you are reading now will itself serve as an example of a Learning Object. This whole website, Making Learning Objects will be packaged as a course, a collection of Learning Objects.
What is an Asset?
If a Learning Object is a collection of assets, then what is an asset?
An asset is a defined fragment within a Learning Object. It is the smallest piece of instruction or information that makes sense on its own.
The graphic to the right is an asset within the current Learning Object of this website, as is the banner graphic above, and the text of this page.
The first step in making a Learning Object is to bring together all the digital assets that will be required.
This may first mean designing and creating graphics, digitizing video sources, or editing copy text, before collecting (compiling) these assets into one location.
For the purposes of this websiteour example of Learning Objectswe prepared our graphics (in Photoshop) and body text (in Notepad), and collected the resulting digital files into a single folder, in preparation for formatting into web pages.
Format the Learning Object
Once the assets required by our Learning Object have been compiled (identified or created, and collected), the next step is to format them into the actual object.
This process will depend on the types of assets used, and on the authoring tool appropriate for the task of formatting assets of those types.
For the purposes of this example website, we used Macromedia Dreamweaver (an Web Authoring Tool) to format our text and graphic assets into HTML pages.
Making Learning Objects
What are Metatags?
Metatags are where metadata are stored. Metadatadata-about-dataare a codified way of describing an object and its assets.
Metadata allows an organization to systematically describe and classify its learning objects and assets, to be better able to archive, search for, share, and reuse them.
Metadata is stored in a separate file, called a "Manifest". The manifest file is included with the other files in the Learning Object when the files are gathered together, or "packaged". The metadata is stored using a specific coding language called XML.
Metadata may be entered manually, though the chosen Learning Object authoring or packaging tool will likely provide a mechanism for entering this information.
Making Learning Objects
Packaging a Learning Object
To package a Learning Object is to document in one place the description of the object and its assets, and list these in a manifest file called imsmanifest.xml.
If multiple Learning Objects are packaged, information about sequencing them into a course would also be included in the SCORM manifest file.
SCORM stands for Shareable Content Object Reference Model. SCORM 1.2 is one specification for packaging learning content, and is derived from the larger IMS Content Packaging specification, version 1.1.2.
For this Making Learning Objects website example, our use of Manifest Maker not only recorded our few simple metatags, but also created the SCORM wrapper (another term for the package) that will facilitate our ability to transport or deploy this course.
Transportability of our Learning Objects is further achieved by finally archiving all components together into one placea "zip" fileusing the file compression tool WinZip.
You may download this zip file (right-click the link above and choose the Save As... option) if you would like to examine the elements of our Learning Objects package more closely. (You will require WinZip or a similar tool to unzip the archive.)
is this possible?
In the meantime, try out the eXe authoring tool - I've just started using it and I'm impressed. It makes it nice and easy. You don't even need to know what an imsmanifest is!
I haven't tried the eXe authoring tool yet, but tried the RELOAD one instead. The reload one works pretty nicely too...
have you had any luck installing the OBJECT module into moodle online? My local machine works but online I get a warning message that the repository can not be found -
yet my moodledata dir is outside my moodle dir, and the config correctly points to it... its very strange...
do you have any ideas?
also, what kind of learning objects are you creating?
Ie: all English Teachers / Computing Science Teachers etc using the same curriculem could share each others quizzes etc -
A lot of work duplication could be avoided...
hopefully this will evolve into ther Object module!
Thanks to the folks at: OSLOR I managed to follow their excellent tutorial, and used a software package called RELOAD to create a learning object that works with the object module.
Anyhow, good luck!
If such a place exists, couldn't anyone with the object module installed, just point their config at the repository and access millions of learning objects?
woah... that would be mega cool...
please let me know if this is possible, or in the works.
Also, any ESL English teachers out there who are building learning objects, please send me an email! I'd love to share content!
This mod just doesnt seam to work on a webserver.
Ive tried two different servers now, and 3 different installations - 1.5.3, and 1.6 development,
it appears that finder.php can't read the moodledata/1/repository folder... it cant find it I guess.
The strange thing is, on my local machine, everything works, but when uploaded to a live webserve, it dies.
I thought maybe finder.php forgot the begining "/" when trying to read the repository because my error message was:
Warning: opendir(var/www/html/moodledata/1/repository) [function.opendir]: failed to open dir: No such file or directory in /var/www/html/moodle/mod/resource/type/ims/finder.php on line 253
(notice no "/" by var)
so I changed line 253 in finder php to $dir = opendir("/" . $this->materialpath("$this->fileroot"));
and voila! no more error messages... but alas, also still no objects listed...
so... Im pretty frusterated...
I sooo want this feature on my site, but ... have had no luck
PLEASE PLEASE if someone out there can help me, or has successfully installed this on thier site, please let me know...
actually, that is a good question - has ANYONE got this mod working?
I've got the Object Module working okay, with over a dozen different Moodles accessing it, so yes, it does work!
You say that "The strange thing is, on my local machine, everything works, but when uploaded to a live webserve, it dies." When this happens it's a dead giveaway that it's a path problem. In Moodle generally the paths are defined in config.php, but the Object Module has its own path definitions as well.
Have a look in Administration » Configuration » Modules » Object, and check object_dirroot and object_webroot. That might solve your problem.
Please note that the Object repository is a resource type, not a module, and requires further testing and development before being considered for a production site.
However, as Chris describes, the Object module works fine. Please check the discussion New module: Object for further details.
I'm facing problems with manifests including special characters from Spanish. Words including special chars, such as á or é or any other, are being truncated. Please see attached pic.
See how "Localización" appears as "ón", but "geográfica" appears correctly.
The HTML code generated looks like this
<a href='?object-display=true¤t-material=parte01.htm&id=4'>ón geográfica de Chile</a>
The Manifest looks like this
<item identifier="ITEM-6D5ADB09-ABA3-011F-CE74-BD5A02F3B13F" isvisible="true" identifierref="RES-148A1A58-09D7-4ED4-7A13-F97ADAE6BA01">
<title>Localización geográfica de Chile</title>
Is this a bug or something related to UTF-8?
Thanks for any info