Permalink
Browse files

Merge branch 'MDL-33946_label_dndupload_text' of git://github.com/dav…

…osmith/moodle
  • Loading branch information...
2 parents 3d231ed + 2748d8e commit c65e7fcbc8f8fcc6a1842cfa3d2e169c76a32f49 @nebgor nebgor committed Mar 7, 2013
Showing with 41 additions and 14 deletions.
  1. +31 −8 course/dndupload.js
  2. +6 −2 course/dnduploadlib.php
  3. +2 −2 lang/en/moodle.php
  4. +2 −2 mod/label/lib.php
View
39 course/dndupload.js
@@ -798,6 +798,13 @@ M.course_dndupload = {
return;
}
+ if (type.handlers.length == 1 && type.handlers[0].noname) {
+ // Only one handler and it doesn't need a name (i.e. a label).
+ this.upload_item('', type.type, contents, section, sectionnumber, type.handlers[0].module);
+ this.check_upload_queue();
+ return;
+ }
+
if (this.uploaddialog) {
var details = new Object();
details.isfile = false;
@@ -814,21 +821,22 @@ M.course_dndupload = {
var uploadid = Math.round(Math.random()*100000)+'-'+timestamp;
var nameid = 'dndupload_handler_name'+uploadid;
var content = '';
- content += '<label for="'+nameid+'">'+type.namemessage+'</label>';
- content += ' <input type="text" id="'+nameid+'" value="" />';
if (type.handlers.length > 1) {
content += '<div id="dndupload_handlers'+uploadid+'">';
var sel = type.handlers[0].module;
for (var i=0; i<type.handlers.length; i++) {
- var id = 'dndupload_handler'+uploadid;
+ var id = 'dndupload_handler'+uploadid+type.handlers[i].module;
var checked = (type.handlers[i].module == sel) ? 'checked="checked" ' : '';
- content += '<input type="radio" name="handler" value="'+type.handlers[i].module+'" id="'+id+'" '+checked+'/>';
+ content += '<input type="radio" name="handler" value="'+i+'" id="'+id+'" '+checked+'/>';
content += ' <label for="'+id+'">';
content += type.handlers[i].message;
content += '</label><br/>';
}
content += '</div>';
}
+ var disabled = (type.handlers[0].noname) ? ' disabled = "disabled" ' : '';
+ content += '<label for="'+nameid+'">'+type.namemessage+'</label>';
+ content += ' <input type="text" id="'+nameid+'" value="" '+disabled+' />';
var Y = this.Y;
var self = this;
@@ -846,23 +854,27 @@ M.course_dndupload = {
e.preventDefault();
var name = Y.one('#dndupload_handler_name'+uploadid).get('value');
name = name.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); // Trim
- if (name == '') {
- return;
- }
var module = false;
+ var noname = false;
if (type.handlers.length > 1) {
// Find out which module was selected
var div = Y.one('#dndupload_handlers'+uploadid);
div.all('input').each(function(input) {
if (input.get('checked')) {
- module = input.get('value');
+ var idx = input.get('value');
+ module = type.handlers[idx].module;
+ noname = type.handlers[idx].noname;
}
});
if (!module) {
return;
}
} else {
module = type.handlers[0].module;
+ noname = type.handlers[0].noname;
+ }
+ if (name == '' && !noname) {
+ return;
}
panel.hide();
// Do the upload
@@ -887,6 +899,17 @@ M.course_dndupload = {
});
// Focus on the 'name' box
Y.one('#'+nameid).focus();
+ for (i=0; i<type.handlers.length; i++) {
+ if (type.handlers[i].noname) {
+ Y.one('#dndupload_handler'+uploadid+type.handlers[i].module).on('click', function (e) {
+ Y.one('#'+nameid).set('disabled', 'disabled');
+ });
+ } else {
+ Y.one('#dndupload_handler'+uploadid+type.handlers[i].module).on('click', function (e) {
+ Y.one('#'+nameid).removeAttribute('disabled');
+ });
+ }
+ }
},
/**
View
8 course/dnduploadlib.php
@@ -151,7 +151,8 @@ public function __construct($course, $modnames = null) {
}
if (isset($resp['types'])) {
foreach ($resp['types'] as $type) {
- $this->add_type_handler($type['identifier'], $modname, $type['message']);
+ $noname = !empty($type['noname']);
+ $this->add_type_handler($type['identifier'], $modname, $type['message'], $noname);
}
}
}
@@ -195,8 +196,10 @@ public function add_type($identifier, $datatransfertypes, $addmessage, $namemess
* @param string $module The name of the module to handle this type
* @param string $message The message to show the user if more than one handler is registered
* for a type and the user needs to make a choice between them
+ * @param bool $noname If true, the 'name' dialog should be disabled in the pop-up.
+ * @throws coding_exception
*/
- public function add_type_handler($type, $module, $message) {
+ public function add_type_handler($type, $module, $message, $noname) {
if (!$this->is_known_type($type)) {
throw new coding_exception("Trying to add handler for unknown type $type");
}
@@ -205,6 +208,7 @@ public function add_type_handler($type, $module, $message) {
$add->type = $type;
$add->module = $module;
$add->message = $message;
+ $add->noname = $noname ? 1 : 0;
$this->types[$type]->handlers[] = $add;
}
View
4 lang/en/moodle.php
@@ -65,7 +65,7 @@
$string['addnewcourse'] = 'Add a new course';
$string['addnewuser'] = 'Add a new user';
$string['addnousersrecip'] = 'Add users who haven\'t accessed this {$a} to recipient list';
-$string['addpagehere'] = 'Add page here';
+$string['addpagehere'] = 'Add text here';
$string['addresource'] = 'Add a resource...';
$string['addresourceoractivity'] = 'Add an activity or resource';
$string['addresourcetosection'] = 'Add a resource to section \'{$a}\'';
@@ -1097,7 +1097,7 @@
$string['myprofile'] = 'My profile';
$string['name'] = 'Name';
$string['nameforlink'] = 'What do you want to call this link?';
-$string['nameforpage'] = 'What do you want to call this page?';
+$string['nameforpage'] = 'What do you want to call this text?';
$string['navigation'] = 'Navigation';
$string['needed'] = 'Needed';
$string['never'] = 'Never';
View
4 mod/label/lib.php
@@ -222,8 +222,8 @@ function label_dndupload_register() {
$strdndtext = get_string('dnduploadlabeltext', 'mod_label');
return array_merge($ret, array('types' => array(
- array('identifier' => 'text/html', 'message' => $strdndtext),
- array('identifier' => 'text', 'message' => $strdndtext)
+ array('identifier' => 'text/html', 'message' => $strdndtext, 'noname' => true),
+ array('identifier' => 'text', 'message' => $strdndtext, 'noname' => true)
)));
}

0 comments on commit c65e7fc

Please sign in to comment.