MantisBT-Discord

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 1
/trunk/.git/logs/HEAD
@@ -1 +1 @@
0000000000000000000000000000000000000000 f56aebcdc20adb95c26f96e346c82fee7faa85be root <root@mail.grimore.org> 1584814853 +0000 clone: from https://github.com/TechGuard/MantisBT-Discord.git
0000000000000000000000000000000000000000 f56aebcdc20adb95c26f96e346c82fee7faa85be root <root@mail.grimore.org> 1584818357 +0000 clone: from https://github.com/TechGuard/MantisBT-Discord.git
/trunk/.git/logs/refs/heads/master
@@ -1 +1 @@
0000000000000000000000000000000000000000 f56aebcdc20adb95c26f96e346c82fee7faa85be root <root@mail.grimore.org> 1584814853 +0000 clone: from https://github.com/TechGuard/MantisBT-Discord.git
0000000000000000000000000000000000000000 f56aebcdc20adb95c26f96e346c82fee7faa85be root <root@mail.grimore.org> 1584818357 +0000 clone: from https://github.com/TechGuard/MantisBT-Discord.git
/trunk/.git/logs/refs/remotes/origin/HEAD
@@ -1 +1 @@
0000000000000000000000000000000000000000 f56aebcdc20adb95c26f96e346c82fee7faa85be root <root@mail.grimore.org> 1584814853 +0000 clone: from https://github.com/TechGuard/MantisBT-Discord.git
0000000000000000000000000000000000000000 f56aebcdc20adb95c26f96e346c82fee7faa85be root <root@mail.grimore.org> 1584818357 +0000 clone: from https://github.com/TechGuard/MantisBT-Discord.git
/trunk/Discord.php
@@ -27,10 +27,10 @@
{
$this->name = plugin_lang_get('title');
$this->description = plugin_lang_get('description');
$this->page = 'config';
$this->page = 'config_page';
$this->version = '1.0';
$this->requires = array(
'MantisCore' => '1.3.0',
'MantisCore' => '2.0.0',
);
$this->author = 'Robin van Nunen';
$this->contact = 'robin@vnunen.nl';
/trunk/lang/strings_english.txt
@@ -24,14 +24,13 @@
$s_plugin_Discord_config = 'Configuration';
$s_plugin_Discord_url_webhook = 'Default Discord Webhook URL';
$s_plugin_Discord_url_webhooks = 'Additional Discord Webhook URLs';
//$s_plugin_Discord_bot_name = 'Discord Bot Name';
//$s_plugin_Discord_bot_icon = 'Discord Bot Icon';
$s_plugin_Discord_bot_name = 'Discord Bot Name';
$s_plugin_Discord_bot_icon = 'Discord Bot Icon';
$s_plugin_Discord_skip_bulk = 'Skip notification on bulk actions';
$s_plugin_Discord_link_names = 'Turn user names into Discord links (may cause excess Discord notifications)';
//$s_plugin_Discord_default_channel = 'Default Discord Channel';
//$s_plugin_Discord_channels = 'Discord Channels';
//$s_plugin_Discord_usernames = 'Discord Usernames';
$s_plugin_Discord_language = 'Language';
$s_plugin_Discord_default_channel = 'Default Discord Channel';
$s_plugin_Discord_channels = 'Discord Channels';
$s_plugin_Discord_usernames = 'Discord Usernames';
$s_plugin_Discord_columns = 'Discord Columns';
$s_plugin_Discord_bug_created = '[%s] %s created <%s|%s>. (%s)';
$s_plugin_Discord_bug_updated = '[%s] %s updated <%s|%s>. (%s)';
/trunk/lang/strings_french.txt
@@ -26,14 +26,13 @@
$s_plugin_Discord_config = 'Configuration';
$s_plugin_Discord_url_webhook = 'URL de webhook Discord de défaut';
$s_plugin_Discord_url_webhooks = 'URLs de webhook Discord additionnels';
//$s_plugin_Discord_bot_name = 'Nom du bot Discord';
//$s_plugin_Discord_bot_icon = 'Icône du bot Discord';
$s_plugin_Discord_bot_name = 'Nom du bot Discord';
$s_plugin_Discord_bot_icon = 'Icône du bot Discord';
$s_plugin_Discord_skip_bulk = 'Ne pas envoyer de notification pour les actions en bloc';
$s_plugin_Discord_link_names = 'Convertir les noms d\'utilisateurs en liens Discord (peut causer des notifications excessives dans Discord)';
//$s_plugin_Discord_default_channel = 'Channel Discord de défault';
//$s_plugin_Discord_channels = 'Correspondances des channels';
//$s_plugin_Discord_usernames = 'Correspondances des noms d\'utilisateurs';
$s_plugin_Discord_language = 'Langue';
$s_plugin_Discord_default_channel = 'Channel Discord de défault';
$s_plugin_Discord_channels = 'Correspondances des channels';
$s_plugin_Discord_usernames = 'Correspondances des noms d\'utilisateurs';
$s_plugin_Discord_columns = 'Champs de bogues';
$s_plugin_Discord_bug_created = '[%s] %s a crée <%s|%s>. (%s)';
$s_plugin_Discord_bug_updated = '[%s] %s a modifié <%s|%s>. (%s)';
/trunk/lang/strings_german.txt
@@ -26,11 +26,10 @@
$s_plugin_Discord_config = 'Konfiguration';
$s_plugin_Discord_url_webhook = 'Default Discord Webhook URL';
$s_plugin_Discord_url_webhooks = 'Additional Discord Webhook URLs';
//$s_plugin_Discord_bot_name = 'Discord Bot Name';
//$s_plugin_Discord_bot_icon = 'Discord Bot Icon';
//$s_plugin_Discord_default_channel = 'Standard Discord Channel';
//$s_plugin_Discord_channels = 'Discord Channels';
$s_plugin_Discord_language = 'Sprache';
$s_plugin_Discord_bot_name = 'Discord Bot Name';
$s_plugin_Discord_bot_icon = 'Discord Bot Icon';
$s_plugin_Discord_default_channel = 'Standard Discord Channel';
$s_plugin_Discord_channels = 'Discord Channels';
$s_plugin_Discord_columns = 'Discord Spalten';
$s_plugin_Discord_bug_created = '[%s] %s erstellte <%s|%s>. (%s)';
$s_plugin_Discord_bug_updated = '[%s] %s aktualisierte <%s|%s>. (%s)';
/trunk/lang/strings_russian.txt
@@ -25,14 +25,13 @@
$s_plugin_Discord_config = 'Настройка';
$s_plugin_Discord_url_webhook = 'Discord Webhook URL по умолчанию';
$s_plugin_Discord_url_webhooks = 'Доплнительные Discord Webhook URLы';
//$s_plugin_Discord_bot_name = 'Имя Discord-бота';
//$s_plugin_Discord_bot_icon = 'Иконка Discord-бота';
$s_plugin_Discord_bot_name = 'Имя Discord-бота';
$s_plugin_Discord_bot_icon = 'Иконка Discord-бота';
$s_plugin_Discord_skip_bulk = 'Пропускать оповещения о групповых действиях';
$s_plugin_Discord_link_names = 'Делать имена пользователей ссылками (это может привести к большому количеству оповещений Discord)';
//$s_plugin_Discord_default_channel = 'Каналы Discord по умолчанию';
//$s_plugin_Discord_channels = 'Каналы Discord';
//$s_plugin_Discord_usernames = 'Пользователи Discord';
$s_plugin_Discord_language = 'язык';
$s_plugin_Discord_default_channel = 'Каналы Discord по умолчанию';
$s_plugin_Discord_channels = 'Каналы Discord';
$s_plugin_Discord_usernames = 'Пользователи Discord';
$s_plugin_Discord_columns = 'Колонки Discord';
$s_plugin_Discord_bug_created = '[%s] %s создал <%s|%s>. (%s)';
$s_plugin_Discord_bug_updated = '[%s] %s изменил <%s|%s>. (%s)';
File deleted
/trunk/pages/config_edit.php
/trunk/pages/config.php
@@ -1,7 +1,8 @@
<?php
/**
* Discord Integration
* Copyright (C) 2014 Karim Ratib (karim.ratib@gmail.com)
* Copyright (C) Robin van Nunen (robin@vnunen.nl) for Discord modification
* Copyright (C) Karim Ratib (karim@meedan.com) for original source
*
* Discord Integration is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License 2
@@ -18,160 +19,41 @@
* or see http://www.gnu.org/licenses/.
*/
 
auth_reauthenticate( );
access_ensure_global_level( config_get( 'manage_plugin_threshold' ) );
form_security_validate('plugin_Discord_config');
access_ensure_global_level(config_get('manage_plugin_threshold'));
/**
* Sets plugin config option if value is different from current/default
*
* @param string $p_name option name
* @param string $p_value value to set
*
* @return void
*/
function config_set_if_needed($p_name, $p_value)
{
if($p_value != plugin_config_get($p_name))
{
plugin_config_set($p_name, $p_value);
}
}
 
html_page_top( plugin_lang_get( 'title' ) );
$t_redirect_url = plugin_page('config_page', true);
layout_page_header(null, $t_redirect_url);
layout_page_begin();
 
print_manage_menu( );
config_set_if_needed('url_webhook', gpc_get_string('url_webhook'));
config_set_if_needed('skip_bulk', gpc_get_bool('skip_bulk'));
config_set_if_needed('link_names', gpc_get_bool('link_names'));
config_set_if_needed('language', gpc_get_string('language'));
 
?>
config_set_if_needed('hook_bug_report', gpc_get_bool('hook_bug_report'));
config_set_if_needed('hook_bug_update', gpc_get_bool('hook_bug_update'));
config_set_if_needed('hook_bug_deleted', gpc_get_bool('hook_bug_deleted'));
config_set_if_needed('hook_bugnote_add', gpc_get_bool('hook_bugnote_add'));
config_set_if_needed('hook_bugnote_edit', gpc_get_bool('hook_bugnote_edit'));
config_set_if_needed('hook_bugnote_deleted', gpc_get_bool('hook_bugnote_deleted'));
 
<br />
form_security_purge('plugin_Discord_config');
 
<form action="<?php echo plugin_page( 'config_edit' )?>" method="post">
<?php echo form_security_field( 'plugin_Discord_config_edit' ) ?>
<table align="center" class="width75" cellspacing="1">
 
<tr>
<td class="form-title" colspan="3">
<?php echo plugin_lang_get( 'title' ) . ' : ' . plugin_lang_get( 'config' )?>
</td>
</tr>
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'url_webhook' )?>
</td>
<td colspan="2">
<input size="80" type="text" name="url_webhook" value="<?php echo plugin_config_get( 'url_webhook' )?>" />
</td>
</tr>
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'url_webhooks' )?>
</td>
<td colspan="2">
<p>
Specifies the mapping between Mantis project names and Discord webhooks.
</p>
<p>
Option name is <strong>plugin_Discord_url_webhooks</strong> and is an array of 'Mantis project name' => 'Discord webhook'.
Array options must be set using the <a href="adm_config_report.php">Configuration Report</a> screen.
The current value of this option is:<pre><?php var_export(plugin_config_get( 'url_webhooks' ))?></pre>
</p>
</td>
</tr>
<!--
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'bot_name' )?>
</td>
<td colspan="2">
<input type="text" name="bot_name" value="<?php echo plugin_config_get( 'bot_name' )?>" />
</td>
</tr>
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'bot_icon' )?>
</td>
<td colspan="2">
<p>
Can be either a URL pointing to small image or an emoji of the form :emoji:</br>
Defaults to the Mantis logo.
</p>
<input type="text" name="bot_icon" value="<?php echo plugin_config_get( 'bot_icon' )?>" />
</td>
</tr>
-->
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'skip_bulk' )?>
</td>
<td colspan="2">
<input type="checkbox" name="skip_bulk" <?php if (plugin_config_get( 'skip_bulk' )) echo "checked"; ?> />
</td>
</tr>
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'link_names' )?>
</td>
<td colspan="2">
<input type="checkbox" name="link_names" <?php if (plugin_config_get( 'link_names' )) echo "checked"; ?> />
</td>
</tr>
<!--
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'default_channel' )?>
</td>
<td colspan="2">
<input type="text" name="default_channel" value="<?php echo plugin_config_get( 'default_channel' )?>" />
</td>
</tr>
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'channels' )?>
</td>
<td colspan="2">
<p>
Specifies the mapping between Mantis project names and Discord #channels.
</p>
<p>
Option name is <strong>plugin_Discord_channels</strong> and is an array of 'Mantis project name' => 'Discord channel name'.
Array options must be set using the <a href="adm_config_report.php">Configuration Report</a> screen.
The current value of this option is:<pre><?php var_export(plugin_config_get( 'channels' ))?></pre>
</p>
</td>
</tr>
-->
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'columns' )?>
</td>
<td colspan="2">
<p>
Specifies the bug fields that should be attached to the Discord notifications.
</p>
<p>
Option name is <strong>plugin_Discord_columns</strong> and is an array of bug column names.
Array options must be set using the <a href="adm_config_report.php">Configuration Report</a> screen.
<?php
$t_columns = columns_get_all( $t_project_id );
$t_all = implode( ', ', $t_columns );
?>
Available column names are:<div><textarea name="all_columns" readonly="readonly" cols="80" rows="5"><?php echo $t_all ?></textarea></div>
The current value of this option is:<pre><?php var_export(plugin_config_get( 'columns' ))?></pre>
</p>
</td>
</tr>
 
