Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[feat] Direct-quote op forum

Pagina: 1
Acties:

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 31-10 03:36

F.West98

Alweer 16 jaar hier

Topicstarter
Hey devvers,

Ik ben laatst veel met CSS & Greasemonkey bezig geweest op Tweakers en heb een paar dingen bedacht die mij erg handig leken, ook voor de rest. Feature-request dus!
Wat mij erg leuk leek is als je op de knop quote klikt, dat je dan oner het bericht een tekstvak krijgt waarin je kan typen, als je op verstuur klikt, dat de post direct er komt staan.
Je hoeft maar een beetje code te maken, je kan de huidige get-new-messages functie gebruiken.

Code zoals ik die gebruik (zonder css, met jQuery):
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
$('.action_list li:last-child a').on("click", function() {
    $('.react').remove();
    var message = $(this).closest('.message');
    var postid = message.prev('a').attr('name');
    var quotelink = $(this).attr('href');
    var quotebutton = $(this);
    $(this).addClass('loading');
    message.after('<div class="react"><textarea id="messagetext"></textarea><br/><input id="submitbutton" value="Verstuur" class="fancyButton"/><a id="cancel" class="textButton">Annuleer</a></div>');
    $.ajax({
        url: quotelink,
        method: 'GET',
        dataType: 'text',
        success: function(j) {
            if (RefreshTimer().refreshes.newMessageNotifier !== undefined) {
                window.cbfunc = RefreshTimer().refreshes.newMessageNotifier.callback; 
            } else { window.cbfunc = function() { return false; }; }
            $('body').append('<iframe style="display:none;" id="iframe"></iframe>');
            var iframe = $('#iframe').contents().find('html');
            var p = j.substring(j.indexOf('<form action="http://gathering.tweakers.net/forum/insert_message/1358243" method="post" id="message_form'), j.indexOf('preview=true" accesskey="p"></div></td></tr></table></form>'));
            iframe.html(p);
            window.topicid = iframe.find('#message_form').attr('action');
            window.bookmark = iframe.find('#bookmark').val();
            window.reactid = iframe.find('input[name="data[reactid]"]').val();
            window.offset = iframe.find('input[name="data[offset]"]').val();
            window.type = iframe.find('input[name="data[type]"]').val();
            var text = iframe.find('#messageBox').val();
            $('#messagetext').text(text);
            $('.react').slideDown();
            quotebutton.removeClass('loading');
            message.addClass('reaction');
            $('#iframe').remove();
            
            $('#submitbutton').on("click", function() {
                var text = $('#messagetext').val();
                $.ajax({
                    url: window.topicid,
                    type: 'POST',
                    dataType: 'html',
                    data: { data: { content: text, bookmark: 0, reactid: window.reactid, offset: window.offset, type: window.type }, checkimg: 1 },
                    success: function(j) {
                        $('#cancel').trigger("click");
                        window.cbfunc();
                        setTimeout(function() { $('#newMessageNotification').trigger("click"); }, 100);
                    }
                });
            });
            
            $('#cancel').on("click", function() {
                $('.react').slideUp(350);
                var message = $(this).closest('.react').prev();
                message.removeClass('reaction');
                setTimeout(function() {
                    $('.react').remove();
                }, 400);
            });
        }
    });
    return false;
});

Eerst haalt hij een paar dingen uit de pagina op, en daarna haalt hij de daadwerkelijke quote-pagina op. (let op, get-berichten-functie wordt dan overschreven, dus backup naar window.cbfunc). Daarna tekst uit goeie tekstvak halen en that's it zo ongeveer.

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI