diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 8e47b4c25..6068c745d 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.15.2'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.15.3'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index 5573f113f..e7fbd7122 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -609,19 +609,26 @@ ENDCLASS. CLASS lcl_gui_router IMPLEMENTATION. METHOD on_event. + DATA: lv_url TYPE string, lv_key TYPE lcl_persistence_repo=>ty_repo-key, ls_item TYPE ty_item. + CASE iv_action. " General routing WHEN 'main' OR 'explore' OR 'db' - OR 'background' OR 'background_run'. ei_page = get_page_by_name( iv_action ). ev_state = gc_event_state-new_page. + WHEN 'background'. + lv_key = iv_getdata. + CREATE OBJECT ei_page TYPE lcl_gui_page_background + EXPORTING + iv_key = lv_key. + ev_state = gc_event_state-new_page. WHEN 'abapgithome'. cl_gui_frontend_services=>execute( EXPORTING document = gc_abapgit_homepage EXCEPTIONS OTHERS = 1 ). diff --git a/src/zabapgit_html.prog.abap b/src/zabapgit_html.prog.abap index f407d9282..ef8bd1e94 100644 --- a/src/zabapgit_html.prog.abap +++ b/src/zabapgit_html.prog.abap @@ -497,7 +497,7 @@ CLASS lcl_html_toolbar IMPLEMENTATION. ENDIF. IF iv_sort = abap_true. - SORT mt_items BY txt ASCENDING. + SORT mt_items BY txt ASCENDING AS TEXT. ENDIF. LOOP AT mt_items ASSIGNING . diff --git a/src/zabapgit_page_background.prog.abap b/src/zabapgit_page_background.prog.abap index b1eafa895..113b09682 100644 --- a/src/zabapgit_page_background.prog.abap +++ b/src/zabapgit_page_background.prog.abap @@ -74,10 +74,15 @@ CLASS lcl_gui_page_background DEFINITION FINAL PUBLIC SECTION. METHODS: + constructor + IMPORTING + iv_key TYPE lcl_persistence_repo=>ty_repo-key, lif_gui_page~on_event REDEFINITION, lif_gui_page~render REDEFINITION. PRIVATE SECTION. + DATA: + mv_key TYPE lcl_persistence_repo=>ty_repo-key. METHODS: parse_fields @@ -94,6 +99,11 @@ ENDCLASS. CLASS lcl_gui_page_background IMPLEMENTATION. + METHOD constructor. + super->constructor( ). + mv_key = iv_key. + ENDMETHOD. + METHOD parse_fields. DEFINE _field. @@ -112,7 +122,6 @@ CLASS lcl_gui_page_background IMPLEMENTATION. lv_string = iv_getdata. " type conversion lt_fields = cl_http_utility=>if_http_utility~string_to_fields( lv_string ). - _field 'key' key. _field 'method' method. _field 'username' username. _field 'password' password. @@ -138,6 +147,7 @@ CLASS lcl_gui_page_background IMPLEMENTATION. ls_fields = parse_fields( iv_getdata ). + ls_fields-key = mv_key. CREATE OBJECT lo_persistence. @@ -147,14 +157,15 @@ CLASS lcl_gui_page_background IMPLEMENTATION. lo_persistence->modify( ls_fields ). ENDIF. + MESSAGE 'Saved' TYPE 'S'. + COMMIT WORK. ENDMETHOD. METHOD render_data. - DATA: lo_repo TYPE REF TO lcl_repo, - lo_online TYPE REF TO lcl_repo_online, + DATA: lo_repo TYPE REF TO lcl_repo_online, lo_per TYPE REF TO lcl_persistence_background, lt_per TYPE lcl_persistence_background=>tt_background, ls_per LIKE LINE OF lt_per, @@ -167,66 +178,58 @@ CLASS lcl_gui_page_background IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( '
' ). - ro_html->add( 'Listing online repositories' ) ##NO_TEXT. - ro_html->add( '

' ). CREATE OBJECT lo_per. lt_per = lo_per->list( ). - lt_list = lcl_app=>repo_srv( )->list( ). - LOOP AT lt_list INTO lo_repo. - IF lo_repo->is_offline( ) = abap_false. - lo_online ?= lo_repo. + lo_repo ?= lcl_app=>repo_srv( )->get( mv_key ). - READ TABLE lt_per INTO ls_per WITH KEY key = lo_online->get_key( ). - IF sy-subrc <> 0. - CLEAR ls_per. - ENDIF. + READ TABLE lt_per INTO ls_per WITH KEY key = lo_repo->get_key( ). + IF sy-subrc <> 0. + CLEAR ls_per. + ENDIF. - CLEAR lv_push. - CLEAR lv_pull. - CLEAR lv_nothing. - CASE ls_per-method. - WHEN lcl_persistence_background=>c_method-push. - lv_push = ' checked' ##NO_TEXT. - WHEN lcl_persistence_background=>c_method-pull. - lv_pull = ' checked' ##NO_TEXT. - WHEN OTHERS. - lv_nothing = ' checked' ##NO_TEXT. - ENDCASE. + CLEAR lv_push. + CLEAR lv_pull. + CLEAR lv_nothing. + CASE ls_per-method. + WHEN lcl_persistence_background=>c_method-push. + lv_push = ' checked' ##NO_TEXT. + WHEN lcl_persistence_background=>c_method-pull. + lv_pull = ' checked' ##NO_TEXT. + WHEN OTHERS. + lv_nothing = ' checked' ##NO_TEXT. + ENDCASE. - ro_html->add( '

' && lo_online->get_name( ) && '

' ). - ro_html->add( '
' ). - ro_html->add( '' ). - ro_html->add( 'Do nothing
' ) ##NO_TEXT. - ro_html->add( 'Automatic push
' ) ##NO_TEXT. - ro_html->add( 'Automatic pull
' ) ##NO_TEXT. - ro_html->add( '
' ). - ro_html->add( 'Authentication, optional
' ) ##NO_TEXT. - ro_html->add( '(password will be saved in clear text)
' ) ##NO_TEXT. - 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( '' ). - ro_html->add( '' ). - ro_html->add( '
Username:
Password:
' ). - ro_html->add( '' ). - ro_html->add( '
' ). - ro_html->add( '
' ). - ro_html->add( '
' ). - ENDIF. - ENDLOOP. + ro_html->add( render_repo_top( lo_repo ) ). + ro_html->add( '
' ). + ro_html->add( '
' ). + ro_html->add( 'Do nothing
' ) ##NO_TEXT. + ro_html->add( 'Automatic push
' ) ##NO_TEXT. + ro_html->add( 'Automatic pull
' ) ##NO_TEXT. + ro_html->add( '
' ). + ro_html->add( 'Authentication, optional
' ) ##NO_TEXT. + ro_html->add( '(password will be saved in clear text)
' ) ##NO_TEXT. + 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( '' ). + ro_html->add( '' ). + ro_html->add( '
Username:
Password:
' ). + ro_html->add( '' ). + ro_html->add( '
' ). + ro_html->add( '
' ). + ro_html->add( '
' ). ro_html->add( '
' ). @@ -236,6 +239,7 @@ CLASS lcl_gui_page_background IMPLEMENTATION. DATA lo_toolbar TYPE REF TO lcl_html_toolbar. + CREATE OBJECT lo_toolbar. CREATE OBJECT ro_html. diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index d27f817ba..41b682d37 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -140,7 +140,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION. lo_betasub->add( iv_txt = 'Database util' iv_act = 'db' ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Package to zip' iv_act = 'packagezip' ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Transport to zip' iv_act = 'transportzip' ) ##NO_TEXT. - lo_betasub->add( iv_txt = 'Background mode' iv_act = 'background' ) ##NO_TEXT. ro_menu->add( iv_txt = 'Clone' iv_act = c_actions-install ) ##NO_TEXT. ro_menu->add( iv_txt = 'Explore' iv_act = 'explore' ) ##NO_TEXT. @@ -148,7 +147,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. IF needs_installation( ) = abap_true. ro_menu->add( iv_txt = 'Get abapGit' iv_act = 'abapgit_installation' ) ##NO_TEXT. ENDIF. - ro_menu->add( iv_txt = 'β' io_sub = lo_betasub ). + ro_menu->add( iv_txt = 'Advanced' io_sub = lo_betasub ) ##NO_TEXT. ENDMETHOD. "build main_menu @@ -249,6 +248,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION. iv_act = |create_branch?{ lv_key }| ). lo_sub->add( iv_txt = 'Branch overview' iv_act = |branch_overview?{ lv_key }| ). + lo_sub->add( iv_txt = 'Background mode' + iv_act = |background?{ lv_key }| ). ELSE. lo_sub->add( iv_txt = 'Export & Commit' iv_act = |files_commit?{ lv_key }| diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index a8d2cd706..840881d0d 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -624,13 +624,18 @@ CLASS lcl_persistence_background IMPLEMENTATION. ENDMETHOD. METHOD modify. + + ASSERT NOT is_data-key IS INITIAL. + mo_db->modify( iv_type = c_type iv_value = is_data-key iv_data = to_xml( is_data ) ). + ENDMETHOD. METHOD delete. + TRY. mo_db->read( iv_type = c_type iv_value = iv_key ). @@ -640,6 +645,7 @@ CLASS lcl_persistence_background IMPLEMENTATION. mo_db->delete( iv_type = c_type iv_value = iv_key ). + ENDMETHOD. METHOD from_xml.