Greasy Fork is available in English.

PTH Drop Logfile

Enable dropping logfiles into a dropzone on the upload page

// ==UserScript==
// @name         PTH Drop Logfile
// @version      0.5
// @description  Enable dropping logfiles into a dropzone on the upload page
// @author       Chameleon
// @include      http*://redacted.ch/upload.php*
// @include      http*://redacted.ch/logchecker.php*
// @grant        none
// @run-at       document-idle
// @namespace https://greasyfork.org/users/87476
// ==/UserScript==

(function() {
  'use strict';

  var inputs=document.getElementsByTagName('input');
  for(var i=0; i<inputs.length; i++)
  {
    var inp=inputs[i];
    if(inp.type == 'file')
    {
      if(inp.getAttribute('hasDropzone') == 'true')
        continue;
      var field=inp.parentNode.getElementsByTagName('input');
      if(field.length > 1)
      {
        if(field[0].id == 'image')
          continue;
      }
      makeDropzone(inp);
    }
  }
  /*var input=document.getElementById('logfields').getElementsByTagName('input')[0];

  makeDropzone(input);*/

  var script=document.createElement('script');
  script.appendChild(document.createTextNode('AddLogField=('+AddLogField+'); makeDropzone=('+makeDropzone+'); dragenter=('+dragenter+'); drop=('+drop+');'));
  document.body.appendChild(script);
}());

function AddLogField()
{
  if (LogCount >= 200) {
    return;
  }
  var LogField = document.createElement("input");
  LogField.type = "file";
  LogField.id = "file";
  LogField.name = "logfiles[]";
  LogField.size = 50;
  var x = $('#logfields').raw();
  x.appendChild(document.createElement("br"));
  x.appendChild(LogField);
  LogCount++;
  makeDropzone(LogField);
}

function makeDropzone(input)
{
  var dropzone = document.createElement('div');
  input.parentNode.appendChild(dropzone);
  dropzone.addEventListener("dragenter", dragenter, false);
  dropzone.addEventListener("dragover", dragenter, false);
  dropzone.addEventListener("drop", drop.bind(undefined, input), false);
  dropzone.innerHTML = 'Or drop files here';
  dropzone.setAttribute('style', 'width: 400px; height: 30px; background: rgba(64,64,64,0.8); border: dashed; border-radius: 10px; margin: auto; text-align: center; font-size: 20px;');
  input.setAttribute('hasDropzone', 'true');
}

function dragenter(event)
{
  event.preventDefault();
  event.stopPropagation();
}

function drop(input, event)
{
  event.preventDefault();
  event.stopPropagation();
  /*event.dataTransfer.files = document.getElementById('file').files;
  console.log('here');
  input.files = event.dataTransfer.files;*/
  var e=new event.constructor(event.type, event);
  input.dispatchEvent(e);
}