This commit includes:
- leap2a portfolio format, and xml writer
- proof of concept implementation in forum and assignment modules
- a lot of refactoring of the portfolio formats in general:
- addition of "abstract" formats - this is necessary for plugins to be able to support groups of formats
- addition of the idea of portfolio formats conflicting with eachother - eg richhtml & plainhtml
it touches modules other than assignment and forum, because the format api
changed and now each place in moodle that exports portfolio content has to deal
with the formats it supports slightly differently.
At the moment the Mahara portfolio still doesn't support this format, because I
haven't done the Mahara side yet. The "file download" plugin supports it
though.
Still todo:
- Add support for the other places in Moodle (glossary, data, etc)
- Write tests, once the rest of the portfolio tests have been updated to use the new DB mocking stuff
- Fix a bunch of TODOs
lots of work to elegantly resolve the issue between interactive browser
sessions and "pull" portfolio plugins that cause a race condition where we lose
the ability to display information to the user if the pull cleans up the export
first. this also improves the portfolio transfer log display for later
For plugins that don't support it, we can work around the external
redirect issue by returning to a special url.
This also adds on selective cancelling/continuing of current exports.
It needs a lot of testing, but seems to be working reasonably well.
Some plugins need updating now, however
this is the first step in moving towards supporting multiple exports per session.
however, some plugins aren't going to be able to support this (eg box.net) so
we add the instance to the tempdata table, so that we can quickly check whether
we have an export of the same *type* of plugin in the session.
Added much needed documentation to the portfolio "scripts" (the libs are all
fine), and moved all parameter fetching from the body of the file to the top.
Also added a parameter to verify reawaken so that when we are just viewing queued transfer logs it can be in a different session (sesskey verification)
rather than relying on return values (send_package and prepare_package)
move zipping of temporary files into the exporter class so it can be overridden during unit tests
fix a small todo in mahara plugin
added two new contract methods to the caller class, load_data and expected_callbackargs (static)
this means that the base class is the only place that needs a constructor
and that no data loading happens in the constructor
this in turn means we can check callback argument validity much more lightly
also completely remoted portfolio_add_button function and replaced with a class
as the argument list was getting out of control. it's now much more readable.
currently portfolio_add_button still exists and just acts as a wrapper around the class
so i have not changed any calling code to use the new objects yet.
Especially as some of the functions shared by base classes (portfolio plugin vs caller) were the same
it was getting a bit unweildy to have all this in one file.