Skip to content

Commit

Permalink
add default values for metadata fields, fixes #163
Browse files Browse the repository at this point in the history
  • Loading branch information
ferishili committed Feb 7, 2022
1 parent 2ca7332 commit 2a48304
Show file tree
Hide file tree
Showing 24 changed files with 576 additions and 32 deletions.
10 changes: 8 additions & 2 deletions addvideo.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

use block_opencast\local\upload_helper;

global $PAGE, $OUTPUT, $CFG;
global $PAGE, $OUTPUT, $CFG, $USER;

require_once($CFG->dirroot . '/repository/lib.php');

Expand Down Expand Up @@ -55,8 +55,14 @@

$metadatacatalog = upload_helper::get_opencast_metadata_catalog($ocinstanceid);

$userdefaultsrecord = $DB->get_record('block_opencast_user_default', ['userid' => $USER->id]);
$userdefaults = $userdefaultsrecord ? json_decode($userdefaultsrecord->defaults, true) : [];
$usereventdefaults = (!empty($userdefaults['event'])) ? $userdefaults['event'] : [];

$addvideoform = new \block_opencast\local\addvideo_form(null,
array('courseid' => $courseid, 'metadata_catalog' => $metadatacatalog, 'ocinstanceid' => $ocinstanceid));
array('courseid' => $courseid, 'metadata_catalog' => $metadatacatalog,
'eventdefaults' => $usereventdefaults, 'ocinstanceid' => $ocinstanceid)
);

if ($addvideoform->is_cancelled()) {
redirect($redirecturl);
Expand Down
2 changes: 1 addition & 1 deletion amd/build/block_form_handler.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion amd/build/block_form_handler.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion amd/build/block_manage_series.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion amd/build/block_manage_series.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion amd/build/block_settings.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion amd/build/block_settings.min.js.map

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions amd/src/block_form_handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,30 @@ define(['jquery'], function ($) {
});
}

/**
* Sets default title if it is empty.
*
*/
function setDefautlTitle(filename) {
var title = $('input[name="title"]').val();
if (!title && filename) {
$('input[name="title"]').val(filename);
}
}

/**
* Extracts the filename from filelist.
*
*/
function getFilenameFromFilelist(filelist) {
var filename = '';
if (filelist.length) {
var filelinks = filelist.find('.filepicker-filename > a');
filename = filelinks.length ? $(filelinks[0]).text() : '';
}
return filename;
}

