Permalink
Browse files

Merge branch 'MDL-27857-assignment-portfolio_20_STABLE' of git://gith…

…ub.com/mudrd8mz/moodle into MOODLE_20_STABLE
  • Loading branch information...
2 parents 33091e7 + f5edf4e commit d5ca7b11b71edc68f830619d90c5b5cf3b9be779 @stronk7 stronk7 committed Oct 4, 2011
View
@@ -250,7 +250,7 @@ public function render($format=null, $addstr=null) {
*
* @param int $format format to display the button or form or icon or link.
* See constants PORTFOLIO_ADD_XXX for more info.
- * optional, defaults to PORTFOLI_ADD_FULL_FORM
+ * optional, defaults to PORTFOLIO_ADD_FULL_FORM
* @param str $addstr string to use for the button or icon alt text or link text.
* this is whole string, not key. optional, defaults to 'Add to portfolio';
*/
@@ -123,9 +123,11 @@
a zipped web site, or anything you ask them to submit.</p>';
$string['hideintro'] = 'Hide description before available date';
$string['hideintro_help'] = 'If enabled, the assignment description is hidden before the "Available from" date. Only the assignment name is displayed.';
-$string['invalidassignment'] = 'incorrect assignment';
-$string['invalidid'] = 'assignment ID was incorrect';
-$string['invalidtype'] = 'Incorrect assignment type';
+$string['invalidassignment'] = 'Invalid assignment';
+$string['invalidfileandsubmissionid'] = 'Missing file or submission ID';
+$string['invalidid'] = 'Invalid assignment ID';
+$string['invalidsubmissionid'] = 'Invalid submission ID';
+$string['invalidtype'] = 'Invalid assignment type';
$string['invaliduserid'] = 'Invalid user ID';
$string['itemstocount'] = 'Count';
$string['lastgrade'] = 'Last grade';
View
@@ -1910,16 +1910,16 @@ function print_user_files($userid=0, $return=false) {
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$this->context->id.'/mod_assignment/submission/'.$submission->id.'/'.$filename);
$output .= '<a href="'.$path.'" ><img src="'.$OUTPUT->pix_url(file_mimetype_icon($mimetype)).'" class="icon" alt="'.$mimetype.'" />'.s($filename).'</a>';
if ($this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) {
- $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'fileid' => $file->get_id()), '/mod/assignment/locallib.php');
+ $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'submissionid' => $submission->id, 'fileid' => $file->get_id()), '/mod/assignment/locallib.php');
$button->set_format_by_file($file);
$output .= $button->to_html(PORTFOLIO_ADD_ICON_LINK);
}
$output .= plagiarism_get_links(array('userid'=>$userid, 'file'=>$file, 'cmid'=>$this->cm->id, 'course'=>$this->course, 'assignment'=>$this->assignment));
$output .= '<br />';
}
if (count($files) > 1 && $this->portfolio_exportable() && has_capability('mod/assignment:exportownsubmission', $this->context)) {
- $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id), '/mod/assignment/locallib.php');
- $output .= '<br />' . $button->to_html();
+ $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'submissionid' => $submission->id), '/mod/assignment/locallib.php');
+ $output .= '<br />' . $button->to_html(PORTFOLIO_ADD_TEXT_LINK);
}
}
@@ -38,18 +38,29 @@ class assignment_portfolio_caller extends portfolio_module_caller_base {
*/
private $assignmentfile;
+ /** @var int callback arg - the id of submission we export */
+ protected $submissionid;
+
/**
* callback arg for a single file export
*/
protected $fileid;
public static function expected_callbackargs() {
return array(
- 'id' => true,
- 'fileid' => false,
+ 'id' => true,
+ 'submissionid' => false,
+ 'fileid' => false,
);
}
+ /**
+ * Load data needed for the portfolio export
+ *
+ * If the assignment type implements portfolio_load_data(), the processing is delegated
+ * to it. Otherwise, the caller must provide either fileid (to export single file) or
+ * submissionid (to export all data attached to the given submission) via callback arguments.
+ */
public function load_data() {
global $DB, $CFG;
@@ -75,9 +86,23 @@ public function load_data() {
return $this->assignment->portfolio_load_data($this);
}
- $submission = $DB->get_record('assignment_submissions', array('assignment'=>$assignment->id, 'userid'=>$this->user->id));
+ if (empty($this->fileid)) {
+ if (empty($this->submissionid)) {
+ throw new portfolio_caller_exception('invalidfileandsubmissionid', 'mod_assignment');
+ }
+
+ if (! $submission = $DB->get_record('assignment_submissions', array('assignment'=>$assignment->id, 'id'=>$this->submissionid))) {
+ throw new portfolio_caller_exception('invalidsubmissionid', 'mod_assignment');
+ }
+
+ $submissionid = $submission->id;
+
+ } else {
+ // once we know the file id, we do not need the submission
+ $submissionid = null;
+ }
- $this->set_file_and_format_data($this->fileid, $this->assignment->context->id, 'mod_assignment', 'submission', $submission->id, 'timemodified', false);
+ $this->set_file_and_format_data($this->fileid, $this->assignment->context->id, 'mod_assignment', 'submission', $submissionid, 'timemodified', false);
}
public function prepare_package() {
@@ -95,9 +95,9 @@ public function __construct($context, $itemid, $filearea='submission') {
$files = $fs->get_area_files($this->context->id, 'mod_assignment', $filearea, $itemid, "timemodified", false);
if (count($files) >= 1 && has_capability('mod/assignment:exportownsubmission', $this->context)) {
$button = new portfolio_add_button();
- $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id), '/mod/assignment/locallib.php');
+ $button->set_callback_options('assignment_portfolio_caller', array('id' => $this->cm->id, 'submissionid' => $itemid), '/mod/assignment/locallib.php');
$button->reset_formats();
- $this->portfolioform = $button->to_html();
+ $this->portfolioform = $button->to_html(PORTFOLIO_ADD_TEXT_LINK);
}
$this->preprocess($this->dir, $filearea);
}

0 comments on commit d5ca7b1

Please sign in to comment.