CLASS zcl_abapgit_gui_page_repo_sett DEFINITION PUBLIC FINAL CREATE PUBLIC INHERITING FROM zcl_abapgit_gui_page. PUBLIC SECTION. METHODS: constructor IMPORTING io_repo TYPE REF TO zcl_abapgit_repo, zif_abapgit_gui_page~on_event REDEFINITION. PROTECTED SECTION. CONSTANTS: BEGIN OF c_action, save_settings TYPE string VALUE 'save_settings', END OF c_action . DATA mo_repo TYPE REF TO zcl_abapgit_repo . METHODS render_dot_abapgit IMPORTING !io_html TYPE REF TO zcl_abapgit_html . METHODS render_local_settings IMPORTING !io_html TYPE REF TO zcl_abapgit_html . METHODS save IMPORTING !it_postdata TYPE cnht_post_data_tab RAISING zcx_abapgit_exception . METHODS save_dot_abap IMPORTING !it_post_fields TYPE tihttpnvp RAISING zcx_abapgit_exception . METHODS save_local_settings IMPORTING !it_post_fields TYPE tihttpnvp RAISING zcx_abapgit_exception . METHODS parse_post IMPORTING !it_postdata TYPE cnht_post_data_tab RETURNING VALUE(rt_post_fields) TYPE tihttpnvp . METHODS render_content REDEFINITION . PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_gui_page_repo_sett IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_control-page_title = 'REPO SETTINGS'. mo_repo = io_repo. ENDMETHOD. " constructor. METHOD parse_post. DATA lv_serialized_post_data TYPE string. CONCATENATE LINES OF it_postdata INTO lv_serialized_post_data. rt_post_fields = zcl_abapgit_html_action_utils=>parse_fields( lv_serialized_post_data ). ENDMETHOD. METHOD render_content. CREATE OBJECT ro_html. ro_html->add( '
' ). ro_html->add( '
' ). render_dot_abapgit( ro_html ). render_local_settings( ro_html ). ro_html->add( '
' ). ro_html->add( '
' ). ro_html->add( '
' ). ENDMETHOD. METHOD render_dot_abapgit. DATA: ls_dot TYPE zif_abapgit_dot_abapgit=>ty_dot_abapgit, lv_selected TYPE string, lt_folder_logic TYPE stringtab. FIELD-SYMBOLS: TYPE LINE OF stringtab. ls_dot = mo_repo->get_dot_abapgit( )->get_data( ). INSERT zif_abapgit_dot_abapgit=>c_folder_logic-full INTO TABLE lt_folder_logic. INSERT zif_abapgit_dot_abapgit=>c_folder_logic-prefix INTO TABLE lt_folder_logic. io_html->add( '

.abapgit.xml

' ). io_html->add( 'Folder logic: ' ). io_html->add( '
' ). io_html->add( 'Starting folder: ' ). io_html->add( '
' ). ENDMETHOD. METHOD render_local_settings. DATA: lv_checked TYPE string, ls_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings. ls_settings = mo_repo->get_local_settings( ). io_html->add( '

Local settings

' ). CLEAR lv_checked. IF ls_settings-write_protected = abap_true. lv_checked = | checked|. ENDIF. io_html->add( |Write protected
| ). CLEAR lv_checked. IF ls_settings-ignore_subpackages = abap_true. lv_checked = | checked|. ENDIF. io_html->add( |Ignore subpackages
| ). CLEAR lv_checked. IF ls_settings-only_local_objects = abap_true. lv_checked = | checked|. ENDIF. io_html->add( |Only local objects
| ). io_html->add( '
' ). io_html->add( 'Code inspector check variant: ' ). io_html->add( '
' ). CLEAR lv_checked. IF ls_settings-block_commit = abap_true. lv_checked = | checked|. ENDIF. io_html->add( |Block commit commit/push if code inspection has erros: | && |
| ). ENDMETHOD. METHOD save. DATA: lt_post_fields TYPE tihttpnvp. lt_post_fields = parse_post( it_postdata ). save_dot_abap( lt_post_fields ). save_local_settings( lt_post_fields ). mo_repo->refresh( ). ENDMETHOD. METHOD save_dot_abap. DATA: lo_dot TYPE REF TO zcl_abapgit_dot_abapgit, ls_post_field LIKE LINE OF it_post_fields. lo_dot = mo_repo->get_dot_abapgit( ). READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'folder_logic'. ASSERT sy-subrc = 0. lo_dot->set_folder_logic( ls_post_field-value ). READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'starting_folder'. ASSERT sy-subrc = 0. lo_dot->set_starting_folder( ls_post_field-value ). mo_repo->set_dot_abapgit( lo_dot ). ENDMETHOD. METHOD save_local_settings. DATA: ls_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings, ls_post_field LIKE LINE OF it_post_fields, lv_check_variant TYPE sci_chkv. ls_settings = mo_repo->get_local_settings( ). READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'write_protected' value = 'on'. IF sy-subrc = 0. ls_settings-write_protected = abap_true. ELSE. ls_settings-write_protected = abap_false. ENDIF. READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'ignore_subpackages' value = 'on'. IF sy-subrc = 0. ls_settings-ignore_subpackages = abap_true. ELSE. ls_settings-ignore_subpackages = abap_false. ENDIF. READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'only_local_objects' value = 'on'. IF sy-subrc = 0. ls_settings-only_local_objects = abap_true. ELSE. ls_settings-only_local_objects = abap_false. ENDIF. READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'check_variant'. ASSERT sy-subrc = 0. lv_check_variant = to_upper( ls_post_field-value ). IF ls_post_field-value IS NOT INITIAL. zcl_abapgit_code_inspector=>validate_check_variant( lv_check_variant ). ENDIF. ls_settings-code_inspector_check_variant = lv_check_variant. READ TABLE it_post_fields INTO ls_post_field WITH KEY name = 'block_commit' value = 'on'. IF sy-subrc = 0. ls_settings-block_commit = abap_true. ELSE. ls_settings-block_commit = abap_false. ENDIF. IF ls_settings-block_commit = abap_true AND ls_settings-code_inspector_check_variant IS INITIAL. zcx_abapgit_exception=>raise( |If block commit is active, a check variant has to be maintained.| ). ENDIF. mo_repo->set_local_settings( ls_settings ). ENDMETHOD. METHOD zif_abapgit_gui_page~on_event. CASE iv_action. WHEN c_action-save_settings. save( it_postdata ). ev_state = zif_abapgit_definitions=>gc_event_state-go_back. ENDCASE. ENDMETHOD. ENDCLASS.