低调

在Mantis中的bug页面添加安全评审按钮的方法

上一篇 / 下一篇  2009-03-11 10:05:08

1.bug_view_page.php界面中添加安全问题评审按钮,也就是在html_api中增加safety部分,添加代码:

function html_button_bug_safety( $p_bug_id ) {

             if ( access_has_bug_level( config_get( 'safety_bug_threshold' ), $p_bug_id ) ) {

                    html_button( string_get_bug_safety_page(),

                                          lang_get( 'safety_bug_button' ),

                                          array( 'bug_id' => $p_bug_id ) );

             }

      }

2.config_ini中设置safety_bug_threshold权限为safetymanager,也就是说只有安全风险管理员才有权利查看和更改safety相关字段。

3.接着,在string.api中添加string_get_bug_safety_page函数,而字符串safety_bug_button需要在lang_chinese_simplified中添加,函数代码:

function string_get_bug_safety_page( $p_user_id = null ) {

             return string_get_bug_page ( 'safety', $p_user_id );

      }

4.这个添加完毕之后,函数string_get_bug_page会要求两个参数,show_safetybug_safety_advanced_page

5.Show_safety需要在config_ini中添加,bug_safety_advanced_page需要添加,而代码则可以从bug_update_advanced_page中得到想法,删除掉update界面的其它代码,只保留自定义字段的部分,而其中<!-- Custom Fields -->

<?php

      $t_custom_fields_found = false;

      $t_related_custom_field_ids = custom_field_get_linked_ids( $t_bug->project_id );

      foreach( $t_related_custom_field_ids as $t_id ) {

             $t_def = custom_field_get_definition( $t_id );

             if( ( $t_def['display_safety'] && !$t_def['advanced'] ) && custom_field_has_write_access( $t_id, $f_bug_id ) ) {

                    $t_custom_fields_found = true;

?>

6.需要更改display_safety部分,这个字段由于没有添加到数据库,需要在数据库中添加此字段,方法是使用phpmyadmin打开mantis数据库,找到manage_custom_field_table,添加display_safety字段,类型和默认值以及长度都和display_update一致即可。

而使用到advanced_page的时候需要用到advanced_safety字段,数据库中依然没有,因此需要在mantis_user_pref_table中添加advanced_safety字段,类型默认值等等和advanced_safety一致。

7.html_api中找到html_buttons_view_bug_page函数,在其中添加:

echo '<td class="center">';

html_button_bug_safety( $p_bug_id );

echo '</td>';

此代码为了让safety_button显示在bug中。

8.至此,添加按钮以及新的界面完成,接下来,需要做自定义字段的代码。

首先,在manage_custom_field_edit_page.php中添加

             <tr <?php echo helper_alternate_class() ?>>

                    <td class="category">

                           <?php echo lang_get( 'custom_field_display_safety' ) ?>

                    </td>

<td>

                           <input type="checkbox" name="display_safety" value="1" <?php check_checked( $t_definition['display_safety'] ) ?> />

                    </td>

             </tr>

然后在custom_field_api.php中添加

$c_display_safety     = db_prepare_bool(       $p_def_array['display_safety'] );

if( array_key_exists( 'release_note', $p_def_array ) ) {

                    if ( !$t_update_something ) {

                           $t_update_something = true;

                    } else {

                           $query .= ', ';

                    }

                    $query .= " display_safety ='$c_ display_safety '";

             }

最后在manage_custom_field_update.php中添加

$t_values['display_safety ']           = gpc_get_bool( ' display_safety ' );

9.代码添加完毕之后,需要在自定义字段中添加感兴趣的字段,选中其中的:在创建问题时显示,在更新问题时显示,在设置完全问题时显示。如果前两个不选择的话,会出现写入数据库错误的情况,至此,安全问题评审按钮的添加工作结束。


TAG:

 

评分:0

我来说两句

Open Toolbar