diff --git a/js/client-teambuilder.js b/js/client-teambuilder.js index 5b73f4cf4..8dfe2fb1e 100644 --- a/js/client-teambuilder.js +++ b/js/client-teambuilder.js @@ -290,7 +290,7 @@ var target = e.currentTarget; var dataTransfer = e.originalEvent.dataTransfer; - dataTransfer.effectAllowed = 'move'; + dataTransfer.effectAllowed = 'copyMove'; dataTransfer.setData("text/plain", "Team " + e.currentTarget.dataset.value); @@ -395,8 +395,7 @@ // Drag originated outside teambuilder if (!e.originalEvent.dataTransfer) return; if (!e.originalEvent.dataTransfer.files) return; - if (!e.originalEvent.dataTransfer.files[0]) return; - if (e.originalEvent.dataTransfer.files[0].name.slice(-4) !== '.txt') return; + if (e.originalEvent.dataTransfer.files[0] && e.originalEvent.dataTransfer.files[0].name.slice(-4) !== '.txt') return; // We're dragging a .txt file! It might be a team! this.$('.teamlist').append('
  • '); app.dragging = this.$('.dragging .team')[0]; @@ -408,6 +407,13 @@ defaultDropTeam: function (e) { if (e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files[0]) { var file = e.originalEvent.dataTransfer.files[0]; + var name = file.name; + if (name.slice(-4) !== '.txt') { + app.dragging = null; + this.updateTeamList(); + app.addPopupMessage("Your file is not a valid team. Team files are .txt files."); + return; + } var reader = new FileReader(); var self = this; reader.onload = function(e) { @@ -415,12 +421,12 @@ try { team = Storage.packTeam(Storage.importTeam(e.target.result)); } catch (err) { - alert("Not a valid team."); + app.addPopupMessage("Your file is not a valid team."); self.updateTeamList(); return; } var name = file.name; - if (name.substr(name.length-4).toLowerCase() === '.txt') { + if (name.slice(name.length-4).toLowerCase() === '.txt') { name = name.substr(0, name.length-4); } var format = ''; diff --git a/js/client.js b/js/client.js index 0884943b5..5e2ff04f9 100644 --- a/js/client.js +++ b/js/client.js @@ -30,10 +30,16 @@ $(document).on('dragenter', function (e) { e.preventDefault(); - if (!app.dragging && e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files[0]) { - var file = e.originalEvent.dataTransfer.files[0]; - if (file.name.slice(-4) === '.txt' && app.curRoom.id === 'teambuilder') { - // Someone dragged in a .txt file, hand it to the teambuilder + if (!app.dragging && app.curRoom.id === 'teambuilder') { + if (e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files[0]) { + var file = e.originalEvent.dataTransfer.files[0]; + if (file.name.slice(-4) === '.txt') { + // Someone dragged in a .txt file, hand it to the teambuilder + app.curRoom.defaultDragEnterTeam(e); + } + } else { + // security doesn't let us read the filename :( + // we'll just have to assume it's a team app.curRoom.defaultDragEnterTeam(e); } } @@ -55,6 +61,7 @@ if (file.name.slice(-4) === '.txt' && app.curRoom.id === 'teambuilder') { // Someone dragged in a .txt file, hand it to the teambuilder app.curRoom.defaultDragEnterTeam(e); + app.curRoom.defaultDropTeam(e); } else if (file.type && file.type.substr(0, 6) === 'image/') { // It's an image file, try to set it as a background CustomBackgroundPopup.readFile(file);