<tr <?php echo helper_alternate_class( )?>>
<td class="category">
<?php echo plugin_lang_get( 'language' )?>
</td>
<td colspan="2">
<input type="text" name="language" value="<?php echo plugin_config_get( 'language' )?>" />
</td>
</tr>
 
<tr>
<td class="center" colspan="3">
<input type="submit" class="button" value="<?php echo lang_get( 'change_configuration' )?>" />
</td>
</tr>
 
</table>
</form>
 
<?php
html_page_bottom();
html_operation_successful($t_redirect_url);
layout_page_end();
/trunk/pages/config_page.php
@@ -0,0 +1,184 @@
<?php
/**
* Discord Integration
* Copyright (C) Robin van Nunen (robin@vnunen.nl) for Discord modification
* Copyright (C) Karim Ratib (karim@meedan.com) for original source
*
* Discord Integration is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License 2
* as published by the Free Software Foundation.
*
* Discord Integration is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Discord Integration; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
* or see http://www.gnu.org/licenses/.
*/
 
access_ensure_global_level( config_get( 'manage_plugin_threshold' ) );
 
layout_page_header( plugin_lang_get( 'title' ) );
 
layout_page_begin( 'manage_overview_page.php' );
 
print_manage_menu( 'manage_plugin_page.php' );
 
