mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Refactoring in settings-remote (WIP) (#6300)
Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
parent
27454dccfb
commit
e2b2f1712d
|
@ -118,7 +118,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD back.
|
||||
|
@ -180,6 +180,8 @@ CLASS zcl_abapgit_gui IMPLEMENTATION.
|
|||
IF ls_handled-state = c_event_state-re_render. " soft exit, probably popup
|
||||
render( ).
|
||||
rv_handled = abap_true.
|
||||
ELSEIF ls_handled-state = c_event_state-no_more_act. " soft exit, probably GUI popup
|
||||
rv_handled = abap_true.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ CLASS zcl_abapgit_html DEFINITION
|
|||
!iv_initial_chunk TYPE any OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ri_instance) TYPE REF TO zif_abapgit_html.
|
||||
|
||||
CLASS-METHODS icon
|
||||
IMPORTING
|
||||
!iv_name TYPE string
|
||||
|
@ -58,6 +59,7 @@ CLASS zcl_abapgit_html DEFINITION
|
|||
CLASS-DATA go_single_tags_re TYPE REF TO cl_abap_regex .
|
||||
DATA mt_buffer TYPE string_table .
|
||||
CLASS-DATA gv_spaces TYPE string .
|
||||
CLASS-DATA gv_debug_mode TYPE abap_bool .
|
||||
|
||||
METHODS indent_line
|
||||
CHANGING
|
||||
|
@ -73,7 +75,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_html IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_HTML IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD checkbox.
|
||||
|
@ -95,6 +97,9 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD class_constructor.
|
||||
|
||||
DATA lv_mode TYPE tabname.
|
||||
|
||||
CREATE OBJECT go_single_tags_re
|
||||
EXPORTING
|
||||
pattern = '<(AREA|BASE|BR|COL|COMMAND|EMBED|HR|IMG|INPUT|LINK|META|PARAM|SOURCE|!)'
|
||||
|
@ -104,6 +109,9 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
|||
val = ` `
|
||||
occ = 200 ).
|
||||
|
||||
GET PARAMETER ID 'DBT' FIELD lv_mode.
|
||||
gv_debug_mode = boolc( lv_mode = 'HREF' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -294,7 +302,6 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
|||
lv_act TYPE string,
|
||||
lv_style TYPE string,
|
||||
lv_title TYPE string.
|
||||
DATA lv_mode TYPE tabname.
|
||||
|
||||
lv_class = iv_class.
|
||||
|
||||
|
@ -348,8 +355,7 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
" Debug option to display href-link on hover
|
||||
GET PARAMETER ID 'DBT' FIELD lv_mode.
|
||||
IF lv_mode = 'HREF'.
|
||||
IF gv_debug_mode = abap_true.
|
||||
lv_title = | title="{ escape(
|
||||
val = lv_href
|
||||
format = cl_abap_format=>e_html_attr ) }"|.
|
||||
|
@ -364,6 +370,8 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
|||
METHOD zif_abapgit_html~add.
|
||||
|
||||
DATA: lv_type TYPE c,
|
||||
li_renderable TYPE REF TO zif_abapgit_gui_renderable,
|
||||
lx_error TYPE REF TO zcx_abapgit_exception,
|
||||
lo_html TYPE REF TO zcl_abapgit_html.
|
||||
|
||||
FIELD-SYMBOLS: <lt_tab> TYPE string_table.
|
||||
|
@ -381,7 +389,14 @@ CLASS zcl_abapgit_html IMPLEMENTATION.
|
|||
TRY.
|
||||
lo_html ?= ig_chunk.
|
||||
CATCH cx_sy_move_cast_error.
|
||||
ASSERT 1 = 0. " Dev mistake
|
||||
TRY.
|
||||
li_renderable ?= ig_chunk.
|
||||
lo_html ?= li_renderable->render( ).
|
||||
CATCH cx_sy_move_cast_error.
|
||||
ASSERT 1 = 0. " Dev mistake
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
lo_html ?= create( |<span class="error">Render error: { lx_error->get_text( ) }</span>| ).
|
||||
ENDTRY.
|
||||
ENDTRY.
|
||||
APPEND LINES OF lo_html->mt_buffer TO mt_buffer.
|
||||
WHEN OTHERS.
|
||||
|
|
|
@ -1,3 +1,23 @@
|
|||
CLASS lcl_good_renderable DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES zif_abapgit_gui_renderable.
|
||||
ENDCLASS.
|
||||
CLASS lcl_good_renderable IMPLEMENTATION.
|
||||
METHOD zif_abapgit_gui_renderable~render.
|
||||
ri_html = zcl_abapgit_html=>create( 'Hello' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_bad_renderable DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES zif_abapgit_gui_renderable.
|
||||
ENDCLASS.
|
||||
CLASS lcl_bad_renderable IMPLEMENTATION.
|
||||
METHOD zif_abapgit_gui_renderable~render.
|
||||
zcx_abapgit_exception=>raise( 'Fail!' ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_html DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
@ -5,6 +25,7 @@ CLASS ltcl_html DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|||
|
||||
METHODS:
|
||||
wrap FOR TESTING RAISING zcx_abapgit_exception,
|
||||
add_renderable FOR TESTING RAISING zcx_abapgit_exception,
|
||||
td FOR TESTING RAISING zcx_abapgit_exception,
|
||||
th FOR TESTING RAISING zcx_abapgit_exception,
|
||||
wrap_ii FOR TESTING RAISING zcx_abapgit_exception,
|
||||
|
@ -200,4 +221,22 @@ CLASS ltcl_html IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD add_renderable.
|
||||
|
||||
DATA lo_good TYPE REF TO lcl_good_renderable.
|
||||
DATA lo_bad TYPE REF TO lcl_bad_renderable.
|
||||
|
||||
CREATE OBJECT lo_good.
|
||||
CREATE OBJECT lo_bad.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = zcl_abapgit_html=>create( lo_good )->render( )
|
||||
exp = 'Hello' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_char_cp(
|
||||
act = zcl_abapgit_html=>create( lo_bad )->render( )
|
||||
exp = '<span*Fail!*' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -25,19 +25,23 @@ INTERFACE zif_abapgit_html PUBLIC.
|
|||
iv_title TYPE string
|
||||
RETURNING
|
||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||
|
||||
METHODS add
|
||||
IMPORTING
|
||||
!ig_chunk TYPE any
|
||||
RETURNING
|
||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||
|
||||
METHODS render
|
||||
IMPORTING
|
||||
!iv_no_indent_jscss TYPE abap_bool OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_html) TYPE string .
|
||||
|
||||
METHODS is_empty
|
||||
RETURNING
|
||||
VALUE(rv_yes) TYPE abap_bool .
|
||||
|
||||
METHODS add_a
|
||||
IMPORTING
|
||||
!iv_txt TYPE string
|
||||
|
@ -51,12 +55,14 @@ INTERFACE zif_abapgit_html PUBLIC.
|
|||
!iv_title TYPE string OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||
|
||||
METHODS add_checkbox
|
||||
IMPORTING
|
||||
iv_id TYPE string
|
||||
iv_checked TYPE abap_bool OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ri_self) TYPE REF TO zif_abapgit_html.
|
||||
|
||||
METHODS a
|
||||
IMPORTING
|
||||
!iv_txt TYPE string
|
||||
|
@ -70,6 +76,7 @@ INTERFACE zif_abapgit_html PUBLIC.
|
|||
!iv_title TYPE string OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_str) TYPE string .
|
||||
|
||||
METHODS icon
|
||||
IMPORTING
|
||||
!iv_name TYPE string
|
||||
|
|
|
@ -5,14 +5,21 @@ CLASS zcl_abapgit_html_form_utils DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!io_form TYPE REF TO zcl_abapgit_html_form .
|
||||
CLASS-METHODS create
|
||||
IMPORTING
|
||||
!io_form TYPE REF TO zcl_abapgit_html_form
|
||||
RETURNING
|
||||
VALUE(ro_form_util) TYPE REF TO zcl_abapgit_html_form_utils .
|
||||
CLASS-METHODS is_dirty
|
||||
IMPORTING
|
||||
!io_form_data TYPE REF TO zcl_abapgit_string_map
|
||||
!io_compare_with TYPE REF TO zcl_abapgit_string_map
|
||||
RETURNING
|
||||
VALUE(rv_dirty) TYPE abap_bool .
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!io_form TYPE REF TO zcl_abapgit_html_form .
|
||||
METHODS normalize
|
||||
IMPORTING
|
||||
!io_form_data TYPE REF TO zcl_abapgit_string_map
|
||||
|
@ -39,27 +46,24 @@ CLASS zcl_abapgit_html_form_utils DEFINITION
|
|||
!io_form_data TYPE REF TO zcl_abapgit_string_map .
|
||||
METHODS exit
|
||||
IMPORTING
|
||||
!io_form_data TYPE REF TO zcl_abapgit_string_map
|
||||
!io_form_data TYPE REF TO zcl_abapgit_string_map
|
||||
!io_check_changes_versus TYPE REF TO zcl_abapgit_string_map OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rv_state) TYPE i
|
||||
VALUE(rv_state) TYPE i
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
DATA mo_form TYPE REF TO zcl_abapgit_html_form .
|
||||
DATA mo_form TYPE REF TO zcl_abapgit_html_form .
|
||||
DATA mo_form_data TYPE REF TO zcl_abapgit_string_map .
|
||||
|
||||
METHODS is_dirty
|
||||
IMPORTING
|
||||
!io_form_data TYPE REF TO zcl_abapgit_string_map
|
||||
RETURNING
|
||||
VALUE(rv_dirty) TYPE abap_bool .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_html_form_utils IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_HTML_FORM_UTILS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -77,8 +81,17 @@ CLASS zcl_abapgit_html_form_utils IMPLEMENTATION.
|
|||
METHOD exit.
|
||||
|
||||
DATA lv_answer TYPE c LENGTH 1.
|
||||
DATA lo_compare_with LIKE io_check_changes_versus.
|
||||
|
||||
IF is_dirty( io_form_data ) = abap_true.
|
||||
lo_compare_with = io_check_changes_versus.
|
||||
IF lo_compare_with IS NOT BOUND.
|
||||
" TODO: remove this if and make io_check_changes_versus mandatory once all forms are converted
|
||||
lo_compare_with = mo_form_data.
|
||||
ENDIF.
|
||||
|
||||
IF is_dirty(
|
||||
io_form_data = io_form_data
|
||||
io_compare_with = lo_compare_with ) = abap_true.
|
||||
lv_answer = zcl_abapgit_ui_factory=>get_popups( )->popup_to_confirm(
|
||||
iv_titlebar = 'abapGit - Unsaved Changes'
|
||||
iv_text_question = 'There are unsaved changes. Do you want to exit the form?'
|
||||
|
@ -97,7 +110,7 @@ CLASS zcl_abapgit_html_form_utils IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD is_dirty.
|
||||
rv_dirty = boolc( io_form_data->mt_entries <> mo_form_data->mt_entries ).
|
||||
rv_dirty = boolc( io_form_data->mt_entries <> io_compare_with->mt_entries ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -74,22 +74,15 @@ CLASS zcl_abapgit_gui_page_sett_remo DEFINITION
|
|||
END OF c_popup.
|
||||
|
||||
DATA mo_repo TYPE REF TO zcl_abapgit_repo .
|
||||
DATA ms_settings_old TYPE ty_remote_settings.
|
||||
DATA ms_settings_snapshot TYPE ty_remote_settings.
|
||||
DATA mo_form TYPE REF TO zcl_abapgit_html_form .
|
||||
DATA mo_form_data TYPE REF TO zcl_abapgit_string_map .
|
||||
DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils .
|
||||
DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map .
|
||||
DATA mv_refresh_on_back TYPE abap_bool.
|
||||
DATA mv_offline_switch_saved_url TYPE string.
|
||||
|
||||
DATA mo_popup_picklist TYPE REF TO zcl_abapgit_gui_picklist.
|
||||
|
||||
METHODS init
|
||||
IMPORTING
|
||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS get_remote_settings_from_repo
|
||||
IMPORTING
|
||||
io_repo TYPE REF TO zcl_abapgit_repo
|
||||
|
@ -108,18 +101,15 @@ CLASS zcl_abapgit_gui_page_sett_remo DEFINITION
|
|||
|
||||
METHODS get_form_schema
|
||||
IMPORTING
|
||||
is_settings TYPE ty_remote_settings
|
||||
io_form_data TYPE REF TO zcl_abapgit_string_map OPTIONAL
|
||||
io_existing_form_data TYPE REF TO zcl_abapgit_string_map OPTIONAL
|
||||
RETURNING
|
||||
VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS initialize_form_data
|
||||
IMPORTING
|
||||
is_settings TYPE ty_remote_settings
|
||||
io_form_data TYPE REF TO zcl_abapgit_string_map
|
||||
io_form_util TYPE REF TO zcl_abapgit_html_form_utils
|
||||
RETURNING
|
||||
VALUE(ro_form_data) TYPE REF TO zcl_abapgit_string_map
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
|
@ -190,11 +180,17 @@ CLASS zcl_abapgit_gui_page_sett_remo DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
METHODS render_content
|
||||
RETURNING
|
||||
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_GUI_PAGE_SETT_REMO IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD check_protection.
|
||||
|
@ -358,15 +354,11 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
METHOD constructor.
|
||||
|
||||
super->constructor( ).
|
||||
init( io_repo ).
|
||||
mo_repo = io_repo.
|
||||
ms_settings_snapshot = get_remote_settings_from_repo( mo_repo ).
|
||||
mo_form = get_form_schema( ).
|
||||
mo_form_data = initialize_form_data( ).
|
||||
CREATE OBJECT mo_validation_log.
|
||||
CREATE OBJECT mo_form_data.
|
||||
|
||||
mo_form = get_form_schema( ms_settings_old ).
|
||||
mo_form_util = zcl_abapgit_html_form_utils=>create( mo_form ).
|
||||
initialize_form_data( io_form_data = mo_form_data
|
||||
is_settings = ms_settings_old
|
||||
io_form_util = mo_form_util ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -400,14 +392,14 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
lv_offline TYPE abap_bool,
|
||||
lv_head_type TYPE ty_head_type.
|
||||
|
||||
IF io_form_data IS BOUND AND io_form_data->is_empty( ) = abap_false.
|
||||
lv_offline = io_form_data->get( c_id-offline ).
|
||||
IF io_existing_form_data IS BOUND AND io_existing_form_data->is_empty( ) = abap_false.
|
||||
lv_offline = io_existing_form_data->get( c_id-offline ).
|
||||
IF lv_offline = abap_false.
|
||||
lv_head_type = io_form_data->get( c_id-head_type ).
|
||||
lv_head_type = io_existing_form_data->get( c_id-head_type ).
|
||||
ENDIF.
|
||||
ELSE.
|
||||
lv_offline = is_settings-offline.
|
||||
lv_head_type = is_settings-head_type.
|
||||
lv_offline = ms_settings_snapshot-offline.
|
||||
lv_head_type = ms_settings_snapshot-head_type.
|
||||
ENDIF.
|
||||
|
||||
ro_form = zcl_abapgit_html_form=>create(
|
||||
|
@ -471,8 +463,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
iv_label = 'Branch'
|
||||
iv_required = abap_true
|
||||
iv_side_action = c_event-choose_branch ).
|
||||
ELSE.
|
||||
ro_form->hidden( c_id-branch ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_head_type = c_head_types-tag.
|
||||
|
@ -481,8 +471,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
iv_label = 'Tag'
|
||||
iv_required = abap_true
|
||||
iv_side_action = c_event-choose_tag ).
|
||||
ELSE.
|
||||
ro_form->hidden( c_id-tag ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_head_type = c_head_types-commit.
|
||||
|
@ -493,8 +481,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
iv_min = 40
|
||||
iv_max = 40
|
||||
iv_side_action = c_event-choose_commit ).
|
||||
ELSE.
|
||||
ro_form->hidden( c_id-commit ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_head_type = c_head_types-pull_request.
|
||||
|
@ -503,16 +489,8 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
iv_label = 'Pull Request'
|
||||
iv_required = abap_true
|
||||
iv_side_action = c_event-choose_pull_request ).
|
||||
ELSE.
|
||||
ro_form->hidden( c_id-pull_request ).
|
||||
ENDIF.
|
||||
|
||||
ELSE.
|
||||
ro_form->hidden( c_id-head_type ).
|
||||
ro_form->hidden( c_id-branch ).
|
||||
ro_form->hidden( c_id-tag ).
|
||||
ro_form->hidden( c_id-commit ).
|
||||
ro_form->hidden( c_id-pull_request ).
|
||||
ENDIF.
|
||||
|
||||
ro_form->command(
|
||||
|
@ -530,6 +508,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD get_remote_settings_from_form.
|
||||
|
||||
rs_settings-url = io_form_data->get( c_id-url ).
|
||||
rs_settings-offline = io_form_data->get( c_id-offline ).
|
||||
|
||||
|
@ -548,10 +527,12 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
rs_settings-pull_request = io_form_data->get( c_id-pull_request ).
|
||||
ENDCASE.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_remote_settings_from_repo.
|
||||
|
||||
DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online,
|
||||
lo_repo_offline TYPE REF TO zcl_abapgit_repo_offline,
|
||||
lv_branch TYPE ty_remote_settings-branch.
|
||||
|
@ -601,6 +582,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
rs_settings-url = lo_repo_offline->get_name( ).
|
||||
rs_settings-offline = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -627,69 +609,73 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD init.
|
||||
mo_repo = io_repo.
|
||||
ms_settings_old = get_remote_settings_from_repo( mo_repo ).
|
||||
FREE mo_form_data.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD initialize_form_data.
|
||||
|
||||
DATA:
|
||||
lv_type TYPE string,
|
||||
lv_url TYPE ty_remote_settings-url,
|
||||
lv_head TYPE string.
|
||||
|
||||
lv_type = 'Online repository'.
|
||||
lv_url = is_settings-url.
|
||||
CREATE OBJECT ro_form_data.
|
||||
|
||||
IF is_settings-offline = abap_true.
|
||||
IF ms_settings_snapshot-offline = abap_true.
|
||||
lv_type = 'Offline repository'.
|
||||
ELSE.
|
||||
lv_type = 'Online repository'.
|
||||
ENDIF.
|
||||
|
||||
io_form_data->set(
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-offline
|
||||
iv_val = is_settings-offline ).
|
||||
|
||||
io_form_data->set(
|
||||
iv_val = ms_settings_snapshot-offline ).
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-repo_type
|
||||
iv_val = lv_type ).
|
||||
io_form_data->set(
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-url
|
||||
iv_val = lv_url ).
|
||||
iv_val = ms_settings_snapshot-url ).
|
||||
|
||||
IF is_settings-offline = abap_false.
|
||||
io_form_data->set(
|
||||
IF ms_settings_snapshot-offline = abap_false.
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-head_type
|
||||
iv_val = is_settings-head_type ).
|
||||
iv_val = ms_settings_snapshot-head_type ).
|
||||
|
||||
" When pull request is selected the previously selected branch/tag is also loaded to be able to switch back to it
|
||||
lv_head = is_settings-branch.
|
||||
REPLACE FIRST OCCURRENCE OF zif_abapgit_definitions=>c_git_branch-heads_prefix IN lv_head WITH space.
|
||||
CONDENSE lv_head.
|
||||
io_form_data->set(
|
||||
lv_head = zcl_abapgit_git_branch_list=>get_display_name( ms_settings_snapshot-branch ).
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-branch
|
||||
iv_val = lv_head ).
|
||||
|
||||
lv_head = is_settings-tag.
|
||||
REPLACE FIRST OCCURRENCE OF zif_abapgit_definitions=>c_git_branch-heads_prefix IN lv_head WITH space.
|
||||
CONDENSE lv_head.
|
||||
io_form_data->set(
|
||||
lv_head = zcl_abapgit_git_branch_list=>get_display_name( ms_settings_snapshot-tag ).
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-tag
|
||||
iv_val = lv_head ).
|
||||
|
||||
io_form_data->set(
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-commit
|
||||
iv_val = is_settings-commit ).
|
||||
iv_val = ms_settings_snapshot-commit ).
|
||||
|
||||
io_form_data->set(
|
||||
ro_form_data->set(
|
||||
iv_key = c_id-pull_request
|
||||
iv_val = is_settings-pull_request ).
|
||||
iv_val = ms_settings_snapshot-pull_request ).
|
||||
ENDIF.
|
||||
|
||||
" Set for is_dirty check
|
||||
io_form_util->set_data( io_form_data ).
|
||||
zcl_abapgit_html_form_utils=>create( mo_form )->set_data( ro_form_data ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_content.
|
||||
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_commit = abap_false
|
||||
iv_interactive_branch = abap_false ) ).
|
||||
|
||||
ri_html->add( mo_form->render(
|
||||
io_values = mo_form_data
|
||||
io_validation_log = mo_validation_log ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -704,7 +690,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
ls_settings_new = get_remote_settings_from_form( mo_form_data ).
|
||||
|
||||
" Switch online / offline
|
||||
IF ls_settings_new-offline <> ms_settings_old-offline.
|
||||
IF ls_settings_new-offline <> ms_settings_snapshot-offline.
|
||||
" Remember key, switch, retrieve new instance (todo, refactor #2244)
|
||||
mo_repo->switch_repo_type( ls_settings_new-offline ).
|
||||
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ).
|
||||
|
@ -748,13 +734,13 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
MESSAGE 'Settings succesfully saved' TYPE 'S'.
|
||||
|
||||
mv_refresh_on_back = abap_true.
|
||||
init( mo_repo ).
|
||||
FREE mo_form_data.
|
||||
ms_settings_snapshot = get_remote_settings_from_repo( mo_repo ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD switch_online_offline.
|
||||
|
||||
DATA: lv_offline_new TYPE abap_bool,
|
||||
lv_url TYPE ty_remote_settings-url,
|
||||
lv_branch TYPE ty_remote_settings-branch.
|
||||
|
@ -798,6 +784,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
ENDTRY.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -806,9 +793,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
DATA lo_repo TYPE REF TO zcl_abapgit_repo_online.
|
||||
|
||||
check_protection( ).
|
||||
|
||||
lo_repo ?= mo_repo.
|
||||
|
||||
lo_repo->select_branch( iv_name ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -869,7 +854,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
lv_pull_request TYPE ty_remote_settings-pull_request,
|
||||
lv_commit TYPE ty_remote_settings-commit.
|
||||
|
||||
ro_validation_log = mo_form_util->validate( io_form_data ).
|
||||
ro_validation_log = zcl_abapgit_html_form_utils=>create( mo_form )->validate( io_form_data ).
|
||||
lv_offline = io_form_data->get( c_id-offline ).
|
||||
lv_url = io_form_data->get( c_id-url ).
|
||||
|
||||
|
@ -951,16 +936,12 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
|
||||
DATA:
|
||||
lo_form_data_raw TYPE REF TO zcl_abapgit_string_map,
|
||||
lv_url TYPE ty_remote_settings-url,
|
||||
lv_branch TYPE ty_remote_settings-branch,
|
||||
lv_tag TYPE ty_remote_settings-tag,
|
||||
lv_commit TYPE ty_remote_settings-commit.
|
||||
lv_url TYPE ty_remote_settings-url,
|
||||
lv_branch TYPE ty_remote_settings-branch,
|
||||
lv_tag TYPE ty_remote_settings-tag,
|
||||
lv_commit TYPE ty_remote_settings-commit.
|
||||
|
||||
lo_form_data_raw = ii_event->form_data( ).
|
||||
IF lo_form_data_raw->is_empty( ) = abap_false. " If form-related action
|
||||
mo_form_data = mo_form_util->normalize( lo_form_data_raw ).
|
||||
ENDIF.
|
||||
mo_form_data->merge( zcl_abapgit_html_form_utils=>create( mo_form )->normalize( ii_event->form_data( ) ) ).
|
||||
|
||||
CASE ii_event->mv_action.
|
||||
WHEN zif_abapgit_definitions=>c_action-go_back.
|
||||
|
@ -969,7 +950,9 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
mo_repo->refresh( ).
|
||||
ENDIF.
|
||||
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back_to_bookmark.
|
||||
rs_handled-state = zcl_abapgit_html_form_utils=>create( mo_form )->exit(
|
||||
io_form_data = mo_form_data
|
||||
io_check_changes_versus = initialize_form_data( ) ).
|
||||
|
||||
WHEN c_event-choose_url.
|
||||
lv_url = choose_url( ).
|
||||
|
@ -1037,22 +1020,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
|
||||
" If staying on form, initialize it with current settings
|
||||
IF rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render AND mo_popup_picklist IS NOT BOUND.
|
||||
" TODO refactor: same as in constructor
|
||||
mo_form = get_form_schema(
|
||||
is_settings = ms_settings_old
|
||||
io_form_data = mo_form_data ).
|
||||
mo_form_util = zcl_abapgit_html_form_utils=>create( mo_form ).
|
||||
|
||||
IF mo_form_data IS NOT BOUND.
|
||||
CREATE OBJECT mo_form_data.
|
||||
initialize_form_data(
|
||||
io_form_data = mo_form_data
|
||||
is_settings = ms_settings_old
|
||||
io_form_util = mo_form_util ).
|
||||
ENDIF.
|
||||
" Switching tabs must change the form layout
|
||||
mo_form = get_form_schema( io_existing_form_data = mo_form_data ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -1070,9 +1041,9 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
lv_head_type = mo_form_data->get( c_id-head_type ).
|
||||
ENDIF.
|
||||
ELSE.
|
||||
lv_offline = ms_settings_old-offline.
|
||||
lv_offline = ms_settings_snapshot-offline.
|
||||
IF lv_offline = abap_false.
|
||||
lv_head_type = ms_settings_old-head_type.
|
||||
lv_head_type = ms_settings_snapshot-head_type.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
|
@ -1133,25 +1104,16 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
ri_html->add( `<div class="repo">` ). " TODO own setting frame CSS class
|
||||
|
||||
ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_commit = abap_false
|
||||
iv_interactive_branch = abap_false ) ).
|
||||
|
||||
ri_html->add( mo_form->render(
|
||||
io_values = mo_form_data
|
||||
io_validation_log = mo_validation_log ) ).
|
||||
|
||||
ri_html->add( `</div>` ).
|
||||
ri_html->wrap(
|
||||
iv_tag = 'div'
|
||||
iv_class = 'repo' " It's OK because it's repo settings ... for now
|
||||
ii_content = render_content( ) ).
|
||||
|
||||
IF mo_popup_picklist IS NOT BOUND OR mo_popup_picklist->is_in_page( ) = abap_false.
|
||||
register_handlers( ).
|
||||
ELSEIF mo_popup_picklist->is_in_page( ) = abap_true.
|
||||
" Block usual page events if the popup is an in-page popup
|
||||
ri_html->add( zcl_abapgit_gui_in_page_modal=>create( mo_popup_picklist
|
||||
)->zif_abapgit_gui_renderable~render( ) ).
|
||||
ri_html->add( zcl_abapgit_gui_in_page_modal=>create( mo_popup_picklist ) ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -66,6 +66,14 @@ CLASS zcl_abapgit_string_map DEFINITION
|
|||
RETURNING
|
||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map .
|
||||
METHODS freeze .
|
||||
METHODS merge
|
||||
IMPORTING
|
||||
!io_string_map TYPE REF TO zcl_abapgit_string_map
|
||||
RETURNING
|
||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
DATA mv_read_only TYPE abap_bool.
|
||||
|
@ -148,6 +156,19 @@ CLASS ZCL_ABAPGIT_STRING_MAP IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD merge.
|
||||
|
||||
FIELD-SYMBOLS <ls_entry> LIKE LINE OF mt_entries.
|
||||
|
||||
LOOP AT io_string_map->mt_entries ASSIGNING <ls_entry>.
|
||||
set(
|
||||
iv_key = <ls_entry>-k
|
||||
iv_val = <ls_entry>-v ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set.
|
||||
|
||||
DATA lv_key LIKE iv_key.
|
||||
|
|
Loading…
Reference in New Issue
Block a user