Greasemonkey-скрипт для Redmine

Redmine, конечно, настраиваемый и гибкий, но иногда очень не удобный.
Захотелось сделать кнопочку «Взять в работу», которая появлялась бы на странице тикета.
Делать плагин долго, просто подключить яваскрипт в шаблон — плохо, проблемы при обновлении Redmine.
В итоге решил написать Greasemonkey-скрипт:

// ==UserScript==
// @name           Redmine Ticket
// @namespace      hc
// @include        [урл к Redmine]/issues/*
// ==/UserScript==
var tt = document.createElement('DIV');
tt.innerHTML = "<script>\
var linkInWork = '<a href=\"javascript:void(0);\" onclick=\"setInWork(); return false;\" class=\"icon\">In work</a>';\
$A( $$( '#content .contextual a.icon-del' ) ).each( function( Elem ) {\
	Elem.insert( {'after': linkInWork} );\
});\
function setInWork()\
{\
	var t = $('loggedas').innerHTML;\
	var userId = /\\/users\\/([0-9]*)/.exec(t);\
	if ( userId !== null ) {\
		userId = userId[1];\
	}\
	var statusValue = 2;\
	setSelectOptionSelected( 'issue_assigned_to_id', userId );\
	setSelectOptionSelected( 'issue_status_id', statusValue );\
	$('issue-form').submit();\
}\
function setSelectOptionSelected( SelId, Value )\
{\
	var sel = $( SelId );\
	$A( sel.options ).find( function( option, index ) {\
	   if( option.value == Value ) {\
			sel.selectedIndex = index;\
	   }\
	});\
}\
</script>";

document.getElementById('content').appendChild(tt);

Добавляет ссылки «In work» в список ссылок вверху и внизу страницы.

One Response so far.

  1. Спасибо за статью, думаю она многим поможет. Но мы для этого используем отдельную программку — RMClient. Очень удобно для тех, кто планирует проекты с помощью Redmine. Это таймер для учета времени в системе Redmine, он доступен для скачивания после короткой регистрации. Будем очень признательны за его использование и помощь в тестировании.

LEAVE A COMMENT