?>
 
<div class="col-md-12 col-xs-12">
<div class="space-10"></div>
<div class="form-container">
<form action="<?php echo plugin_page( 'config' ) ?>" method="post">
<fieldset>
<div class="widget-box widget-color-blue2">
<div class="widget-header widget-header-small">
<h4 class="widget-title lighter">
<i class="ace-icon fa fa-exchange"></i>
<?php echo plugin_lang_get( 'title' ) ?>
</h4>
</div>
 
<?php echo form_security_field( 'plugin_Discord_config' ) ?>
<div class="widget-body">
<div class="widget-main no-padding">
<div class="table-responsive">
<table class="table table-bordered table-condensed table-striped">
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'url_webhook' ) ?>
</td>
<td>
<input size="80" type="text" name="url_webhook" value="<?php echo plugin_config_get( 'url_webhook' )?>" />
</td>
</tr>
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'url_webhooks' )?>
</td>
<td colspan="2">
<p>
Specifies the mapping between Mantis project names and Discord webhooks.
</p>
<p>
Option name is <strong>plugin_Discord_url_webhooks</strong> and is an array of 'Mantis project name' => 'Discord webhook'.
Array options must be set using the <a href="adm_config_report.php">Configuration Report</a> screen.
The current value of this option is:<pre><?php var_export(plugin_config_get( 'url_webhooks' ))?></pre>
</p>
</td>
</tr>
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'skip_bulk' )?>
</td>
<td colspan="2">
<input type="checkbox" name="skip_bulk" <?php if (plugin_config_get( 'skip_bulk' )) echo "checked"; ?> />
</td>
</tr>
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'link_names' )?>
</td>
<td colspan="2">
<input type="checkbox" name="link_names" <?php if (plugin_config_get( 'link_names' )) echo "checked"; ?> />
</td>
</tr>
 
