-- Leo's gemini proxy
-- Connecting to git.thebackupbox.net:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
repo: janusweb action: commit revision: path_from: revision_from: cc8d996e1e61b665e660d7bfb9ab8e1e5b91c417: path_to: revision_to:
commit cc8d996e1e61b665e660d7bfb9ab8e1e5b91c417 Author: James Baicoianu <james_github@baicoianu.com> Date: Thu Jul 20 11:53:24 2017 -0700 Improved avatar config tab, with drag and drop diff --git a/scripts/configuration.js b/scripts/configuration.js
--- a/scripts/configuration.js +++ b/scripts/configuration.js @@ -30,6 +30,7 @@ elation.require(['engine'], function() { var username = elation.ui.input({ append: this, label: 'Username', + classname: 'janusweb_config_username', value: this.client.janusweb.getUsername(), events: { change: elation.bind(this, function(ev) { @@ -37,7 +38,7 @@ elation.require(['engine'], function() { }) } }); - var avatar = elation.ui.textarea({ + this.avatarinput = elation.ui.textarea({ append: this, label: 'Avatar', value: this.client.player.getAvatarData(), @@ -48,7 +49,66 @@ elation.require(['engine'], function() { }) } }); - + elation.events.add(this.avatarinput, 'dragover', elation.bind(this, this.handleAvatarDragOver)); + elation.events.add(this.avatarinput, 'dragenter', elation.bind(this, this.handleAvatarDragEnter)); + elation.events.add(this.avatarinput, 'dragleave', elation.bind(this, this.handleAvatarDragLeave)); + elation.events.add(this.avatarinput, 'drop', elation.bind(this, this.handleAvatarDrop)); + } + this.showAvatarPalette = function() { + this.palette = elation.ui.window({append: document.body, right: true,top: true, title: 'Avatar Selector'}); + this.palette.setcontent('<iframe src="https://kool.website/avatars/chibii/"></iframe>'); + } + this.handleAvatarDragOver = function(ev) { + ev.dataTransfer.dropEffect = "link" + ev.preventDefault(); + } + this.handleAvatarDragEnter = function(ev) { + this.avatarinput.addclass('state_droppable'); + } + this.handleAvatarDragLeave = function(ev) { + this.avatarinput.removeclass('state_droppable'); + } + this.handleAvatarDrop = function(ev) { + this.avatarinput.removeclass('state_droppable'); + ev.preventDefault(); + var files = ev.dataTransfer.files, + items = ev.dataTransfer.items; + if (files.length > 0) { + console.log('dropped files!', files); + for (var i = 0; i < files.length; i++) { + console.log(files[i]); + if (files[i].type == 'text/plain') { + var reader = new FileReader(); + reader.onload = elation.bind(this, function() { this.loadAvatarFromFile(reader.result); }); + reader.readAsText(files[i]); + } + } + } else if (items.length > 0) { + var types = {}; + var numitems = items.length; + for (var i = 0; i < numitems; i++) { + var type = items[i].type; + if (type == 'text/uri-list') { + items[i].getAsString(elation.bind(this, this.loadObjectFromURIList)); + } + } + } + ev.preventDefault(); + } + this.loadObjectFromURIList = function(data) { + console.log('get it', data); + var url = data; + if (elation.engine.assets.corsproxy && url.indexOf(elation.engine.assets.corsproxy) == -1) { + url = elation.engine.assets.corsproxy + url; + } + elation.net.get(url, null, { + callback: elation.bind(this, this.loadAvatarFromFile) + }); + } + this.loadAvatarFromFile = function(data) { + console.log('yey', data); + this.avatarinput.value = data; + this.client.player.setAvatar(data) } }, elation.ui.panel_vertical); });
-----END OF PAGE-----
-- Response ended
-- Page fetched on Sun Jun 2 16:45:33 2024