Merge branch 'MDL-33483_m33v2' of https://github.com/sbourget/moodle

This commit is contained in:
Andrew Nicols
2017-02-27 10:40:21 +08:00
5 changed files with 107 additions and 8 deletions
+10
View File
@@ -38,5 +38,15 @@ function xmldb_repository_googledocs_upgrade($oldversion) {
// Automatically generated Moodle v3.2.0 release upgrade line.
// Put any upgrade step following this.
if ($oldversion < 2017011100) {
// Set default import formats from Google.
set_config('documentformat', 'rtf', 'googledocs');
set_config('drawingformat', 'pdf', 'googledocs');
set_config('presentationformat', 'pptx', 'googledocs');
set_config('spreadsheetformat', 'xlsx', 'googledocs');
// Plugin savepoint reached.
upgrade_plugin_savepoint(true, 2017011100, 'repository', 'googledocs');
}
return true;
}
@@ -24,8 +24,13 @@
$string['clientid'] = 'Client ID';
$string['configplugin'] = 'Configure Google Drive plugin';
$string['docsformat'] = 'Default document import format';
$string['drawingformat'] = 'Default drawing import format';
$string['googledocs:view'] = 'View Google Drive repository';
$string['importformat'] = 'Configure the default import formats from google';
$string['oauthinfo'] = '<p>To use this plugin, you must register your site with Google, as described in the documentation <a href="{$a->docsurl}">Google OAuth 2.0 setup</a>.</p><p>As part of the registration process, you will need to enter the following URL as \'Authorized Redirect URIs\':</p><p>{$a->callbackurl}</p><p>Once registered, you will be provided with a client ID and secret which can be used to configure all Google Drive and Picasa plugins.</p><p>Please also note that you will have to enable the service \'Drive API\'.</p>';
$string['pluginname'] = 'Google Drive';
$string['presentationformat'] = 'Default presentation import format';
$string['secret'] = 'Secret';
$string['servicenotenabled'] = 'Access not configured. Make sure the service \'Drive API\' is enabled.';
$string['spreadsheetformat'] = 'Default spreadsheet import format';
+79 -7
View File
@@ -306,6 +306,7 @@ class repository_googledocs extends repository {
$folders = array();
$fields = "items(id,title,mimeType,downloadUrl,fileExtension,exportLinks,modifiedDate,fileSize,thumbnailLink)";
$params = array('q' => $q, 'fields' => $fields);
$config = get_config('googledocs');
try {
// Retrieving files and folders.
@@ -344,18 +345,35 @@ class repository_googledocs extends repository {
$type = str_replace('application/vnd.google-apps.', '', $item['mimeType']);
$title = '';
$exportType = '';
$types = get_mimetypes_array();
switch ($type){
case 'document':
$title = $item['title'] . '.rtf';
$exportType = 'application/rtf';
$ext = $config->documentformat;
$title = $item['title'] . '.'. $ext;
if ($ext === 'rtf') {
// Moodle user 'text/rtf' as the MIME type for RTF files.
// Google uses 'application/rtf' for the same type of file.
// See https://developers.google.com/drive/v3/web/manage-downloads.
$exportType = 'application/rtf';
} else {
$exportType = $types[$ext]['type'];
}
break;
case 'presentation':
$title = $item['title'] . '.pptx';
$exportType = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
$ext = $config->presentationformat;
$title = $item['title'] . '.'. $ext;
$exportType = $types[$ext]['type'];
break;
case 'spreadsheet':
$title = $item['title'] . '.xlsx';
$exportType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
$ext = $config->spreadsheetformat;
$title = $item['title'] . '.'. $ext;
$exportType = $types[$ext]['type'];
break;
case 'drawing':
$ext = $config->drawingformat;
$title = $item['title'] . '.'. $ext;
$exportType = $types[$ext]['type'];
break;
}
// Skips invalid/unknown types.
@@ -472,7 +490,9 @@ class repository_googledocs extends repository {
* @return array
*/
public static function get_type_option_names() {
return array('clientid', 'secret', 'pluginname');
return array('clientid', 'secret', 'pluginname',
'documentformat', 'drawingformat',
'presentationformat', 'spreadsheetformat');
}
/**
@@ -500,6 +520,58 @@ class repository_googledocs extends repository {
$strrequired = get_string('required');
$mform->addRule('clientid', $strrequired, 'required', null, 'client');
$mform->addRule('secret', $strrequired, 'required', null, 'client');
$mform->addElement('static', null, '', get_string('importformat', 'repository_googledocs', $a));
// Documents.
$docsformat = array();
$docsformat['html'] = 'html';
$docsformat['docx'] = 'docx';
$docsformat['odt'] = 'odt';
$docsformat['pdf'] = 'pdf';
$docsformat['rtf'] = 'rtf';
$docsformat['txt'] = 'txt';
core_collator::ksort($docsformat, core_collator::SORT_NATURAL);
$mform->addElement('select', 'documentformat', get_string('docsformat', 'repository_googledocs'), $docsformat);
$mform->setDefault('documentformat', $docsformat['rtf']);
$mform->setType('documentformat', PARAM_ALPHANUM);
// Drawing.
$drawingformat = array();
$drawingformat['jpeg'] = 'jpeg';
$drawingformat['png'] = 'png';
$drawingformat['svg'] = 'svg';
$drawingformat['pdf'] = 'pdf';
core_collator::ksort($drawingformat, core_collator::SORT_NATURAL);
$mform->addElement('select', 'drawingformat', get_string('drawingformat', 'repository_googledocs'), $drawingformat);
$mform->setDefault('drawingformat', $drawingformat['pdf']);
$mform->setType('drawingformat', PARAM_ALPHANUM);
// Presentation.
$presentationformat = array();
$presentationformat['pdf'] = 'pdf';
$presentationformat['pptx'] = 'pptx';
$presentationformat['txt'] = 'txt';
core_collator::ksort($presentationformat, core_collator::SORT_NATURAL);
$mform->addElement('select', 'presentationformat', get_string('presentationformat', 'repository_googledocs'), $presentationformat);
$mform->setDefault('presentationformat', $presentationformat['pptx']);
$mform->setType('presentationformat', PARAM_ALPHANUM);
// Spreadsheet.
$spreadsheetformat = array();
$spreadsheetformat['csv'] = 'csv';
$spreadsheetformat['ods'] = 'ods';
$spreadsheetformat['pdf'] = 'pdf';
$spreadsheetformat['xlsx'] = 'xlsx';
core_collator::ksort($spreadsheetformat, core_collator::SORT_NATURAL);
$mform->addElement('select', 'spreadsheetformat', get_string('spreadsheetformat', 'repository_googledocs'), $spreadsheetformat);
$mform->setDefault('spreadsheetformat', $spreadsheetformat['xlsx']);
$mform->setType('spreadsheetformat', PARAM_ALPHANUM);
}
}
// Icon from: http://www.iconspedia.com/icon/google-2706.html.
@@ -47,6 +47,18 @@ class repository_googledocs_generator extends testing_repository_generator {
if (!isset($record['secret'])) {
$record['secret'] = 'secret';
}
if (!isset($record['documentformat'])) {
$record['documentformat'] = 'pdf';
}
if (!isset($record['presentationformat'])) {
$record['presentationformat'] = 'pdf';
}
if (!isset($record['drawingformat'])) {
$record['drawingformat'] = 'pdf';
}
if (!isset($record['spreadsheetformat'])) {
$record['spreadsheetformat'] = 'pdf';
}
return $record;
}
+1 -1
View File
@@ -25,6 +25,6 @@
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2016120500; // The current plugin version (Date: YYYYMMDDXX).
$plugin->version = 2017011100; // The current plugin version (Date: YYYYMMDDXX).
$plugin->requires = 2016112900; // Requires this Moodle version.
$plugin->component = 'repository_googledocs'; // Full name of the plugin (used for diagnostics).