Advertisement
bl4re

Untitled

Aug 14th, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 9.69 KB | Source Code | 0 0
  1. // ==UserScript==
  2. // @name        [WYKOP] pasteimg
  3. // @namespace   Violentmonkey Scripts
  4. // @match       https://www.wykop.pl/*
  5. // @grant       none
  6. // @version     1.0
  7. // @author      blare
  8. // @description 15/08/2022, 01:26:37
  9. // ==/UserScript==
  10.  
  11. (function ($) {
  12.   $.fn.mfupload = function (opt) {
  13.     var methods = {
  14.       completed: function () {
  15.       },
  16.       start: function () {
  17.       },
  18.       loaded: function () {
  19.       },
  20.       progress: function () {
  21.       },
  22.       error: function () {
  23.       },
  24.       upload_old: function (ctl, iframe) {
  25.         settings.init();
  26.         var fnam = ctl.attr('value').replace(/^.*[\\\/]/, '')
  27.         var xload = {
  28.           fileno: - 1,
  29.           filename: fnam,
  30.           perc: 0,
  31.           sent: 0,
  32.           total: 0
  33.         };
  34.         settings.start(xload);
  35.         $('<iframe id="' + iframe + '" name="' + iframe + '" src="#" style="display:none"></iframe>').appendTo('body');
  36.         $('#' + iframe).bind('load', function () {
  37.           var tmp = $('#' + iframe).contents().find('body').html();
  38.           var result = jQuery.parseJSON(tmp);
  39.           result.fileno = - 1;
  40.           settings.loaded(result);
  41.           settings.completed();
  42.           $('#' + iframe).unbind('load');
  43.           $('#' + iframe).remove();
  44.         });
  45.         ctl.parent().submit();
  46.       },
  47.       uploadFromHTML: function (html)
  48.       {
  49.         var url = $(html).filter('img').attr('src');
  50.         if (url)
  51.         {
  52.           settings.start({
  53.           });
  54.           try
  55.           {
  56.             var xhr = new XMLHttpRequest();
  57.           }
  58.           catch (e)
  59.           {
  60.             alert('Your browser does not support AJAX!');
  61.             return false;
  62.           }
  63.           xhr.open('POST', settings.html_upload, true);
  64.           xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  65.           xhr.upload.addEventListener('progress', function (e) {
  66.           }, false);
  67.           xhr.addEventListener('load', function (e) {
  68.             var result = e.target.responseText;
  69.             result.isHtml = true;
  70.             settings.loaded(result);
  71.           }, false);
  72.           var nef = new FormData();
  73.           nef.append('folder', settings.folder);
  74.           nef.append('file_element', settings.file_elem);
  75.           nef.append('udata', settings.user_data);
  76.           nef.append('url', url);
  77.           for (key in settings.postdata)
  78.           {
  79.             nef.append(key, settings.postdata[key]);
  80.           }
  81.           xhr.send(nef);
  82.         }
  83.       },
  84.       upload: function (files) {
  85.         nfiles = files.length;
  86.         cfiles = nfiles;
  87.         settings.init();
  88.         if (typeof files !== 'undefined') {
  89.           for (var i = 0; i < nfiles; i++) {
  90.             var ext = files[i].name.toLowerCase().split(/\./);
  91.             ext = ext[ext.length - 1];
  92.             if (settings.type && settings.type.indexOf(ext) == - 1) {
  93.               var err = {
  94.                 err_no: 1,
  95.                 err_des: 'Niepoprawny typ pliku',
  96.                 fileno: i,
  97.                 filename: files[i].name
  98.               };
  99.               settings.error(err);
  100.               cfiles--;
  101.               if (cfiles == 0) settings.completed();
  102.             } else if (settings.maxsize > 0 && files[i].size > settings.maxsize * 1048576) {
  103.               var err = {
  104.                 err_no: 2,
  105.                 err_des: 'Maksymalny rozmiar pliku to ' + settings.maxsize + ' MB.',
  106.                 fileno: i,
  107.                 filename: files[i].name
  108.               };
  109.               settings.error(err);
  110.               cfiles--;
  111.               if (cfiles == 0) settings.completed();
  112.             } else
  113.             {
  114.               var xload = {
  115.                 fileno: i,
  116.                 filename: files[i].name,
  117.                 perc: 0,
  118.                 sent: 0,
  119.                 total: 0
  120.               };
  121.               settings.start(xload);
  122.               try
  123.               {
  124.                 var xhr = new XMLHttpRequest();
  125.               }
  126.               catch (e)
  127.               {
  128.                 alert('Your browser does not support AJAX!');
  129.                 return false;
  130.               }
  131.               xhr.open('POST', settings.post_upload, true);
  132.               xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  133.               xhr.upload.filenumb = i;
  134.               xhr.filenumb = i;
  135.               xhr.upload.filename = files[i].name;
  136.               xhr.upload.addEventListener('progress', function (e) {
  137.                 if (e.lengthComputable) {
  138.                   var loaded = Math.ceil((e.loaded / e.total) * 100);
  139.                   var xload = {
  140.                     fileno: this.filenumb,
  141.                     filename: this.filename,
  142.                     perc: loaded,
  143.                     sent: e.loaded,
  144.                     total: e.total
  145.                   };
  146.                   settings.progress(xload);
  147.                 }
  148.               }, false);
  149.               xhr.addEventListener('load', function (e) {
  150.                 var result = e.target.responseText;
  151.                 settings.loaded(result);
  152.               }, false);
  153.               var nef = new FormData();
  154.               nef.append('folder', settings.folder);
  155.               nef.append('file_element', settings.file_elem);
  156.               nef.append('udata', settings.user_data);
  157.               nef.append(settings.file_elem, files[i]);
  158.               for (key in settings.postdata)
  159.               {
  160.                 nef.append(key, settings.postdata[key]);
  161.               }
  162.               xhr.send(nef);
  163.             }
  164.           }
  165.         } else {
  166.           alert('no support');
  167.         }
  168.       }
  169.     }
  170.     var settings = {
  171.       'init': methods.init,
  172.       'start': methods.start,
  173.       'loaded': methods.loaded,
  174.       'progress': methods.progress,
  175.       'completed': methods.completed,
  176.       'ini_text': 'drag files to here',
  177.       'over_text': 'drop files',
  178.       'over_col': 'white',
  179.       'over_bkcol': 'green',
  180.       'post_upload': './upload.php',
  181.       'html_upload': './upload.php',
  182.       'postdata': {
  183.       },
  184.       'maxsize': '2',
  185.       'type': '',
  186.       'folder': './',
  187.       'user_data': '',
  188.       'file_elem': ''
  189.     };
  190.     if (opt) $.extend(settings, opt);
  191.     this.each(function () {
  192.       if (!((window.location != window.parent.location) ? true : false))
  193.       {
  194.         settings.file_elem = 'mf_file_' + $(this).attr('id');
  195.         settings.iframe = 'mf_iframe_' + $(this).attr('id');
  196.         var extraFields = '';
  197.         for (key in settings.postdata)
  198.         {
  199.           extraFields += '<input type="hidden" value="' + settings.postdata[key] + '" name="' + key + '">';
  200.         }
  201.         $(this).append('<div class="mf_upload_m"><form method="post" enctype="multipart/form-data" class="file" action="' + settings.post_upload + '" target="' + settings.iframe + '">' + extraFields + '<input type="file" class="file" name="' + settings.file_elem + '" id="' + settings.file_elem + '" multiple /><input type="hidden" name="folder" value="' + settings.folder + '" /><input type="hidden" name="file_element" value="' + settings.file_elem + '" /></form><div class="mf_upload_ins"></div></div>');
  202.         $(this).find('.mf_upload_m').css({
  203.           'position': 'relative',
  204.           'margin': 0,
  205.           'padding': 0,
  206.           'width': 'inherit',
  207.           'height': '0px'
  208.         });
  209.         $(this).find('.file').css({
  210.           'position': 'relative',
  211.           'text-align': 'right',
  212.           '-moz-opacity': '0',
  213.           'filter': 'alpha(opacity: 0)',
  214.           'opacity': '0',
  215.           'z-index': '2',
  216.           'width': '100%',
  217.           'height': '100%',
  218.           top: 0,
  219.           left: 0
  220.         });
  221.         $(this).find('.mf_upload_ins').css({
  222.           'position': 'absolute',
  223.           'text-align': 'center',
  224.           'z-index': '1',
  225.           'width': '100%',
  226.           'height': '100%',
  227.           'top': 0,
  228.           'left': 0
  229.         });
  230.         $(this).find('.mf_upload_ins').empty().html(settings.ini_text);
  231.         $(this).bind({
  232.           dragleave: function (e) {
  233.             e.preventDefault();
  234.             $(this).find('.mf_upload_ins').css('color', 'inherit');
  235.             $(this).find('.mf_upload_ins').css('background-color', 'inherit').html(settings.ini_text);
  236.           },
  237.           drop: function (e) {
  238.             e.preventDefault();
  239.             $(this).find('.mf_upload_ins').css('color', 'inherit');
  240.             $(this).find('.mf_upload_ins').css('background-color', 'inherit').html(settings.ini_text);
  241.             var obj = e.originalEvent;
  242.             if (obj.dataTransfer.getData('text/html').length > 0)
  243.             {
  244.               methods.uploadFromHTML(obj.dataTransfer.getData('text/html'));
  245.             } else if (obj.dataTransfer.files)
  246.             {
  247.               methods.upload(obj.dataTransfer.files);
  248.             }
  249.             else
  250.             alert('Drag and Drop not supported by your browser.');
  251.           },
  252.           paste: function(e){
  253.             let ev = e.originalEvent;
  254.             if (ev.clipboardData){
  255.               methods.upload(ev.clipboardData.files);
  256.             }
  257.           },
  258.           dragover: function (e) {
  259.             e.preventDefault();
  260.             $(this).find('.mf_upload_ins').css('color', settings.over_col);
  261.             $(this).find('.mf_upload_ins').css('background-color', settings.over_bkcol);
  262.             $(this).find('.mf_upload_ins').html('<div>' + settings.over_text + '</div>');
  263.           }
  264.         });
  265.         $(this).find('input[type=file]').bind('change', function (e) {
  266.           e.preventDefault();
  267.           if (e.target.files) methods.upload(e.target.files);
  268.            else methods.upload_old($(this), settings.iframe);
  269.         });
  270.       }
  271.     });
  272.   }
  273. }) (jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement