-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjira.pl
executable file
·108 lines (90 loc) · 2.69 KB
/
jira.pl
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
use Purple;
use Pidgin;
use Data::Dumper;
%PLUGIN_INFO = (
perl_api_version => 2,
name => "Jira Plugin",
version => "0.3",
summary => "Auto-link to Jira tickets",
description => "Create links automatically to Jira issues",
author => "Scott Lipcon <slipcon\@gmail.com>",
url => "https://github.com/slipcon/jira-pidgin",
load => "plugin_load",
unload => "plugin_unload",
prefs_info => "prefs_info_cb"
);
sub plugin_init {
return %PLUGIN_INFO;
}
sub plugin_load {
my $plugin = shift;
Purple::Debug::info("jiraplugin", "plugin_load() - Jira Plugin Loaded.\n");
Purple::Prefs::add_none("/plugins/core/jira");
Purple::Prefs::add_string("/plugins/core/jira/jiraurl", "");
my $convs_handle = Purple::Conversations::get_handle();
Purple::Signal::connect($convs_handle, "receiving-im-msg",
$plugin,
\&receiving_msg_cb, $plugin);
Purple::Signal::connect($convs_handle, "receiving-chat-msg",
$plugin,
\&receiving_msg_cb, $plugin);
Purple::Signal::connect($convs_handle, "writing-im-msg",
$plugin,
\&writing_msg_cb, $plugin);
Purple::Signal::connect($convs_handle, "writing-chat-msg",
$plugin,
\&writing_msg_cb, $plugin);
Purple::Signal::connect($convs_handle, "sending-im-msg",
$plugin,
\&sending_im_msg_cb, $plugin);
Purple::Signal::connect($convs_handle, "sending-chat-msg",
$plugin,
\&sending_chat_msg_cb, $plugin);
}
sub plugin_unload {
my $plugin = shift;
Purple::Debug::info("jiraplugin", "plugin_unload() - Jira Plugin Unloaded.\n");
}
sub sending_im_msg_cb {
my ($account, $sender, $msg) = @_;
$msg = replace_jira($msg);
if ($msg) {
$_[2] = $msg
}
}
sub sending_chat_msg_cb {
my ($account, $msg) = @_;
$msg = replace_jira($msg);
if ($msg) {
$_[1] = $msg
}
}
sub writing_msg_cb {
my ($account, $sender, $msg) = @_;
$msg = replace_jira($msg);
if ($msg) {
$_[2] = $msg
}
}
sub receiving_msg_cb {
my ($account, $who, $msg, $conv, $flags, $data) = @_;
$msg = replace_jira($msg);
if ($msg) {
$_[2] = $msg
}
}
sub replace_jira {
my $msg = shift;
my $jiraurl = Purple::Prefs::get_string("/plugins/core/jira/jiraurl");
return if ($msg =~ /https?:\/\//);
return if ($jiraurl eq "" );
$msg =~ s/(\w+)-(\d+)/<a href=\"$jiraurl\/$1-$2\"\>$1-$2\<\/a\>/g;
return $msg;
}
sub prefs_info_cb {
my $frame = Purple::PluginPref::Frame->new();
$frame->add(Purple::PluginPref->new_with_label("Jira Plugin Settings"));
$frame->add(Purple::PluginPref->new_with_name_and_label(
"/plugins/core/jira/jiraurl", "URL Base:"));
return $frame;
}