Greasy Fork is available in English.

Redmine helper buttons: List page

Copy multiple Redmine URL links

// ==UserScript==
// @name Redmine helper buttons: List page
// @namespace Redmine
// @icon https://dev.sun-asterisk.com/favicon.ico?1528612569
// @description Copy multiple Redmine URL links
// @run-at document-start
// @match *://dev.sun-asterisk.com/projects/*
// @match *://*redmine.sun-asterisk.vn/projects/*
// @grant GM_setClipboard
// @grant GM_notification
// @version 1.1.0
// ==/UserScript==

document.addEventListener("DOMContentLoaded", function (event) {
    var host = location.protocol + '//' + location.host;
  
    $('#query_form_with_buttons p.buttons').append('<a class="icon icon-copy ticket-urls" href="javascript:void(0)">Copy URLs</a>')
        .append('<a class="icon icon-copy hide-sidebar" href="javascript:void(0)">Hide sidebar</a>');
  
    $('.ticket-urls').on('click', function () {
        var ticketUrls = [];
        $('input:checkbox[name="ids[]"]:checked').each(function () {
          ticketUrls.push(host + $(this).closest('tr').find('td.id a').attr('href'));
        });
        var joinedUrls = ticketUrls.join("\n");
        if (joinedUrls) {
          GM_setClipboard(joinedUrls);
          GM_notification ( {title: 'Redmine URL copied', text: joinedUrls, image: 'https://dev.sun-asterisk.com/favicon.ico?1528612569'} );
        }
    });
  
    $('.hide-sidebar').on('click', function () {
        var sidebar = $('#sidebar')
            content = $('#content');
        if (sidebar.is(':visible')) {
            sidebar.hide();
            $('#content').css('width', '100%');
        } else {
            sidebar.show();
            $('#content').css('width', '');
        }
    });
});