/**
* Initialise all of the modules for the opencast block.
*
Expand All @@ -68,6 +92,24 @@ define(['jquery'], function ($) {
e.preventDefault();
});

// Chunkupload.
$('.local_chunkupload input[type="file"]').on('change', function (e) {
setTimeout(function () {
var span = $(e.currentTarget).siblings('label.chunkupload-label').find('.chunkupload-filename');
if (span.length) {
setDefautlTitle($(span[0]).text());
}
}, 500);
});

$('.filepickerhidden').on('change', function (e) {
setTimeout(function () {
var filelist = $(e.currentTarget).parent().find('.filepicker-filelist');
var filename = getFilenameFromFilelist(filelist);
setDefautlTitle(filename);
}, 500);
});

$('.filepicker-filelist').on('drop', function (e) {
var filelist = e.currentTarget;
var video_identifier = $(filelist).parent().siblings('.filepickerhidden').attr('name');
Expand All @@ -94,6 +136,10 @@ define(['jquery'], function ($) {
}, 500);
}

setTimeout(function () {
var filename = getFilenameFromFilelist(filelist);
setDefautlTitle(filename);
}, 500);
});

// Ensures that autocomplete fields are loaded properly after 1 sec!
Expand Down
7 changes: 6 additions & 1 deletion amd/src/block_manage_series.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ function loadSeriesTitles(contextid, ocinstanceid, series, seriestable, row) {
}]);
}

export const init = (contextid, ocinstanceid) => {
export const init = (contextid, ocinstanceid, createseries) => {

// Load strings
var strings = [
Expand Down Expand Up @@ -429,6 +429,11 @@ export const init = (contextid, ocinstanceid) => {
modal.show();
});
});

// Perform click on createseries
if (createseries) {
$('#createseries').trigger('click');
}
});
};

39 changes: 37 additions & 2 deletions amd/src/block_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export const init = (rolesinputid, metadatainputid, metadataseriesinputid, ocins
{key: 'heading_required', component: 'block_opencast'},
{key: 'heading_readonly', component: 'block_opencast'},
{key: 'heading_params', component: 'block_opencast'},
{key: 'heading_defaultable', component: 'block_opencast'},
{key: 'delete', component: 'moodle'}
];
str.get_strings(strings).then(function (jsstrings) {
Expand Down Expand Up @@ -216,6 +217,23 @@ export const init = (rolesinputid, metadatainputid, metadataseriesinputid, ocins
widthGrow: 2,
headerSort: false
},
{
title: jsstrings[13] + ' ' + $('#helpbtndefaultable_' + ocinstanceid).html(),
field: "defaultable", hozAlign: "center", widthGrow: 0, headerSort: false, formatter:
function (cell) {
if (cell.getRow().getCell("name").getValue() == 'title') {
return;
}
var input = document.createElement('input');
input.type = 'checkbox';
input.checked = cell.getValue();
input.addEventListener('click', function () {
cell.getRow().update({'defaultable': $(this).prop('checked') ? 1 : 0});
});

return input;
}
},
{
title: "", width: 40, headerSort: false, hozAlign: "center", formatter:
function () {
Expand All @@ -228,7 +246,7 @@ export const init = (rolesinputid, metadatainputid, metadataseriesinputid, ocins
body: jsstrings[6]
})
.then(function (modal) {
modal.setSaveButtonText(jsstrings[12]);
modal.setSaveButtonText(jsstrings[14]);
modal.getRoot().on(ModalEvents.save, function () {
cell.getRow().delete();
});
Expand Down Expand Up @@ -322,6 +340,23 @@ export const init = (rolesinputid, metadatainputid, metadataseriesinputid, ocins
widthGrow: 2,
headerSort: false
},
{
title: jsstrings[13] + ' ' + $('#helpbtndefaultable_' + ocinstanceid).html(),
field: "defaultable", hozAlign: "center", widthGrow: 0, headerSort: false, formatter:
function (cell) {
if (cell.getRow().getCell("name").getValue() == 'title') {
return;
}
var input = document.createElement('input');
input.type = 'checkbox';
input.checked = cell.getValue();
input.addEventListener('click', function () {
cell.getRow().update({'defaultable': $(this).prop('checked') ? 1 : 0});
});

return input;
}
},
{
title: "", width: 40, headerSort: false, hozAlign: "center", formatter:
function () {
Expand All @@ -334,7 +369,7 @@ export const init = (rolesinputid, metadatainputid, metadataseriesinputid, ocins
body: jsstrings[6]
})
.then(function (modal) {
modal.setSaveButtonText(jsstrings[12]);
modal.setSaveButtonText(jsstrings[14]);
modal.getRoot().on(ModalEvents.save, function () {
cell.getRow().delete();
});
Expand Down
15 changes: 14 additions & 1 deletion classes/local/addvideo_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public function definition() {
$renderer = $PAGE->get_renderer('block_opencast');
$ocinstanceid = $this->_customdata['ocinstanceid'];
$apibridge = apibridge::get_instance($ocinstanceid);
$eventdefaults = $this->_customdata['eventdefaults'];

$usechunkupload = class_exists('\local_chunkupload\chunkupload_form_element')
&& get_config('block_opencast', 'enablechunkupload_' . $ocinstanceid);
Expand All @@ -69,8 +70,16 @@ public function definition() {
$mform->addElement('header', 'metadata', get_string('metadata', 'block_opencast'));
$mform->setExpanded('metadata', true);

$managedefaultsurl = new \moodle_url('/blocks/opencast/managedefaults.php',
array(
'courseid' => $this->_customdata['courseid'],
'ocinstanceid' => $ocinstanceid,
'redirectto' => 'addvideo'
));
$managedefaultslink = \html_writer::link($managedefaultsurl, get_string('managedefaultsforuser', 'block_opencast'));
$managedefaultsexplation = \html_writer::tag('p', get_string('managedefaultredirectlinkwithexp', 'block_opencast') . $managedefaultslink);
$explanation = \html_writer::tag('p', get_string('metadataexplanation', 'block_opencast'));
$mform->addElement('html', $explanation);
$mform->addElement('html', $explanation . $managedefaultsexplation);

$seriesrecords = $DB->get_records('tool_opencast_series',
array('courseid' => $this->_customdata['courseid'], 'ocinstanceid' => $ocinstanceid));
Expand Down Expand Up @@ -151,6 +160,10 @@ public function definition() {
}
}
$mform->setAdvanced($field->name, !$field->required);
$default = (isset($eventdefaults[$field->name]) ? $eventdefaults[$field->name] : null);
if ($default) {
$mform->setDefault($field->name, $default);
}
}
if ($settitle) {
$mform->addElement('text', 'title', get_string('title', 'block_opencast'));
Expand Down

0 comments on commit 2a48304

Please sign in to comment.