mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
Fixes related to presets and MDL-6755.
The original code was shocking once I started reviewing it, and even after heavy editing I'm still not happy with it, but at least it works more like it was supposed to. Needs more cleaning up to make it clearer and probably safer. Also, presets can now contain langage packs and they'll be used. The image gallery is an example.
This commit is contained in:
parent
44abaca047
commit
8303eb8447
9 changed files with 510 additions and 416 deletions
|
@ -198,7 +198,7 @@ $string['fieldmappings'] = 'Field Mappings';
|
||||||
$string['mappingwarning'] = 'All old fields not mapped to a new field will be lost and all data in that field will be removed.';
|
$string['mappingwarning'] = 'All old fields not mapped to a new field will be lost and all data in that field will be removed.';
|
||||||
$string['blank'] = 'Blank';
|
$string['blank'] = 'Blank';
|
||||||
|
|
||||||
$string['presetwarning'] = 'Saving as a preset publishes this template across the entire site. All users will be able to use it in their databases.';
|
$string['presetinfo'] = 'Saving as a preset will publish this template. Other users may be able to use it in their databases.';
|
||||||
$string['deletewarning'] = 'Are you sure you want to delete this preset?';
|
$string['deletewarning'] = 'Are you sure you want to delete this preset?';
|
||||||
$string['importsuccess'] = 'The preset has been successfully applied.';
|
$string['importsuccess'] = 'The preset has been successfully applied.';
|
||||||
$string['addentries'] = 'Add entries';
|
$string['addentries'] = 'Add entries';
|
||||||
|
|
|
@ -163,6 +163,34 @@ $mod_data_capabilities = array(
|
||||||
'coursecreator' => CAP_ALLOW,
|
'coursecreator' => CAP_ALLOW,
|
||||||
'admin' => CAP_ALLOW
|
'admin' => CAP_ALLOW
|
||||||
)
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
'mod/data:viewalluserpresets' => array(
|
||||||
|
|
||||||
|
'captype' => 'read',
|
||||||
|
'contextlevel' => CONTEXT_MODULE,
|
||||||
|
'legacy' => array(
|
||||||
|
'guest' => CAP_PREVENT,
|
||||||
|
'student' => CAP_PREVENT,
|
||||||
|
'teacher' => CAP_ALLOW,
|
||||||
|
'editingteacher' => CAP_ALLOW,
|
||||||
|
'coursecreator' => CAP_ALLOW,
|
||||||
|
'admin' => CAP_ALLOW
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
'mod/data:manageuserpresets' => array(
|
||||||
|
|
||||||
|
'captype' => 'write',
|
||||||
|
'contextlevel' => CONTEXT_MODULE,
|
||||||
|
'legacy' => array(
|
||||||
|
'guest' => CAP_PREVENT,
|
||||||
|
'student' => CAP_PREVENT,
|
||||||
|
'teacher' => CAP_PREVENT,
|
||||||
|
'editingteacher' => CAP_PREVENT,
|
||||||
|
'coursecreator' => CAP_PREVENT,
|
||||||
|
'admin' => CAP_ALLOW
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
|
@ -95,7 +95,8 @@
|
||||||
$strdata = get_string('modulenameplural','data');
|
$strdata = get_string('modulenameplural','data');
|
||||||
|
|
||||||
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
||||||
'', '', true, '', navmenu($course, $cm), '', '');
|
'', '', true, update_module_button($cm->id, $course->id, get_string('modulename', 'data')),
|
||||||
|
navmenu($course, $cm), '', '');
|
||||||
|
|
||||||
print_heading(format_string($data->name));
|
print_heading(format_string($data->name));
|
||||||
|
|
||||||
|
|
|
@ -181,7 +181,7 @@
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
data_fields_print_header($course,$cm,$data, false);
|
data_print_header($course,$cm,$data, false);
|
||||||
|
|
||||||
// Print confirmation message.
|
// Print confirmation message.
|
||||||
$field = data_get_field_from_id($fid, $data);
|
$field = data_get_field_from_id($fid, $data);
|
||||||
|
@ -232,14 +232,14 @@
|
||||||
|
|
||||||
if (($mode == 'new') && (!empty($newtype)) && confirm_sesskey()) { /// Adding a new field
|
if (($mode == 'new') && (!empty($newtype)) && confirm_sesskey()) { /// Adding a new field
|
||||||
$CFG->pagepath='mod/data/field/'.$newtype;
|
$CFG->pagepath='mod/data/field/'.$newtype;
|
||||||
data_fields_print_header($course,$cm,$data);
|
data_print_header($course,$cm,$data,'fields');
|
||||||
|
|
||||||
$field = data_get_field_new($newtype, $data);
|
$field = data_get_field_new($newtype, $data);
|
||||||
$field->display_edit_field();
|
$field->display_edit_field();
|
||||||
|
|
||||||
} else if ($mode == 'display' && confirm_sesskey()) { /// Display/edit existing field
|
} else if ($mode == 'display' && confirm_sesskey()) { /// Display/edit existing field
|
||||||
$CFG->pagepath='mod/data/field/'.$newtype;
|
$CFG->pagepath='mod/data/field/'.$newtype;
|
||||||
data_fields_print_header($course,$cm,$data);
|
data_print_header($course,$cm,$data,'fields');
|
||||||
|
|
||||||
$field = data_get_field_from_id($fid, $data);
|
$field = data_get_field_from_id($fid, $data);
|
||||||
$field->display_edit_field();
|
$field->display_edit_field();
|
||||||
|
@ -247,7 +247,7 @@
|
||||||
} else { /// Display the main listing of all fields
|
} else { /// Display the main listing of all fields
|
||||||
|
|
||||||
$CFG->pagepath='mod/data/field/'.$newtype;
|
$CFG->pagepath='mod/data/field/'.$newtype;
|
||||||
data_fields_print_header($course,$cm,$data);
|
data_print_header($course,$cm,$data,'fields');
|
||||||
|
|
||||||
|
|
||||||
if (!record_exists('data_fields','dataid',$data->id)) {
|
if (!record_exists('data_fields','dataid',$data->id)) {
|
||||||
|
|
134
mod/data/lib.php
134
mod/data/lib.php
|
@ -1260,34 +1260,6 @@ function data_get_cm($data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function data_fields_print_header($course,$cm,$data,$showtabs=true) {
|
|
||||||
|
|
||||||
global $CFG, $displaynoticegood, $displaynoticebad;
|
|
||||||
|
|
||||||
$strdata = get_string('modulenameplural','data');
|
|
||||||
|
|
||||||
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
|
||||||
'', '', true, '', navmenu($course, $cm));
|
|
||||||
|
|
||||||
print_heading(format_string($data->name));
|
|
||||||
|
|
||||||
/// Print the tabs
|
|
||||||
|
|
||||||
if ($showtabs) {
|
|
||||||
$currenttab = 'fields';
|
|
||||||
include_once('tabs.php');
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Print any notices
|
|
||||||
|
|
||||||
if (!empty($displaynoticegood)) {
|
|
||||||
notify($displaynoticegood, 'notifysuccess'); // good (usually green)
|
|
||||||
} else if (!empty($displaynoticebad)) {
|
|
||||||
notify($displaynoticebad); // bad (usuually red)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a database (module instance) to use the Roles System
|
* Converts a database (module instance) to use the Roles System
|
||||||
* @param $data - a data object with the same attributes as a record
|
* @param $data - a data object with the same attributes as a record
|
||||||
|
@ -1429,5 +1401,111 @@ function data_convert_to_roles($data, $teacherroles=array(), $studentroles=array
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns the best name to show for a preset
|
||||||
|
*/
|
||||||
|
function data_preset_name($shortname, $path) {
|
||||||
|
|
||||||
|
/// We are looking inside the preset itself as a first choice, but also in normal data directory
|
||||||
|
$string = get_string('presetname'.$shortname, 'data', NULL, $path.'/lang/');
|
||||||
|
|
||||||
|
if (substr($string, 0, 1) == '[') {
|
||||||
|
return $shortname;
|
||||||
|
} else {
|
||||||
|
return $string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns an array of all the available presets
|
||||||
|
*/
|
||||||
|
function data_get_available_presets($context) {
|
||||||
|
global $CFG, $USER;
|
||||||
|
|
||||||
|
$presets = array();
|
||||||
|
|
||||||
|
if ($dirs = get_list_of_plugins('mod/data/preset')) {
|
||||||
|
foreach ($dirs as $dir) {
|
||||||
|
$fulldir = $CFG->dirroot.'/mod/data/preset/'.$dir;
|
||||||
|
|
||||||
|
if (is_directory_a_preset($fulldir)) {
|
||||||
|
$preset = new object;
|
||||||
|
$preset->path = $fulldir;
|
||||||
|
$preset->userid = 0;
|
||||||
|
$preset->shortname = $dir;
|
||||||
|
$preset->name = data_preset_name($dir, $fulldir);
|
||||||
|
if (file_exists($fulldir.'/screenshot.jpg')) {
|
||||||
|
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$dir.'/screenshot.jpg';
|
||||||
|
} else if (file_exists($fulldir.'/screenshot.png')) {
|
||||||
|
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$dir.'/screenshot.png';
|
||||||
|
} else if (file_exists($fulldir.'/screenshot.gif')) {
|
||||||
|
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$dir.'/screenshot.gif';
|
||||||
|
}
|
||||||
|
$presets[] = $preset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($userids = get_list_of_plugins('data/preset', '', $CFG->dataroot)) {
|
||||||
|
foreach ($userids as $userid) {
|
||||||
|
$fulldir = $CFG->dataroot.'/data/preset/'.$userid;
|
||||||
|
|
||||||
|
if ($userid == 0 || $USER->id == $userid || has_capability('mod/data:viewalluserpresets', $context)) {
|
||||||
|
|
||||||
|
if ($dirs = get_list_of_plugins('data/preset/'.$userid, '', $CFG->dataroot)) {
|
||||||
|
foreach ($dirs as $dir) {
|
||||||
|
$fulldir = $CFG->dataroot.'/data/preset/'.$userid.'/'.$dir;
|
||||||
|
|
||||||
|
if (is_directory_a_preset($fulldir)) {
|
||||||
|
$preset = new object;
|
||||||
|
$preset->path = $fulldir;
|
||||||
|
$preset->userid = $userid;
|
||||||
|
$preset->shortname = $dir;
|
||||||
|
$preset->name = data_preset_name($dir, $fulldir);
|
||||||
|
if (file_exists($fulldir.'/screenshot.jpg')) {
|
||||||
|
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$dir.'/screenshot.jpg';
|
||||||
|
} else if (file_exists($fulldir.'/screenshot.png')) {
|
||||||
|
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$dir.'/screenshot.png';
|
||||||
|
} else if (file_exists($fulldir.'/screenshot.gif')) {
|
||||||
|
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$dir.'/screenshot.gif';
|
||||||
|
}
|
||||||
|
$presets[] = $preset;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $presets;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function data_print_header($course, $cm, $data, $currenttab='') {
|
||||||
|
|
||||||
|
global $CFG, $displaynoticegood, $displaynoticebad;
|
||||||
|
|
||||||
|
$strdata = get_string('modulenameplural','data');
|
||||||
|
|
||||||
|
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
||||||
|
'', '', true, update_module_button($cm->id, $course->id, get_string('modulename', 'data')),
|
||||||
|
navmenu($course, $cm));
|
||||||
|
|
||||||
|
print_heading(format_string($data->name));
|
||||||
|
|
||||||
|
/// Print the tabs
|
||||||
|
|
||||||
|
if ($currenttab) {
|
||||||
|
include_once('tabs.php');
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Print any notices
|
||||||
|
|
||||||
|
if (!empty($displaynoticegood)) {
|
||||||
|
notify($displaynoticegood, 'notifysuccess'); // good (usually green)
|
||||||
|
} else if (!empty($displaynoticebad)) {
|
||||||
|
notify($displaynoticebad); // bad (usuually red)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -14,7 +14,9 @@ require_once($CFG->libdir.'/xmlize.php');
|
||||||
$id = optional_param('id', 0, PARAM_INT); // course module id
|
$id = optional_param('id', 0, PARAM_INT); // course module id
|
||||||
$d = optional_param('d', 0, PARAM_INT); // database activity id
|
$d = optional_param('d', 0, PARAM_INT); // database activity id
|
||||||
$action = optional_param('action', 'base', PARAM_RAW); // current action
|
$action = optional_param('action', 'base', PARAM_RAW); // current action
|
||||||
$file = optional_param('file', false, PARAM_PATH); // path of file to upload
|
$userid = optional_param('userid', 0, PARAM_INT); // owner of the preset
|
||||||
|
$shortname = optional_param('shortname', '', PARAM_FILE); // directory the preset is in
|
||||||
|
$file = optional_param('file', '', PARAM_FILE); // uploaded file
|
||||||
|
|
||||||
if ($id) {
|
if ($id) {
|
||||||
if (! $cm = get_record('course_modules', 'id', $id)) {
|
if (! $cm = get_record('course_modules', 'id', $id)) {
|
||||||
|
@ -40,56 +42,16 @@ if ($id) {
|
||||||
error('Parameter missing');
|
error('Parameter missing');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$context = get_context_instance(CONTEXT_MODULE, $cm->id)) {
|
||||||
|
error('Could not find context');
|
||||||
|
}
|
||||||
|
|
||||||
require_login($course->id);
|
require_login($course->id);
|
||||||
|
|
||||||
require_capability('mod/data:managetemplates', get_context_instance(CONTEXT_MODULE, $cm->id));
|
require_capability('mod/data:managetemplates', $context);
|
||||||
|
|
||||||
/* get the list of standard presets found in /mod/data/preset */
|
if ($userid && ($userid != $USER->id) && !has_capability('mod/data:viewalluserpresets', $context)) {
|
||||||
$presets = array();
|
error('You are not allowed to access presets from other users');
|
||||||
|
|
||||||
|
|
||||||
if ($presetdir = opendir($CFG->dirroot.'/mod/data/preset')) {
|
|
||||||
|
|
||||||
while ($userdir = readdir($presetdir)) {
|
|
||||||
|
|
||||||
$fulluserdir = '/mod/data/preset/'.$userdir;
|
|
||||||
|
|
||||||
if ($userdir == '.' || $userdir == '..') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Global Standard Presets */
|
|
||||||
if (is_directory_a_preset($CFG->dirroot.$fulluserdir)) {
|
|
||||||
$preset = new StdClass;
|
|
||||||
$preset->path = $fulluserdir;
|
|
||||||
$preset->name = $userdir;
|
|
||||||
if (file_exists($fulluserdir.'/screenshot.jpg')) {
|
|
||||||
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$userdir.'/screenshot.jpg';
|
|
||||||
}
|
|
||||||
$presets[] = $preset;
|
|
||||||
unset($preset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* User made presets stored in user folders */
|
|
||||||
else if (get_record('user', 'id', $userdir)) {
|
|
||||||
$userdirh = opendir($CFG->dirroot.$fulluserdir);
|
|
||||||
while ($userpresetdir = readdir($userdirh)) {
|
|
||||||
$fulluserpresetdir = $fulluserdir.'/'.$userpresetdir;
|
|
||||||
if ($userpresetdir != '.' && $userpresetdir != '..' && is_directory_a_preset($CFG->dirroot.$fulluserpresetdir)) {
|
|
||||||
$preset = new StdClass;
|
|
||||||
$preset->path = $fulluserpresetdir;
|
|
||||||
$preset->name = $userpresetdir;
|
|
||||||
$preset->user = $userdir;
|
|
||||||
if (file_exists($fulluserpresetdir.'/screenshot.jpg')) {
|
|
||||||
$preset->screenshot = $CFG->wwwroot.'/mod/data/preset/'.$userdir.'/'.$userpresetdir.'/screenshot.jpg';
|
|
||||||
}
|
|
||||||
$presets[] = $preset;
|
|
||||||
unset($preset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir($presetdir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Need sesskey security check here for import instruction */
|
/* Need sesskey security check here for import instruction */
|
||||||
|
@ -97,106 +59,33 @@ $sesskey = sesskey();
|
||||||
|
|
||||||
/********************************************************************/
|
/********************************************************************/
|
||||||
/* Output */
|
/* Output */
|
||||||
data_presets_print_header($course, $cm, $data);
|
data_print_header($course, $cm, $data, 'presets');
|
||||||
|
|
||||||
echo "<center>";
|
echo '<center>';
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
/* Main selection menu - default mode also. */
|
|
||||||
default:
|
|
||||||
case 'base':
|
|
||||||
$strimport = get_string('import');
|
|
||||||
$strfromfile = get_string('fromfile', 'data');
|
|
||||||
$strchooseorupload = get_string('chooseorupload', 'data');
|
|
||||||
$strok = get_string('ok');
|
|
||||||
$strusestandard = get_string('usestandard', 'data');
|
|
||||||
$strchoose = get_string('choose');
|
|
||||||
$strexport = get_string('export', 'data');
|
|
||||||
$strexportaszip = get_string('exportaszip', 'data');
|
|
||||||
$strsaveaspreset = get_string('saveaspreset', 'data');
|
|
||||||
$strdelete = get_string('delete');
|
|
||||||
|
|
||||||
echo "<table cellpadding=7>";
|
|
||||||
echo "<tr><td><h3>$strimport</h3></td>";
|
|
||||||
echo "<td><form name='form' method='POST' action='?d=$data->id&action=importzip&sesskey=$sesskey' enctype='multipart/form-data'>";
|
|
||||||
helpbutton('importfromfile', '', 'data');
|
|
||||||
echo " $strfromfile:</td><td><input name=\"file\" size=\"20\" value=\"\" alt=\"file\" type=\"text\"><input name=\"coursefiles\" title=\"Choose or upload a file\" value=\"$strchooseorupload\" onclick=\"return openpopup('/files/index.php?id=2&choose=form.file', 'coursefiles', 'menubar=0,location=0,scrollbars,resizable,width=750,height=500', 0);\" type=\"button\">";
|
|
||||||
echo "<input type=\"submit\" value=\"$strok\"/>";
|
|
||||||
echo "</form></td></tr>";
|
|
||||||
|
|
||||||
echo "<tr valign=top><td></td><td>";
|
|
||||||
helpbutton('usepreset', '', 'data');
|
|
||||||
echo " $strusestandard: </td><td>";
|
|
||||||
echo "<table width=100%>";
|
|
||||||
foreach ($presets as $id => $preset) {
|
|
||||||
echo "<tr><form action='' method='POST'>";
|
|
||||||
echo "<input type='hidden' name='file' value=\"$preset->path\">";
|
|
||||||
echo "<input type='hidden' name='action' value='importpreset'>";
|
|
||||||
echo "<input type='hidden' name='d' value='$data->id'>";
|
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey'>";
|
|
||||||
echo "<td>";
|
|
||||||
if ($preset->screenshot) {
|
|
||||||
echo "<img src='$preset->screenshot' alt='$preset->screenshot' />";
|
|
||||||
}
|
|
||||||
echo "</td><td>$preset->name";
|
|
||||||
if ($preset->user) {
|
|
||||||
$user = get_record('user', 'id', $preset->user);
|
|
||||||
echo " by $user->firstname $user->lastname";
|
|
||||||
}
|
|
||||||
echo "</td><td><input type='submit' value='$strchoose'></td></form>";
|
|
||||||
echo "<td>";
|
|
||||||
if ($preset->user == $USER->id || has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM, SITEID))) {
|
|
||||||
echo "<form action='' method='POST'>";
|
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
|
||||||
echo "<input type='hidden' name='action' value='confirmdelete' />";
|
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
|
||||||
echo "<input type='hidden' name='deleteid' value='$id' />";
|
|
||||||
echo "<input type='hidden' name='deletename' value=\"$preset->name\" />";
|
|
||||||
echo "<input type='submit' value='$strdelete' /></form>";
|
|
||||||
}
|
|
||||||
echo "</td></tr>";
|
|
||||||
}
|
|
||||||
echo "</table></td></tr>";
|
|
||||||
|
|
||||||
echo "<tr><td valign=top><h3>$strexport</h3></td>";
|
|
||||||
echo "<td><form action='' method='POST'>";
|
|
||||||
helpbutton('exportzip', '', 'data');
|
|
||||||
echo " <input type='hidden' name='action' value='export' />";
|
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
|
||||||
echo "<input type='submit' value='$strexportaszip' />";
|
|
||||||
echo "</form>";
|
|
||||||
|
|
||||||
echo "<form action='' method='POST'>";
|
|
||||||
helpbutton('savepreset', '', 'data');
|
|
||||||
echo " <input type='hidden' name='action' value='save1' />";
|
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
|
||||||
echo "<input type='submit' value='$strsaveaspreset' />";
|
|
||||||
echo "</form>";
|
|
||||||
|
|
||||||
echo "</table>";
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************** Deleting *****************/
|
/***************** Deleting *****************/
|
||||||
case 'confirmdelete' :
|
case 'confirmdelete' :
|
||||||
if (!confirm_sesskey()) {
|
if (!confirm_sesskey()) {
|
||||||
error("Sesskey Invalid");
|
error("Sesskey Invalid");
|
||||||
}
|
}
|
||||||
|
$path = data_preset_path($course, $userid, $shortname);
|
||||||
|
|
||||||
$deletename = required_param('deletename', PARAM_RAW);
|
$strwarning = get_string('deletewarning', 'data').'<br />'.
|
||||||
$deleteid = required_param('deleteid', PARAM_INT);
|
data_preset_name($shortname, $path);
|
||||||
|
|
||||||
$strwarning = get_string('deletewarning', 'data');
|
$options = new object;
|
||||||
$strdelete = get_string('delete');
|
$options->shortname = $shortname;
|
||||||
notify($strwarning);
|
$options->userid = $userid;
|
||||||
echo "<form action='' method='POST'>";
|
$options->action = 'delete';
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
$options->d = $data->id;
|
||||||
echo "<input type='hidden' name='action' value='delete' />";
|
$options->sesskey = sesskey();
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
|
||||||
echo "<input type='hidden' name='deleteid' value='$deleteid' />";
|
$optionsno = new object;
|
||||||
echo "<input type='hidden' name='deletename' value=\"$deletename\" />";
|
$optionsno->d = $data->id;
|
||||||
echo "<input type='submit' value='$strdelete' /></form>";
|
notice_yesno($strwarning, 'preset.php', 'preset.php', $options, $optionsno, 'post', 'get');
|
||||||
|
print_footer($course);
|
||||||
|
exit;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'delete' :
|
case 'delete' :
|
||||||
|
@ -204,34 +93,30 @@ switch ($action) {
|
||||||
error('Sesskey Invalid');
|
error('Sesskey Invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
$deletename = required_param('deletename', PARAM_RAW);
|
$presetpath = data_preset_path($course, $userid, $shortname);
|
||||||
$deleteid = required_param('deleteid', PARAM_INT);
|
|
||||||
|
|
||||||
if (!empty($presets[$deleteid])) {
|
if (!clean_preset($presetpath)) {
|
||||||
if ($presets[$deleteid]->name == $deletename) {
|
error("Error deleting a preset!");
|
||||||
if (!clean_preset($CFG->dirroot.$presets[$deleteid]->path)) error("Error deleting");
|
|
||||||
}
|
|
||||||
rmdir($CFG->dirroot.$presets[$deleteid]->path);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
error('Invalid delete');
|
|
||||||
}
|
}
|
||||||
|
@rmdir($presetpath);
|
||||||
|
|
||||||
$strdelete = get_string('deleted', 'data');
|
$strdeleted = get_string('deleted', 'data');
|
||||||
notify("$deletename $strdeleted");
|
notify("$shortname $strdeleted");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***************** Importing *****************/
|
/***************** Importing *****************/
|
||||||
case 'importpreset' :
|
case 'importpreset' :
|
||||||
if (!confirm_sesskey()) {
|
if (!confirm_sesskey()) {
|
||||||
error("Sesskey Invalid");
|
error("Sesskey Invalid");
|
||||||
}
|
}
|
||||||
|
|
||||||
$pimporter = new PresetImporter($course, $cm, $data, $CFG->dirroot.$file);
|
$pimporter = new PresetImporter($course, $cm, $data, $userid, $shortname);
|
||||||
$pimporter->import_options();
|
$pimporter->import_options();
|
||||||
|
|
||||||
|
print_footer($course);
|
||||||
|
exit;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Imports a zip file. */
|
/* Imports a zip file. */
|
||||||
|
@ -244,15 +129,18 @@ switch ($action) {
|
||||||
error("Can't Create Directory");
|
error("Can't Create Directory");
|
||||||
}
|
}
|
||||||
|
|
||||||
$presetfile = $CFG->dataroot."/temp/data/".$USER->id;
|
$presetfile = $CFG->dataroot.'/temp/data/'.$USER->id;
|
||||||
clean_preset($presetfile);
|
clean_preset($presetfile);
|
||||||
|
|
||||||
if (!unzip_file($CFG->dataroot."/$course->id/$file",
|
if (!unzip_file($CFG->dataroot."/$course->id/$file", $presetfile, false)) {
|
||||||
$presetfile, false))
|
|
||||||
error("Can't unzip file");
|
error("Can't unzip file");
|
||||||
|
}
|
||||||
|
|
||||||
$pimporter = new PresetImporter($course, $cm, $data, $presetfile);
|
$pimporter = new PresetImporter($course, $cm, $data, -$USER->id, $shortname);
|
||||||
$pimporter->import_options();
|
$pimporter->import_options();
|
||||||
|
|
||||||
|
print_footer($course);
|
||||||
|
exit;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'finishimport':
|
case 'finishimport':
|
||||||
|
@ -260,7 +148,7 @@ switch ($action) {
|
||||||
error('Sesskey Invalid');
|
error('Sesskey Invalid');
|
||||||
}
|
}
|
||||||
|
|
||||||
$pimporter = new PresetImporter($course, $cm, $data, $file);
|
$pimporter = new PresetImporter($course, $cm, $data, $userid, $shortname);
|
||||||
$pimporter->import();
|
$pimporter->import();
|
||||||
|
|
||||||
$strimportsuccess = get_string('importsuccess', 'data');
|
$strimportsuccess = get_string('importsuccess', 'data');
|
||||||
|
@ -268,8 +156,7 @@ switch ($action) {
|
||||||
$strtodatabase = get_string('todatabase', 'data');
|
$strtodatabase = get_string('todatabase', 'data');
|
||||||
if (!get_records('data_records', 'dataid', $data->id)) {
|
if (!get_records('data_records', 'dataid', $data->id)) {
|
||||||
notify("$strimportsuccess <a href='edit.php?d=$data->id'>$straddentries</a> $strtodatabase", 'notifysuccess');
|
notify("$strimportsuccess <a href='edit.php?d=$data->id'>$straddentries</a> $strtodatabase", 'notifysuccess');
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
notify("$strimportsuccess", 'notifysuccess');
|
notify("$strimportsuccess", 'notifysuccess');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -297,16 +184,18 @@ switch ($action) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$strcontinue = get_string('continue');
|
$strcontinue = get_string('continue');
|
||||||
$strwarning = get_string('presetwarning', 'data');
|
$strwarning = get_string('presetinfo', 'data');
|
||||||
|
|
||||||
echo "<div align=center>";
|
echo "<div align=center>";
|
||||||
echo "<p>$strwarning</p>";
|
echo "<p>$strwarning</p>";
|
||||||
echo "<form action='' method='POST'>";
|
echo "<form action='preset.php' method='POST'>";
|
||||||
echo "Name: <input type='textbox' name='name' value=\"$data->name\" />";
|
echo "Name: <input type='textbox' name='name' value=\"$data->name\" />";
|
||||||
echo "<input type='hidden' name='action' value='save2' />";
|
echo "<input type='hidden' name='action' value='save2' />";
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
echo "<input type='hidden' name='d' value='$data->id' />";
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
||||||
echo "<input type='submit' value='$strcontinue' /></form></div>";
|
echo "<input type='submit' value='$strcontinue' /></form></div>";
|
||||||
|
print_footer($course);
|
||||||
|
exit;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'save2':
|
case 'save2':
|
||||||
|
@ -319,24 +208,26 @@ switch ($action) {
|
||||||
|
|
||||||
$name = optional_param('name', $data->name, PARAM_FILE);
|
$name = optional_param('name', $data->name, PARAM_FILE);
|
||||||
|
|
||||||
if (is_directory_a_preset("$CFG->dirroot/mod/data/preset/$USER->id/$name")) {
|
if (is_directory_a_preset("$CFG->dataroot/data/preset/$USER->id/$name")) {
|
||||||
notify("Preset already exists: Pick another name or overwrite");
|
notify("Preset already exists: Pick another name or overwrite");
|
||||||
|
|
||||||
echo "<div align=center>";
|
echo "<div align=center>";
|
||||||
echo "<form action='' method='POST'>";
|
echo "<form action='preset.php' method='POST'>";
|
||||||
echo "New name: <input type='textbox' name='name' value=\"$name\" />";
|
echo "New name: <input type='textbox' name='name' value=\"$name\" />";
|
||||||
echo "<input type='hidden' name='action' value='save2' />";
|
echo "<input type='hidden' name='action' value='save2' />";
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
echo "<input type='hidden' name='d' value='$data->id' />";
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
||||||
echo "<input type='submit' value='$strcontinue' /></form>";
|
echo "<input type='submit' value='$strcontinue' /></form>";
|
||||||
|
|
||||||
echo "<form action='' method='POST'>";
|
echo "<form action='preset.php' method='POST'>";
|
||||||
echo "<input type='hidden' name='name' value=\"$name\" />";
|
echo "<input type='hidden' name='name' value=\"$name\" />";
|
||||||
echo "<input type='hidden' name='action' value='save3' />";
|
echo "<input type='hidden' name='action' value='save3' />";
|
||||||
echo "<input type='hidden' name='d' value='$data->id' />";
|
echo "<input type='hidden' name='d' value='$data->id' />";
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
||||||
echo "<input type='submit' value='$stroverwrite' /></form>";
|
echo "<input type='submit' value='$stroverwrite' /></form>";
|
||||||
echo "</div>";
|
echo "</div>";
|
||||||
|
print_footer($course);
|
||||||
|
exit;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,26 +237,124 @@ switch ($action) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$name = optional_param('name', $data->name, PARAM_FILE);
|
$name = optional_param('name', $data->name, PARAM_FILE);
|
||||||
$presetdirectory = "$CFG->dirroot/mod/data/preset/$USER->id/$name";
|
$presetdirectory = "/data/preset/$USER->id/$name";
|
||||||
|
|
||||||
if (!is_dir($presetdirectory)) {
|
make_upload_directory($presetdirectory);
|
||||||
@mkdir("$CFG->dirroot/mod/data/preset/$USER->id");
|
clean_preset($CFG->dataroot.$presetdirectory);
|
||||||
mkdir($presetdirectory);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
clean_preset($presetdirectory);
|
|
||||||
}
|
|
||||||
|
|
||||||
$file = data_presets_export($course, $cm, $data);
|
$file = data_presets_export($course, $cm, $data);
|
||||||
if (!unzip_file($file, $presetdirectory, false)) error("Can't unzip to the preset directory");
|
if (!unzip_file($file, $CFG->dataroot.$presetdirectory, false)) {
|
||||||
|
error("Can't unzip to the preset directory");
|
||||||
|
}
|
||||||
notify(get_string('savesuccess', 'data'), 'notifysuccess');
|
notify(get_string('savesuccess', 'data'), 'notifysuccess');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
echo "</center>";
|
|
||||||
|
$presets = data_get_available_presets($context);
|
||||||
|
|
||||||
|
$strimport = get_string('import');
|
||||||
|
$strfromfile = get_string('fromfile', 'data');
|
||||||
|
$strchooseorupload = get_string('chooseorupload', 'data');
|
||||||
|
$strok = get_string('ok');
|
||||||
|
$strusestandard = get_string('usestandard', 'data');
|
||||||
|
$strchoose = get_string('choose');
|
||||||
|
$strexport = get_string('export', 'data');
|
||||||
|
$strexportaszip = get_string('exportaszip', 'data');
|
||||||
|
$strsaveaspreset = get_string('saveaspreset', 'data');
|
||||||
|
$strdelete = get_string('delete');
|
||||||
|
|
||||||
|
echo '<table class="presetcontrols">';
|
||||||
|
echo '<tr><td valign="top">';
|
||||||
|
echo '<h3>'.$strexport.'</h3>';
|
||||||
|
echo '</td><td colspan="2">';
|
||||||
|
|
||||||
|
echo '<table>';
|
||||||
|
echo '<tr><td>';
|
||||||
|
$options = new object;
|
||||||
|
$options->action = 'export';
|
||||||
|
$options->d = $data->id;
|
||||||
|
$options->sesskey = sesskey();
|
||||||
|
helpbutton('exportzip', '', 'data');
|
||||||
|
echo '</td><td>';
|
||||||
|
print_single_button('preset.php', $options, $strexportaszip, 'post');
|
||||||
|
|
||||||
|
echo '</td></tr><tr><td>';
|
||||||
|
$options = new object;
|
||||||
|
$options->action = 'save1';
|
||||||
|
$options->d = $data->id;
|
||||||
|
$options->sesskey = sesskey();
|
||||||
|
helpbutton('savepreset', '', 'data');
|
||||||
|
echo '</td><td>';
|
||||||
|
print_single_button('preset.php', $options, $strsaveaspreset, 'post');
|
||||||
|
echo '</td></tr></table>';
|
||||||
|
|
||||||
|
echo '</td></tr>';
|
||||||
|
|
||||||
|
echo '<tr><td valign="top">';
|
||||||
|
echo '<h3>'.$strimport.'</h3>';
|
||||||
|
echo '</td><td>';
|
||||||
|
helpbutton('importfromfile', '', 'data');
|
||||||
|
echo $strfromfile.':';
|
||||||
|
echo '</td><td>';
|
||||||
|
echo '<form name="uploadpreset" method="post" action="preset.php" enctype="multipart/form-data">';
|
||||||
|
echo '<input type="hidden" name="d" value="'.$data->id.'" />';
|
||||||
|
echo '<input type="hidden" name="action" value="importzip" />';
|
||||||
|
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||||
|
echo '<input name="file" size="20" value="" alt="file" type="text"><input name="coursefiles" title="Choose or upload a file" value="'.$strchooseorupload.'" onclick="return openpopup('."'/files/index.php?id=2&choose=uploadpreset.file', 'coursefiles', 'menubar=0,location=0,scrollbars,resizable,width=750,height=500', 0".');" type="button">';
|
||||||
|
echo '<input type="submit" value="'.$strok.'" />';
|
||||||
|
echo '</form>';
|
||||||
|
echo '</td></tr>';
|
||||||
|
|
||||||
|
echo '<tr><td>';
|
||||||
|
echo '</td><td valign="top">';
|
||||||
|
helpbutton('usepreset', '', 'data');
|
||||||
|
echo $strusestandard.':';
|
||||||
|
echo '</td><td>';
|
||||||
|
|
||||||
|
echo '<table class="presets">';
|
||||||
|
foreach ($presets as $id => $preset) {
|
||||||
|
echo '<tr>';
|
||||||
|
echo '<td>';
|
||||||
|
if (!empty($preset->screenshot)) {
|
||||||
|
echo '<img width="150" class="presetscreenshot" src="'.$preset->screenshot.'" />';
|
||||||
|
}
|
||||||
|
echo '</td><td>'.$preset->name;
|
||||||
|
if (!empty($preset->userid)) {
|
||||||
|
$user = get_record('user', 'id', $preset->userid);
|
||||||
|
echo ' ('.fullname($user, has_capability('moodle/site:viewfullnames', $context)).')';
|
||||||
|
}
|
||||||
|
echo '</td><td>';
|
||||||
|
$options = new object;
|
||||||
|
$options->shortname = $preset->shortname;
|
||||||
|
$options->userid = $preset->userid;
|
||||||
|
$options->action = 'importpreset';
|
||||||
|
$options->d = $data->id;
|
||||||
|
$options->sesskey = sesskey();
|
||||||
|
print_single_button('preset.php', $options, $strchoose, 'post');
|
||||||
|
echo '</td><td>';
|
||||||
|
if ($preset->userid > 0 &&
|
||||||
|
($preset->userid == $USER->id || has_capability('mod/data:manageuserpresets', $context))) {
|
||||||
|
$options = new object;
|
||||||
|
$options->shortname = $preset->shortname;
|
||||||
|
$options->userid = $preset->userid;
|
||||||
|
$options->action = 'confirmdelete';
|
||||||
|
$options->d = $data->id;
|
||||||
|
$options->sesskey = sesskey();
|
||||||
|
print_single_button('preset.php', $options, $strdelete, 'post');
|
||||||
|
}
|
||||||
|
echo '</td></tr>';
|
||||||
|
}
|
||||||
|
echo '</table>';
|
||||||
|
|
||||||
|
echo '</td></tr>';
|
||||||
|
echo '</table>';
|
||||||
|
|
||||||
print_footer($course);
|
print_footer($course);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function is_directory_a_preset($directory) {
|
function is_directory_a_preset($directory) {
|
||||||
$directory = rtrim($directory, '/\\') . '/';
|
$directory = rtrim($directory, '/\\') . '/';
|
||||||
if (file_exists($directory.'singletemplate.html') &&
|
if (file_exists($directory.'singletemplate.html') &&
|
||||||
|
@ -381,46 +370,22 @@ function is_directory_a_preset($directory) {
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function data_presets_print_header($course, $cm, $data, $showtabs=true) {
|
|
||||||
|
|
||||||
global $CFG, $displaynoticegood, $displaynoticebad;
|
|
||||||
|
|
||||||
$strdata = get_string('modulenameplural','data');
|
|
||||||
|
|
||||||
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
|
||||||
'', '', true, '', navmenu($course, $cm));
|
|
||||||
|
|
||||||
print_heading(format_string($data->name));
|
|
||||||
|
|
||||||
/// Print the tabs
|
|
||||||
|
|
||||||
if ($showtabs) {
|
|
||||||
$currenttab = 'presets';
|
|
||||||
include_once('tabs.php');
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Print any notices
|
|
||||||
|
|
||||||
if (!empty($displaynoticegood)) {
|
|
||||||
notify($displaynoticegood, 'notifysuccess'); // good (usually green)
|
|
||||||
} else if (!empty($displaynoticebad)) {
|
|
||||||
notify($displaynoticebad); // bad (usuually red)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function clean_preset($folder) {
|
function clean_preset($folder) {
|
||||||
if (unlink($folder.'/singletemplate.html') &&
|
if (@unlink($folder.'/singletemplate.html') &&
|
||||||
unlink($folder.'/listtemplate.html') &&
|
@unlink($folder.'/listtemplate.html') &&
|
||||||
unlink($folder.'/listtemplateheader.html') &&
|
@unlink($folder.'/listtemplateheader.html') &&
|
||||||
unlink($folder.'/listtemplatefooter.html') &&
|
@unlink($folder.'/listtemplatefooter.html') &&
|
||||||
unlink($folder.'/addtemplate.html') &&
|
@unlink($folder.'/addtemplate.html') &&
|
||||||
unlink($folder.'/rsstemplate.html') &&
|
@unlink($folder.'/rsstemplate.html') &&
|
||||||
unlink($folder.'/rsstitletemplate.html') &&
|
@unlink($folder.'/rsstitletemplate.html') &&
|
||||||
unlink($folder.'/csstemplate.css') &&
|
@unlink($folder.'/csstemplate.css') &&
|
||||||
unlink($folder.'/jstemplate.js') &&
|
@unlink($folder.'/jstemplate.js') &&
|
||||||
unlink($folder.'/preset.xml')) return true;
|
@unlink($folder.'/preset.xml')) {
|
||||||
else return false;
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -464,9 +429,9 @@ function data_presets_export($course, $cm, $data) {
|
||||||
$presetxml = "<preset>\n\n";
|
$presetxml = "<preset>\n\n";
|
||||||
|
|
||||||
/* Database settings first. Name not included? */
|
/* Database settings first. Name not included? */
|
||||||
$settingssaved = array('intro', 'comments', 'ratings', 'participants',
|
$settingssaved = array('intro', 'comments',
|
||||||
'requiredentries', 'requiredentriestoview', 'maxentries',
|
'requiredentries', 'requiredentriestoview', 'maxentries',
|
||||||
'rssarticles', 'approval', 'scale', 'assessed', 'assessedpublic',
|
'rssarticles', 'approval', 'scale', 'assessed',
|
||||||
'defaultsort', 'defaultsortdir', 'editany');
|
'defaultsort', 'defaultsortdir', 'editany');
|
||||||
|
|
||||||
$presetxml .= "<settings>\n";
|
$presetxml .= "<settings>\n";
|
||||||
|
@ -498,16 +463,16 @@ function data_presets_export($course, $cm, $data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$filelist = array(
|
$filelist = array(
|
||||||
"singletemplate.html",
|
'singletemplate.html',
|
||||||
"listtemplate.html",
|
'listtemplate.html',
|
||||||
"listtemplateheader.html",
|
'listtemplateheader.html',
|
||||||
"listtemplatefooter.html",
|
'listtemplatefooter.html',
|
||||||
"addtemplate.html",
|
'addtemplate.html',
|
||||||
"rsstemplate.html",
|
'rsstemplate.html',
|
||||||
"rsstitletemplate.html",
|
'rsstitletemplate.html',
|
||||||
"csstemplate.css",
|
'csstemplate.css',
|
||||||
"jstemplate.js",
|
'jstemplate.js',
|
||||||
"preset.xml");
|
'preset.xml');
|
||||||
|
|
||||||
foreach ($filelist as $key => $file) {
|
foreach ($filelist as $key => $file) {
|
||||||
$filelist[$key] = $tempfolder.'/'.$filelist[$key];
|
$filelist[$key] = $tempfolder.'/'.$filelist[$key];
|
||||||
|
@ -523,16 +488,16 @@ function data_presets_export($course, $cm, $data) {
|
||||||
|
|
||||||
|
|
||||||
class PresetImporter {
|
class PresetImporter {
|
||||||
function PresetImporter($course, $cm, $data, $folder) {
|
function PresetImporter($course, $cm, $data, $userid, $shortname) {
|
||||||
global $CFG;
|
global $CFG;
|
||||||
$this->course = $course;
|
$this->course = $course;
|
||||||
$this->cm = $cm;
|
$this->cm = $cm;
|
||||||
$this->data = $data;
|
$this->data = $data;
|
||||||
$this->folder = $folder;
|
$this->userid = $userid;
|
||||||
$this->postfolder = $folder;
|
$this->shortname = $shortname;
|
||||||
|
$this->folder = data_preset_path($course, $userid, $shortname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function get_settings() {
|
function get_settings() {
|
||||||
global $CFG;
|
global $CFG;
|
||||||
|
|
||||||
|
@ -601,11 +566,12 @@ class PresetImporter {
|
||||||
|
|
||||||
list($settings, $newfields, $currentfields) = $this->get_settings();
|
list($settings, $newfields, $currentfields) = $this->get_settings();
|
||||||
|
|
||||||
echo "<div align='center'><form action='' method='POST'>";
|
echo '<div align="center"><form action="preset.php" method="POST">';
|
||||||
echo "<input type='hidden' name='sesskey' value='$sesskey' />";
|
echo '<input type="hidden" name="action" value="finishimport" />';
|
||||||
echo "<input type='hidden' name='d' value='{$this->data->id}' />";
|
echo '<input type="hidden" name="sesskey" value="'.sesskey().'" />';
|
||||||
echo "<input type='hidden' name='action' value='finishimport' />";
|
echo '<input type="hidden" name="d" value="'.$this->data->id.'" />';
|
||||||
echo "<input type='hidden' name='file' value=\"$this->postfolder\" />";
|
echo '<input type="hidden" name="userid" value="'.$this->userid.'" />';
|
||||||
|
echo '<input type="hidden" name="shortname" value="'.$this->shortname.'" />';
|
||||||
|
|
||||||
if ($currentfields != array() && $newfields != array()) {
|
if ($currentfields != array() && $newfields != array()) {
|
||||||
echo "<h3>$strfieldmappings ";
|
echo "<h3>$strfieldmappings ";
|
||||||
|
@ -659,7 +625,6 @@ class PresetImporter {
|
||||||
|
|
||||||
if (array_key_exists($cid, $preservedfields)) error("Not an injective map");
|
if (array_key_exists($cid, $preservedfields)) error("Not an injective map");
|
||||||
else $preservedfields[$cid] = true;
|
else $preservedfields[$cid] = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($newfields as $nid => $newfield) {
|
foreach ($newfields as $nid => $newfield) {
|
||||||
|
@ -706,7 +671,6 @@ class PresetImporter {
|
||||||
}
|
}
|
||||||
delete_records('data_content', 'fieldid', $id);
|
delete_records('data_content', 'fieldid', $id);
|
||||||
delete_records('data_fields', 'id', $id);
|
delete_records('data_fields', 'id', $id);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -718,4 +682,22 @@ class PresetImporter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function data_preset_path($course, $userid, $shortname) {
|
||||||
|
global $USER, $CFG;
|
||||||
|
|
||||||
|
$context = get_context_instance(CONTEXT_COURSE, $course->id);
|
||||||
|
|
||||||
|
$userid = (int)$userid;
|
||||||
|
|
||||||
|
if ($userid > 0 && ($userid == $USER->id || has_capability('mod/data:viewalluserpresets', $context))) {
|
||||||
|
return $CFG->dataroot.'/data/preset/'.$userid.'/'.$shortname;
|
||||||
|
} else if ($userid == 0) {
|
||||||
|
return $CFG->dirroot.'/mod/data/preset/'.$shortname;
|
||||||
|
} else if ($userid < 0) {
|
||||||
|
return $CFG->dataroot.'/temp/data/'.-$userid.'/'.$shortname;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'Does it disturb you that this code will never run?';
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -13,3 +13,7 @@
|
||||||
.mod-data-field .fielddescription {
|
.mod-data-field .fielddescription {
|
||||||
width:300px;
|
width:300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.presetcontrols form {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
|
@ -78,7 +78,8 @@
|
||||||
$bodytag .= '" ';
|
$bodytag .= '" ';
|
||||||
|
|
||||||
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
print_header_simple($data->name, '', "<a href='index.php?id=$course->id'>$strdata</a> -> $data->name",
|
||||||
'', '', true, '', navmenu($course, $cm), '', $bodytag);
|
'', '', true, update_module_button($cm->id, $course->id, get_string('modulename', 'data')),
|
||||||
|
navmenu($course, $cm), '', $bodytag);
|
||||||
|
|
||||||
print_heading(format_string($data->name));
|
print_heading(format_string($data->name));
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
// This fragment is called by /admin/index.php
|
// This fragment is called by /admin/index.php
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
$module->version = 2006092302;
|
$module->version = 2006100200;
|
||||||
$module->requires = 2006080900; // Requires this Moodle version
|
$module->requires = 2006080900; // Requires this Moodle version
|
||||||
$module->cron = 60;
|
$module->cron = 60;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue