mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 04:52:36 +02:00
MDL-16596 basic areafiles formslib element
This commit is contained in:
parent
11550b8adb
commit
8546def3b6
@ -42,8 +42,11 @@
|
||||
}
|
||||
|
||||
switch ($filearea) {
|
||||
case 'user_draft' : $itemid = (int)array_shift($args); break;
|
||||
default: send_file_not_found();
|
||||
case 'user_draft':
|
||||
$itemid = (int)array_shift($args);
|
||||
break;
|
||||
default:
|
||||
send_file_not_found();
|
||||
}
|
||||
|
||||
$relativepath = '/'.implode('/', $args);
|
||||
|
209
files/areafiles.php
Normal file
209
files/areafiles.php
Normal file
@ -0,0 +1,209 @@
|
||||
<?php // $Id$
|
||||
|
||||
require('../config.php');
|
||||
require_once($CFG->libdir.'/filelib.php');
|
||||
|
||||
$contextid = required_param('contextid', PARAM_INT);
|
||||
$filearea = required_param('filearea', PARAM_ALPHAEXT);
|
||||
$itemid = required_param('itemid', PARAM_INT);
|
||||
|
||||
$filepath = optional_param('filepath', '/', PARAM_PATH);
|
||||
$filename = optional_param('filename', '', PARAM_FILE);
|
||||
|
||||
$newdirname = optional_param('newdirname', '', PARAM_FILE);
|
||||
$delete = optional_param('delete', 0, PARAM_BOOL);
|
||||
|
||||
if (!$context = get_context_instance_by_id($contextid)) {
|
||||
print_error('invalidcontext');
|
||||
}
|
||||
|
||||
require_login();
|
||||
if (isguestuser()) {
|
||||
print_error('noguest');
|
||||
}
|
||||
|
||||
$browser = get_file_browser();
|
||||
|
||||
if (!$area_info = $browser->get_file_info($context, $filearea, $itemid, '/', null)) {
|
||||
error('Can not browse this area!'); // TODO: localise
|
||||
}
|
||||
|
||||
if ($filename === '') {
|
||||
$filename = null;
|
||||
}
|
||||
|
||||
$error = '';
|
||||
|
||||
if ($filepath === '/' and is_null($filename)) {
|
||||
$file_info = $area_info;
|
||||
} else {
|
||||
if (!$file_info = $browser->get_file_info($context, $filearea, $itemid, $filepath, $filename)) {
|
||||
error('Can not browse this directory!'); // TODO: localise
|
||||
}
|
||||
}
|
||||
|
||||
/// process actions
|
||||
if ($file_info and $file_info->is_directory() and $file_info->is_writable() and $newdirname !== '' and data_submitted() and confirm_sesskey()) {
|
||||
if ($newdir_info = $file_info->create_directory($newdirname, $USER->id)) {
|
||||
$params = $newdir_info->get_params_rawencoded();
|
||||
$params = implode('&', $params);
|
||||
redirect("areafiles.php?$params");
|
||||
} else {
|
||||
$error = "Could not create new dir"; // TODO: localise
|
||||
}
|
||||
}
|
||||
|
||||
if ($file_info and $file_info->is_directory() and $file_info->is_writable() and isset($_FILES['newfile']) and data_submitted() and confirm_sesskey()) {
|
||||
$file = $_FILES['newfile'];
|
||||
$newfilename = clean_param($file['name'], PARAM_FILE);
|
||||
if (is_uploaded_file($_FILES['newfile']['tmp_name'])) {
|
||||
try {
|
||||
if ($newfile = $file_info->create_file_from_pathname($newfilename, $_FILES['newfile']['tmp_name'], $USER->id)) {
|
||||
$params = $file_info->get_params_rawencoded();
|
||||
$params = implode('&', $params);
|
||||
redirect("areafiles.php?$params");
|
||||
|
||||
} else {
|
||||
$error = "Could not create upload file"; // TODO: localise
|
||||
}
|
||||
} catch (file_exception $e) {
|
||||
$error = "Exception: Could not create upload file"; // TODO: localise
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($file_info and $delete) {
|
||||
if (!data_submitted() or !confirm_sesskey()) {
|
||||
print_header();
|
||||
notify(get_string('deletecheckwarning').': '.$file_info->get_visible_name());
|
||||
$parent_info = $file_info->get_parent();
|
||||
|
||||
$optionsno = $parent_info->get_params();
|
||||
$optionsyes = $file_info->get_params();
|
||||
$optionsyes['delete'] = 1;
|
||||
$optionsyes['sesskey'] = sesskey();
|
||||
|
||||
notice_yesno (get_string('deletecheckfiles'), 'areafiles.php', 'areafiles.php', $optionsyes, $optionsno, 'post', 'get');
|
||||
print_footer('empty');
|
||||
die;
|
||||
}
|
||||
|
||||
if ($parent_info = $file_info->get_parent() and $parent_info->is_writable()) {
|
||||
if (!$file_info->delete()) {
|
||||
$error = "Could not delete file!"; // TODO: localise
|
||||
}
|
||||
$params = $parent_info->get_params_rawencoded();
|
||||
$params = implode('&', $params);
|
||||
redirect("areafiles.php?$params", $error);
|
||||
}
|
||||
}
|
||||
|
||||
print_header();
|
||||
|
||||
if ($error !== '') {
|
||||
notify($error);
|
||||
}
|
||||
|
||||
echo '<div class="areafiles">';
|
||||
displaydir($file_info);
|
||||
echo '</div>';
|
||||
|
||||
if ($file_info and $file_info->is_directory() and $file_info->is_writable()) {
|
||||
|
||||
echo '<form enctype="multipart/form-data" method="post" action="areafiles.php"><div>';
|
||||
echo '<input type="hidden" name="contextid" value="'.$contextid.'" />';
|
||||
echo '<input type="hidden" name="filearea" value="'.$filearea.'" />';
|
||||
echo '<input type="hidden" name="itemid" value="'.$itemid.'" />';
|
||||
echo '<input type="hidden" name="filepath" value="'.s($filepath).'" />';
|
||||
echo '<input type="hidden" name="filename" value="'.s($filename).'" />';
|
||||
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||
echo '<input name="newfile" type="file" />';
|
||||
echo '<input type="submit" value="'.get_string('uploadafile').'" />';
|
||||
echo '</div></form>';
|
||||
|
||||
echo '<form action="areafiles.php" method="post"><div>';
|
||||
echo '<input type="hidden" name="contextid" value="'.$contextid.'" />';
|
||||
echo '<input type="hidden" name="filearea" value="'.$filearea.'" />';
|
||||
echo '<input type="hidden" name="itemid" value="'.$itemid.'" />';
|
||||
echo '<input type="hidden" name="filepath" value="'.s($filepath).'" />';
|
||||
echo '<input type="hidden" name="filename" value="'.s($filename).'" />';
|
||||
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||
echo '<input type="text" name="newdirname" value="" />';
|
||||
echo '<input type="submit" value="'.get_string('makeafolder').'" />';
|
||||
echo '</div></form>';
|
||||
}
|
||||
|
||||
|
||||
print_footer('empty');
|
||||
|
||||
/// FILE FUNCTIONS ///////////////////////////////////////////////////////////
|
||||
|
||||
function displaydir($file_info) {
|
||||
global $CFG;
|
||||
|
||||
$children = $file_info->get_children();
|
||||
$parent_info = $file_info->get_parent();
|
||||
|
||||
$strname = get_string('name');
|
||||
$strsize = get_string('size');
|
||||
$strmodified = get_string('modified');
|
||||
$strfolder = get_string('folder');
|
||||
$strfile = get_string('file');
|
||||
$strdownload = get_string('download');
|
||||
$strdelete = get_string('delete');
|
||||
$straction = get_string('action');
|
||||
|
||||
$parentwritable = $file_info->is_writable();
|
||||
|
||||
$directory = $file_info->get_params();
|
||||
$directory = $directory['filepath'];
|
||||
|
||||
if ($parent_info and $directory !== '/') {
|
||||
$params = $parent_info->get_params_rawencoded();
|
||||
$params = implode('&', $params);
|
||||
|
||||
echo '<div class="folder">';
|
||||
echo '<a href="areafiles.php?'.$params.'"><img src="'.$CFG->pixpath.'/f/parent.gif" class="icon" alt="" /> '.get_string('parentfolder').'</a>';
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
if ($children) {
|
||||
foreach ($children as $child_info) {
|
||||
$filename = $child_info->get_visible_name();
|
||||
$filesize = $child_info->get_filesize();
|
||||
$filesize = $filesize ? display_size($filesize) : '';
|
||||
|
||||
$mimetype = $child_info->get_mimetype();
|
||||
|
||||
$params = $child_info->get_params_rawencoded();
|
||||
$params = implode('&', $params);
|
||||
|
||||
if ($child_info->is_directory()) {
|
||||
|
||||
echo '<div class="folder">';
|
||||
echo "<a href=\"areafiles.php?$params\"><img src=\"$CFG->pixpath/f/folder.gif\" class=\"icon\" alt=\"$strfolder\" /> ".s($filename)."</a>";
|
||||
if ($parentwritable) {
|
||||
echo "<a href=\"areafiles.php?$params&sesskey=".sesskey()."&delete=1\"><img src=\"$CFG->pixpath/t/delete.gif\" class=\"iconsmall\" alt=\"$strdelete\" /></a>";
|
||||
}
|
||||
echo '</div>';
|
||||
|
||||
} else {
|
||||
|
||||
$icon = mimeinfo_from_type('icon', $mimetype);
|
||||
echo '<div class="file">';
|
||||
echo "<img src=\"$CFG->pixpath/f/$icon\" class=\"icon\" alt=\"$strfile\" /> ".s($filename)." ($filesize)";
|
||||
if ($viewurl = $child_info->get_url()) {
|
||||
echo " ".link_to_popup_window ($viewurl, "display",
|
||||
"<img src=\"$CFG->pixpath/t/preview.gif\" class=\"iconsmall\" alt=\"$strfile\" /> ",
|
||||
480, 640, get_string('viewfileinpopup'), null, true);
|
||||
}
|
||||
if ($parentwritable) {
|
||||
echo "<a href=\"areafiles.php?$params&sesskey=".sesskey()."&delete=1\"><img src=\"$CFG->pixpath/t/delete.gif\" class=\"iconsmall\" alt=\"$strdelete\" /></a>";;
|
||||
}
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -82,7 +82,7 @@ class file_browser {
|
||||
}
|
||||
}
|
||||
$urlbase = $CFG->wwwroot.'/userfile.php';
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areauserpersonal', 'repository'), false, true, true);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areauserpersonal', 'repository'), false, true, true, false);
|
||||
|
||||
} else if ($filearea == 'user_profile') {
|
||||
if (is_null($itemid)) {
|
||||
@ -112,7 +112,7 @@ class file_browser {
|
||||
}
|
||||
}
|
||||
$urlbase = $CFG->wwwroot.'/userfile.php';
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areauserprofile', 'repository'), false, true, true);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areauserprofile', 'repository'), false, true, true, false);
|
||||
|
||||
|
||||
} else if ($filearea == 'user_draft') {
|
||||
@ -126,6 +126,10 @@ class file_browser {
|
||||
return null;
|
||||
}
|
||||
$urlbase = $CFG->wwwroot.'/draftfile.php';
|
||||
|
||||
$filepath = is_null($filepath) ? '/' : $filepath;
|
||||
$filename = is_null($filename) ? '.' : $filename;
|
||||
|
||||
if (!$storedfile = $fs->get_file($context->id, $filearea, $itemid, $filepath, $filename)) {
|
||||
if ($filepath === '/' and $filename === '.') {
|
||||
$storedfile = new virtual_root_file($context->id, $filearea, $itemid);
|
||||
@ -134,7 +138,7 @@ class file_browser {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areauserdraft', 'repository'), true, true, true);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areauserdraft', 'repository'), true, true, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -173,7 +177,7 @@ class file_browser {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areacategoryintro', 'repository'), false, true, true);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areacategoryintro', 'repository'), false, true, true, false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,7 +218,7 @@ class file_browser {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areacourseintro', 'repository'), false, true, true);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areacourseintro', 'repository'), false, true, true, false);
|
||||
|
||||
} else if ($filearea == 'course_backup') {
|
||||
if (!has_capability('moodle/site:backup', $context) and !has_capability('moodle/site:restore', $context)) {
|
||||
@ -233,7 +237,7 @@ class file_browser {
|
||||
|
||||
$downloadable = has_capability('moodle/site:backupdownload', $context);
|
||||
$uploadable = has_capability('moodle/site:backupupload', $context);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areabackup', 'repository'), false, $downloadable, $uploadable);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, get_string('areabackup', 'repository'), false, $downloadable, $uploadable, false);
|
||||
|
||||
} else if ($filearea == 'course_content') {
|
||||
if (!has_capability('moodle/course:managefiles', $context)) {
|
||||
@ -307,7 +311,7 @@ class file_browser {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, $areas[$filearea], false, true, true);
|
||||
return new file_info_stored($this, $context, $storedfile, $urlbase, $areas[$filearea], false, true, true, false);
|
||||
|
||||
} else {
|
||||
$fileinfofunction = $modname.'_get_file_info';
|
||||
@ -329,7 +333,7 @@ class file_browser {
|
||||
|
||||
$storedfiles = $fs->get_directory_files($context->id, $filearea, $itemid, $filepath, false, true, "filepath, filename");
|
||||
foreach ($storedfiles as $file) {
|
||||
$result[] = new file_info_stored($this, $context, $file, $urlbase, $areavisiblename, $itemidused, $readaccess, $writeaccess);
|
||||
$result[] = new file_info_stored($this, $context, $file, $urlbase, $areavisiblename, $itemidused, $readaccess, $writeaccess, false);
|
||||
}
|
||||
|
||||
return $result;
|
||||
|
@ -4,7 +4,7 @@ class file_info_coursefile extends file_info_stored {
|
||||
public function __construct($browser, $context, $storedfile) {
|
||||
global $CFG;
|
||||
$urlbase = $CFG->wwwroot.'/file.php';
|
||||
parent::__construct($browser, $context, $storedfile, $urlbase, get_string('coursefiles'), false, true, true);
|
||||
parent::__construct($browser, $context, $storedfile, $urlbase, get_string('coursefiles'), false, true, true, false);
|
||||
}
|
||||
|
||||
public function get_url($forcedownload=false, $https=false) {
|
||||
|
@ -7,8 +7,9 @@ class file_info_stored extends file_info {
|
||||
protected $itemidused;
|
||||
protected $readaccess;
|
||||
protected $writeaccess;
|
||||
protected $areaonly;
|
||||
|
||||
public function __construct($browser, $context, $storedfile, $urlbase, $areavisiblename, $itemidused, $readaccess, $writeaccess) {
|
||||
public function __construct($browser, $context, $storedfile, $urlbase, $areavisiblename, $itemidused, $readaccess, $writeaccess, $areaonly) {
|
||||
parent::__construct($browser, $context);
|
||||
|
||||
$this->lf = $storedfile;
|
||||
@ -17,6 +18,7 @@ class file_info_stored extends file_info {
|
||||
$this->itemidused = $itemidused;
|
||||
$this->readaccess = $readaccess;
|
||||
$this->writeaccess = $writeaccess;
|
||||
$this->areaonly = $areaonly;
|
||||
}
|
||||
|
||||
public function get_params() {
|
||||
@ -39,7 +41,9 @@ class file_info_stored extends file_info {
|
||||
$dir = explode('/', $dir);
|
||||
$dir = array_pop($dir);
|
||||
if ($dir === '') {
|
||||
if ($this->itemidused) {
|
||||
if ($this->areaonly) {
|
||||
return $this->areavisiblename;
|
||||
} else if ($this->itemidused) {
|
||||
return $this->lf->get_itemid();
|
||||
} else {
|
||||
return $this->areavisiblename;
|
||||
@ -110,22 +114,25 @@ class file_info_stored extends file_info {
|
||||
return array();
|
||||
}
|
||||
return $this->browser->build_stored_file_children($this->context, $this->lf->get_filearea(), $this->lf->get_itemid(), $this->lf->get_filepath(),
|
||||
$this->urlbase, $this->areavisiblename, $this->itemidused, $this->readaccess, $this->writeaccess);
|
||||
$this->urlbase, $this->areavisiblename, $this->itemidused, $this->readaccess, $this->writeaccess,
|
||||
$this->areaonly);
|
||||
}
|
||||
|
||||
public function get_parent() {
|
||||
if (!$this->lf->is_directory()) {
|
||||
return $this->browser->get_file_info($this->context, $this->lf->get_filearea(), $this->lf->get_itemid(), $this->lf->get_filepath(), '.');
|
||||
}
|
||||
|
||||
if ($this->lf->get_filepath() === '/') {
|
||||
if ($this->itemidused) {
|
||||
if ($this->lf->get_filepath() === '/' and $this->lf->is_directory()) {
|
||||
if ($this->areaonly) {
|
||||
return null;
|
||||
} else if ($this->itemidused) {
|
||||
return $this->browser->get_file_info($this->context, $this->lf->get_filearea(), $this->lf->get_itemid());
|
||||
} else {
|
||||
return $this->browser->get_file_info($this->context, $this->lf->get_filearea());
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->lf->is_directory()) {
|
||||
return $this->browser->get_file_info($this->context, $this->lf->get_filearea(), $this->lf->get_itemid(), $this->lf->get_filepath(), '.');
|
||||
}
|
||||
|
||||
$filepath = $this->lf->get_filepath();
|
||||
$filepath = trim($filepath, '/');
|
||||
$dirs = explode('/', $filepath);
|
||||
|
@ -58,19 +58,60 @@ function get_file_url($path, $options=null, $type='coursefile') {
|
||||
return $ffurl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns empty user upload draft area information
|
||||
* @return array with area info
|
||||
*/
|
||||
function get_new_draftarea() {
|
||||
global $DB, $USER;
|
||||
|
||||
if (isguestuser() or !isloggedin()) {
|
||||
print_error('noguest');
|
||||
}
|
||||
|
||||
$contextid = get_context_instance(CONTEXT_USER, $USER->id)->id;
|
||||
$filearea = 'user_draft';
|
||||
|
||||
$fs = get_file_storage();
|
||||
$draftitemid = rand(1, 999999999);
|
||||
while ($files = $fs->get_area_files($contextid, $filearea, $draftitemid)) {
|
||||
$draftitemid = rand(1, 999999999);
|
||||
}
|
||||
|
||||
return array('contextid'=>$contextid, 'filearea'=>$filearea, 'itemid'=>$draftitemid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts absolute links in text and moves draft files.
|
||||
* @param int $draftitemid
|
||||
* @param string $text usually html text with embedded links to draft area
|
||||
* @param int $contextid
|
||||
* @param string $filearea
|
||||
* @param int $itemid
|
||||
* @param string $text usually html text with embedded links to draft area
|
||||
* @param boolean $https force https
|
||||
* @return string text with relative links starting with @@PLUGINFILE@@
|
||||
*/
|
||||
function file_convert_draftarea($text, $draftitemid, $contextid, $filearea, $itemid, $https=false) {
|
||||
function file_convert_draftarea($draftitemid, $contextid, $filearea, $itemid, $text=null, $https=false) {
|
||||
global $CFG, $USER;
|
||||
|
||||
/// move draft files first
|
||||
$usercontext = get_context_instance(CONTEXT_USER, $USER->id);
|
||||
|
||||
$fs = get_file_storage();
|
||||
if ($files = $fs->get_area_files($usercontext->id, 'user_draft', $draftitemid, 'id', 'false')) {
|
||||
$file_record = array('contextid'=>$contextid, 'filearea'=>$filearea, 'itemid'=>$itemid);
|
||||
foreach ($files as $file) {
|
||||
$fs->create_file_from_stored($file_record, $file);
|
||||
$file->delete();
|
||||
}
|
||||
}
|
||||
|
||||
if (is_null($text)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/// relink embedded files if text submitted - no absolute links allowed!
|
||||
|
||||
if ($CFG->slasharguments) {
|
||||
$draftbase = "$CFG->wwwroot/draftfile.php/user_draft/$draftitemid/";
|
||||
} else {
|
||||
@ -81,21 +122,8 @@ function file_convert_draftarea($text, $draftitemid, $contextid, $filearea, $ite
|
||||
$draftbase = str_replace('http://', 'https://', $draftbase);
|
||||
}
|
||||
|
||||
// replace absolute links
|
||||
$text = str_ireplace($draftbase, '@@PLUGINFILE@@/');
|
||||
|
||||
$usercontext = get_context_instance(CONTEXT_USER, $USER->id);
|
||||
|
||||
// move draft files
|
||||
$fs = get_file_storage();
|
||||
if ($files = $fs->get_area_files($usercontext->id, 'user_draft', $draftitemid, 'id', 'false')) {
|
||||
$file_record = array('contextid'=>$contextid, 'filearea'=>$filearea, 'itemid'=>$itemid);
|
||||
foreach ($files as $file) {
|
||||
$fs->create_file_from_stored($file_record, $file);
|
||||
$file->delete();
|
||||
}
|
||||
}
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
101
lib/form/areafiles.php
Normal file
101
lib/form/areafiles.php
Normal file
@ -0,0 +1,101 @@
|
||||
<?php // $Id$
|
||||
|
||||
require_once('HTML/QuickForm/element.php');
|
||||
|
||||
class MoodleQuickForm_areafiles extends HTML_QuickForm_element {
|
||||
var $_helpbutton = '';
|
||||
var $_areainfo = array();
|
||||
|
||||
function MoodleQuickForm_files($elementName=null, $elementLabel=null, $attributes=null) {
|
||||
parent::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
|
||||
}
|
||||
|
||||
function setName($name) {
|
||||
$this->updateAttributes(array('name'=>$name));
|
||||
}
|
||||
|
||||
function getName() {
|
||||
return $this->getAttribute('name');
|
||||
}
|
||||
|
||||
function setValue($value) {
|
||||
if (!is_array($value)) {
|
||||
$this->_areainfo = array();
|
||||
} else {
|
||||
$this->_areainfo = $value;
|
||||
}
|
||||
}
|
||||
|
||||
function getValue() {
|
||||
return $this->_areainfo;
|
||||
}
|
||||
|
||||
function setHelpButton($helpbuttonargs, $function='helpbutton') {
|
||||
if (!is_array($helpbuttonargs)) {
|
||||
$helpbuttonargs = array($helpbuttonargs);
|
||||
} else {
|
||||
$helpbuttonargs = $helpbuttonargs;
|
||||
}
|
||||
//we do this to to return html instead of printing it
|
||||
//without having to specify it in every call to make a button.
|
||||
if ('helpbutton' == $function){
|
||||
$defaultargs = array('', '', 'moodle', true, false, '', true);
|
||||
$helpbuttonargs = $helpbuttonargs + $defaultargs ;
|
||||
}
|
||||
$this->_helpbutton=call_user_func_array($function, $helpbuttonargs);
|
||||
}
|
||||
|
||||
function getHelpButton() {
|
||||
return $this->_helpbutton;
|
||||
}
|
||||
|
||||
function getElementTemplateType() {
|
||||
if ($this->_flagFrozen){
|
||||
return 'nodisplay';
|
||||
} else {
|
||||
return 'default';
|
||||
}
|
||||
}
|
||||
|
||||
function toHtml() {
|
||||
global $CFG;
|
||||
|
||||
if ($this->_flagFrozen) {
|
||||
return $this->getFrozenHtml();
|
||||
}
|
||||
|
||||
$id = $this->_attributes['id'];
|
||||
$elname = $this->_attributes['name'];
|
||||
|
||||
$value = $this->getValue();
|
||||
|
||||
if (empty($value['contextid'])) {
|
||||
// no existing area info provided - let's use fresh new draft area
|
||||
require_once("$CFG->libdir/filelib.php");
|
||||
$this->setValue(get_new_draftarea());
|
||||
$value = $this->getValue();
|
||||
}
|
||||
|
||||
$contextid = $value['contextid'];
|
||||
$filearea = $value['filearea'];
|
||||
$itemid = $value['itemid'];
|
||||
|
||||
$str = '<input type="hidden" name="'.$elname.'[contextid]" value="'.$contextid.'" />';
|
||||
$str .= '<input type="hidden" name="'.$elname.'[filearea]" value="'.$filearea.'" />';
|
||||
$str .= '<input type="hidden" name="'.$elname.'[itemid]" value="'.$itemid.'" />';
|
||||
|
||||
$url = "$CFG->wwwroot/files/areafiles.php?contextid=$contextid&filearea=$filearea&itemid=$itemid";
|
||||
|
||||
$str .= '<object type="text/html" data="'.$url.'" height="160" width="600" style="border:1px solid #000">Error</object>'; // TODO: localise, fix styles, etc.
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
function exportValue(&$submitValues, $assoc = false) {
|
||||
return array(
|
||||
$this->_attributes['name']['contexid'] => $submitValues[$this->_attributes['name']]['contextid'],
|
||||
$this->_attributes['name']['filearea'] => $submitValues[$this->_attributes['name']]['filearea'],
|
||||
$this->_attributes['name']['itemid'] => $submitValues[$this->_attributes['name']]['itemid'],
|
||||
);
|
||||
}
|
||||
}
|
@ -2063,6 +2063,7 @@ $GLOBALS['_HTML_QuickForm_default_renderer'] =& new MoodleQuickForm_Renderer();
|
||||
|
||||
MoodleQuickForm::registerElementType('checkbox', "$CFG->libdir/form/checkbox.php", 'MoodleQuickForm_checkbox');
|
||||
MoodleQuickForm::registerElementType('file', "$CFG->libdir/form/file.php", 'MoodleQuickForm_file');
|
||||
MoodleQuickForm::registerElementType('areafiles', "$CFG->libdir/form/areafiles.php", 'MoodleQuickForm_areafiles');
|
||||
MoodleQuickForm::registerElementType('filepicker', "$CFG->libdir/form/filepicker.php", 'MoodleQuickForm_filepicker');
|
||||
MoodleQuickForm::registerElementType('group', "$CFG->libdir/form/group.php", 'MoodleQuickForm_group');
|
||||
MoodleQuickForm::registerElementType('password', "$CFG->libdir/form/password.php", 'MoodleQuickForm_password');
|
||||
|
@ -738,7 +738,7 @@ function scorm_get_file_info($browser, $areas, $course, $cm, $context, $filearea
|
||||
return parent::get_visible_name();
|
||||
}
|
||||
}
|
||||
return new scorm_package_file_info($browser, $context, $storedfile, $urlbase, $areas[$filearea], true, true, false);
|
||||
return new scorm_package_file_info($browser, $context, $storedfile, $urlbase, $areas[$filearea], true, true, false, false);
|
||||
|
||||
} else if ($filearea === 'scorm_package') {
|
||||
$filepath = is_null($filepath) ? '/' : $filepath;
|
||||
|
Loading…
x
Reference in New Issue
Block a user