diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 9fbab5536..27b7117af 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -21,7 +21,7 @@ TYPES: ty_file_signatures_ts TYPE SORTED TABLE OF ty_file_signature WITH UNIQUE KEY path filename. TYPES: BEGIN OF ty_file. - INCLUDE TYPE ty_file_signature. + INCLUDE TYPE ty_file_signature. TYPES: data TYPE xstring, END OF ty_file. TYPES: ty_files_tt TYPE STANDARD TABLE OF ty_file WITH DEFAULT KEY. @@ -127,7 +127,7 @@ TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY. TYPES: ty_seocompotx_tt TYPE STANDARD TABLE OF seocompotx WITH DEFAULT KEY. TYPES: BEGIN OF ty_tpool. - INCLUDE TYPE textpool. + INCLUDE TYPE textpool. TYPES: split TYPE c LENGTH 8. TYPES: END OF ty_tpool. @@ -185,6 +185,7 @@ CONSTANTS: BEGIN OF gc_action_type, dummy TYPE c VALUE '_', END OF gc_action_type. +CONSTANTS: gc_crlf TYPE abap_cr_lf VALUE cl_abap_char_utilities=>cr_lf. CONSTANTS: gc_newline TYPE abap_char1 VALUE cl_abap_char_utilities=>newline. CONSTANTS: gc_english TYPE spras VALUE 'E'. diff --git a/src/zabapgit_html_action_utils.prog.abap b/src/zabapgit_html_action_utils.prog.abap index f560272e3..da423f823 100644 --- a/src/zabapgit_html_action_utils.prog.abap +++ b/src/zabapgit_html_action_utils.prog.abap @@ -302,6 +302,7 @@ CLASS lcl_html_action_utils IMPLEMENTATION. CLEAR es_fields. CONCATENATE LINES OF it_postdata INTO lv_string. + REPLACE ALL OCCURRENCES OF gc_crlf IN lv_string WITH lc_replace. REPLACE ALL OCCURRENCES OF gc_newline IN lv_string WITH lc_replace. lt_fields = parse_fields( lv_string ). diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 5ca69ca03..3cb752154 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -155,9 +155,14 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. METHOD render_form. - DATA: lo_user TYPE REF TO lcl_persistence_user, - lv_user TYPE string, - lv_email TYPE string. + CONSTANTS: lc_body_col_max TYPE i VALUE 150. + + DATA: lo_user TYPE REF TO lcl_persistence_user. + DATA: lv_user TYPE string. + DATA: lv_email TYPE string. + DATA: lv_s_param TYPE string. + DATA: lo_settings TYPE REF TO lcl_settings. + data: lv_body_size type i. * see https://git-scm.com/book/ch5-2.html * commit messages should be max 50 characters @@ -189,13 +194,24 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. iv_label = 'committer e-mail' iv_value = lv_email ) ). + lo_settings = lcl_app=>settings( )->read( ). + + lv_s_param = lo_settings->get_commitmsg_comment_length( ). + ro_html->add( render_text_input( iv_name = 'comment' iv_label = 'comment' - iv_max_length = '72' ) ). + iv_max_length = lv_s_param ) ). ro_html->add( '
' ). ro_html->add( '' ). - ro_html->add( '' ). + + lv_body_size = lo_settings->get_commitmsg_body_size( ). + IF lv_body_size > lc_body_col_max. + lv_body_size = lc_body_col_max. + ENDIF. + ro_html->add( || ). + ro_html->add( '' ). ro_html->add( '
' ). diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index 06692df16..cb4891456 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -32,6 +32,8 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page. RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_max_lines RETURNING VALUE(ro_html) TYPE REF TO lcl_html. + METHODS render_commit_msg + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS build_settings IMPORTING it_post_fields TYPE tihttpnvp. @@ -64,9 +66,11 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ro_html->add( render_form_begin( ) ). ro_html->add( render_proxy( ) ). ro_html->add( |
| ). - ro_html->add( render_development_internals( ) ). - ro_html->add( |
| ). ro_html->add( render_max_lines( ) ). + ro_html->add( |
| ). + ro_html->add( render_commit_msg( ) ). + ro_html->add( |
| ). + ro_html->add( render_development_internals( ) ). ro_html->add( render_form_end( ) ). ENDMETHOD. "render_content @@ -99,6 +103,7 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ENDMETHOD. METHOD lif_gui_page~on_event. +* todo, check input values eg INT DATA: lt_post_fields TYPE tihttpnvp. @@ -124,45 +129,79 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. METHOD build_settings. - DATA: ls_post_field TYPE ihttpnvp, - lv_max_lines_as_integer TYPE i. + DATA: lv_i_param_value TYPE i. + FIELD-SYMBOLS: TYPE ihttpnvp. CREATE OBJECT mo_settings. - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'proxy_url'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_url'. IF sy-subrc <> 0. mv_error = abap_true. ENDIF. - mo_settings->set_proxy_url( ls_post_field-value ). + mo_settings->set_proxy_url( -value ). - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'proxy_port'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_port'. IF sy-subrc <> 0. mv_error = abap_true. ENDIF. - mo_settings->set_proxy_port( ls_post_field-value ). + mo_settings->set_proxy_port( -value ). - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'proxy_auth'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'proxy_auth'. IF sy-subrc = 0. mo_settings->set_proxy_authentication( abap_true ). ELSE. mo_settings->set_proxy_authentication( abap_false ). ENDIF. - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'critical_tests'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'critical_tests'. IF sy-subrc = 0. mo_settings->set_run_critical_tests( abap_true ). ELSE. mo_settings->set_run_critical_tests( abap_false ). ENDIF. - READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'max_lines'. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'max_lines'. IF sy-subrc = 0. - lv_max_lines_as_integer = ls_post_field-value. - mo_settings->set_max_lines( lv_max_lines_as_integer ). + lv_i_param_value = -value. + mo_settings->set_max_lines( lv_i_param_value ). ELSE. mo_settings->set_max_lines( 0 ). ENDIF. + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'comment_length'. + IF sy-subrc = 0. + + lv_i_param_value = -value. + + IF lv_i_param_value < lcl_settings=>c_commitmsg_comment_length_dft. + lv_i_param_value = lcl_settings=>c_commitmsg_comment_length_dft. + ENDIF. + + mo_settings->set_commitmsg_comment_length( lv_i_param_value ). + + ELSE. + + mo_settings->set_commitmsg_comment_length( lcl_settings=>c_commitmsg_comment_length_dft ). + + ENDIF. + + READ TABLE it_post_fields ASSIGNING WITH KEY name = 'body_size'. + IF sy-subrc = 0. + + lv_i_param_value = -value. + + IF lv_i_param_value < lcl_settings=>c_commitmsg_body_size_dft. + lv_i_param_value = lcl_settings=>c_commitmsg_body_size_dft. + ENDIF. + + mo_settings->set_commitmsg_body_size( lv_i_param_value ). + + ELSE. + + mo_settings->set_commitmsg_body_size( lcl_settings=>c_commitmsg_body_size_dft ). + + ENDIF. + ENDMETHOD. @@ -251,4 +290,21 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ro_html->add( |
| ). ENDMETHOD. + METHOD render_commit_msg. + CREATE OBJECT ro_html. + + ro_html->add( |

Commit Message

| ). + ro_html->add( || ). + ro_html->add( |
| ). + ro_html->add( || ). + ro_html->add( |
| ). + ro_html->add( || ). + ro_html->add( |
| ). + ro_html->add( || ). + ro_html->add( |
| ). + ro_html->add( |
| ). + ENDMETHOD. + ENDCLASS. diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index 7a14d0467..ac690d3e6 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -1534,6 +1534,9 @@ ENDCLASS. CLASS lcl_settings DEFINITION FINAL. PUBLIC SECTION. + CONSTANTS: c_commitmsg_comment_length_dft TYPE i VALUE 50. + CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72. + METHODS set_proxy_url IMPORTING iv_url TYPE string. @@ -1563,13 +1566,25 @@ CLASS lcl_settings DEFINITION FINAL. METHODS get_max_lines RETURNING VALUE(rv_lines) TYPE i. + METHODS set_commitmsg_comment_length + IMPORTING iv_length TYPE i. + METHODS get_commitmsg_comment_length + RETURNING + VALUE(rv_length) TYPE i. + METHODS set_commitmsg_body_size + IMPORTING iv_length TYPE i. + METHODS get_commitmsg_body_size + RETURNING + VALUE(rv_length) TYPE i. PRIVATE SECTION. - DATA: mv_proxy_url TYPE string, - mv_proxy_port TYPE string, - mv_proxy_auth TYPE string, - mv_run_critical_tests TYPE abap_bool, - mv_lines TYPE i. + DATA: mv_proxy_url TYPE string, + mv_proxy_port TYPE string, + mv_proxy_auth TYPE string, + mv_run_critical_tests TYPE abap_bool, + mv_lines TYPE i, + mv_commitmsg_comment_length TYPE i, + mv_commitmsg_body_size TYPE i. ENDCLASS. @@ -1615,6 +1630,21 @@ CLASS lcl_settings IMPLEMENTATION. mv_lines = iv_lines. ENDMETHOD. + METHOD get_commitmsg_comment_length. + rv_length = mv_commitmsg_comment_length. + ENDMETHOD. + + METHOD set_commitmsg_comment_length. + mv_commitmsg_comment_length = iv_length. + ENDMETHOD. + + METHOD get_commitmsg_body_size. + rv_length = mv_commitmsg_body_size. + ENDMETHOD. + + METHOD set_commitmsg_body_size. + mv_commitmsg_body_size = iv_length. + ENDMETHOD. ENDCLASS. CLASS lcl_persistence_settings DEFINITION FINAL. @@ -1661,6 +1691,16 @@ CLASS lcl_persistence_settings IMPLEMENTATION. iv_value = 'MAX_LINES' iv_data = |{ io_settings->get_max_lines( ) }| ). + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'COMMENT_LEN' + iv_data = |{ io_settings->get_commitmsg_comment_length( ) }| ). + + lcl_app=>db( )->modify( + iv_type = 'SETTINGS' + iv_value = 'BODY_SIZE' + iv_data = |{ io_settings->get_commitmsg_body_size( ) }| ). + ENDMETHOD. METHOD read. @@ -1669,7 +1709,9 @@ CLASS lcl_persistence_settings IMPLEMENTATION. lv_critical_tests_as_boolean TYPE abap_bool, lv_max_lines_as_string TYPE string, lv_flag TYPE abap_bool, - lv_max_lines_as_integer TYPE i. + lv_max_lines_as_integer TYPE i, + lv_s_param_value TYPE string, + lv_i_param_value TYPE i. CREATE OBJECT ro_settings. @@ -1710,15 +1752,36 @@ CLASS lcl_persistence_settings IMPLEMENTATION. CATCH lcx_not_found. ro_settings->set_run_critical_tests( abap_false ). ENDTRY. + TRY. lv_max_lines_as_string = lcl_app=>db( )->read( iv_type = 'SETTINGS' iv_value = 'MAX_LINES' ). lv_max_lines_as_integer = lv_max_lines_as_string. ro_settings->set_max_lines( lv_max_lines_as_integer ). - CATCH lcx_not_found. + CATCH lcx_not_found cx_sy_conversion_no_number. ro_settings->set_max_lines( 500 ). " default ENDTRY. + + TRY. + lv_s_param_value = lcl_app=>db( )->read( + iv_type = 'SETTINGS' + iv_value = 'COMMENT_LEN' ). + lv_i_param_value = lv_s_param_value. + ro_settings->set_commitmsg_comment_length( lv_i_param_value ). + CATCH lcx_not_found cx_sy_conversion_no_number. + ro_settings->set_commitmsg_comment_length( lcl_settings=>c_commitmsg_comment_length_dft ). " default + ENDTRY. + + TRY. + lv_s_param_value = lcl_app=>db( )->read( + iv_type = 'SETTINGS' + iv_value = 'BODY_SIZE' ). + lv_i_param_value = lv_s_param_value. + ro_settings->set_commitmsg_body_size( lv_i_param_value ). + CATCH lcx_not_found cx_sy_conversion_no_number. + ro_settings->set_commitmsg_body_size( lcl_settings=>c_commitmsg_body_size_dft ). " default + ENDTRY. ENDMETHOD. ENDCLASS.