<tr>
<td class="category">
<?php echo lang_get( 'language' ) ?>
</td>
<td>
<select id="language" name="language" class="input-sm">
<?php print_language_option_list( plugin_config_get('language') ) ?>
</select>
</td>
</tr>
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'actions' ) ?>
</td>
<td>
<table>
<thead>
<tr>
<th style="width: 64px; text-align: center;"><?=plugin_lang_get('enabled')?></th>
<th><?=plugin_lang_get('action')?></th>
</tr>
</thead>
<tbody>
<?php
foreach(['hook_bug_report', 'hook_bug_update', 'hook_bug_deleted', 'hook_bugnote_add', 'hook_bugnote_edit', 'hook_bugnote_deleted'] as $name)
{
echo '
<tr>
<td style="text-align: center;"><input type="checkbox" id="' . $name . '" name="' . $name . '" ' . (plugin_config_get($name) ? 'checked' : '') . '/></td>
<td><label for="' . $name . '">' . plugin_lang_get($name) . '</label></td>
</tr>';
}
?>
</tbody>
</table>
</td>
</tr>
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'columns' )?>
</td>
<td colspan="2">
<p>
Specifies the bug fields that should be attached to the Discord notifications.
</p>
<p>
Option name is <strong>plugin_Discord_columns</strong> and is an array of bug column names.
Array options must be set using the <a href="adm_config_report.php">Configuration Report</a> screen.
<?php
$t_columns = columns_get_all( @$t_project_id );
$t_all = implode( ', ', $t_columns );
?>
Available column names are:<div><textarea name="all_columns" readonly="readonly" cols="80" rows="5"><?php echo $t_all ?></textarea></div>
The current value of this option is:<pre><?php echo preg_replace('/[0-9]+ => /', '', var_export(plugin_config_get( 'columns' ), true)) ?></pre>
</p>
</td>
</tr>
 
<tr>
<td class="category">
<?php echo plugin_lang_get( 'usernames' )?>
</td>
<td colspan="2">
<p>
Specifies the mapping between Mantis and Discord user names.
</p>
<p>
Option name is <strong>plugin_Discord_usernames</strong> and is an array of 'Mantis user name' => 'Discord user name'.
Array options must be set using the <a href="adm_config_report.php">Configuration Report</a> screen.
The current value of this option is:<pre><?php var_export(plugin_config_get( 'usernames' ))?></pre>
</p>
</td>
</tr>
 
</table>
</div>
</div>
<div class="widget-toolbox padding-8 clearfix">
<input type="submit" class="btn btn-primary btn-white btn-round" value="<?php echo plugin_lang_get( 'action_update' ) ?>" />
</div>
</div>
</div>
</fieldset>
</form>
</div>
</div>
 
<?php
layout_page_end();