diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 9fae1fcc8..340e64e16 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -151,17 +151,22 @@ CONSTANTS: BEGIN OF gc_action, repo_remote_attach TYPE string VALUE 'repo_remote_attach', repo_remote_detach TYPE string VALUE 'repo_remote_detach', repo_remote_change TYPE string VALUE 'repo_remote_change', + abapgit_home TYPE string VALUE 'abapgit_home', abapgit_install TYPE string VALUE 'abapgit_install', + zip_import TYPE string VALUE 'zip_import', zip_export TYPE string VALUE 'zip_export', zip_package TYPE string VALUE 'zip_package', zip_transport TYPE string VALUE 'zip_transport', + git_pull TYPE string VALUE 'git_pull', git_reset TYPE string VALUE 'git_reset', git_branch_create TYPE string VALUE 'git_branch_create', git_branch_switch TYPE string VALUE 'git_branch_switch', git_branch_delete TYPE string VALUE 'git_branch_delete', + git_commit TYPE string VALUE 'git_commit', + db_delete TYPE string VALUE 'db_delete', db_update TYPE string VALUE 'db_update', db_display TYPE string VALUE 'db_display', diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index 1ff19666d..57aa70416 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -28,7 +28,7 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. END OF ty_page_stack. DATA: mi_cur_page TYPE REF TO lif_gui_page, - mt_stack TYPE TABLE OF ty_page_stack, + mt_stack TYPE STANDARD TABLE OF ty_page_stack, mt_assets TYPE tt_w3urls, mo_router TYPE REF TO lcl_gui_router, mo_html_viewer TYPE REF TO cl_gui_html_viewer. @@ -59,6 +59,13 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. iv_replacing TYPE abap_bool DEFAULT abap_false RAISING lcx_exception. + METHODS handle_action + IMPORTING action TYPE c + frame TYPE c OPTIONAL + getdata TYPE c OPTIONAL + postdata TYPE cnht_post_data_tab OPTIONAL + query_table TYPE cnht_query_table OPTIONAL. + ENDCLASS. "lcl_gui DEFINITION *----------------------------------------------------------------------* @@ -72,7 +79,7 @@ CLASS lcl_gui IMPLEMENTATION. ENDMETHOD. "constructor - METHOD on_event. + METHOD handle_action. DATA: lx_exception TYPE REF TO lcx_exception, li_page TYPE REF TO lif_gui_page, @@ -129,6 +136,17 @@ CLASS lcl_gui IMPLEMENTATION. " Do nothing = gc_event_state-no_more_act ENDTRY. + ENDMETHOD. "handle_action + + METHOD on_event. + + handle_action( + action = action + frame = frame + getdata = getdata + postdata = postdata + query_table = query_table ). + ENDMETHOD. "on_event METHOD back. diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap index f2842ca9c..f28481242 100644 --- a/src/zabapgit_gui_router.prog.abap +++ b/src/zabapgit_gui_router.prog.abap @@ -129,6 +129,9 @@ CLASS lcl_gui_router IMPLEMENTATION. ev_state = gc_event_state-re_render. " Repository services actions + WHEN gc_action-repo_newoffline. " New offline repo + lcl_services_repo=>new_offline( ). + ev_state = gc_event_state-re_render. WHEN gc_action-repo_refresh. " Repo refresh lcl_services_repo=>refresh( lv_key ). ev_state = gc_event_state-re_render. @@ -177,6 +180,12 @@ CLASS lcl_gui_router IMPLEMENTATION. WHEN gc_action-git_branch_create. " GIT Create new branch lcl_services_git=>create_branch( lv_key ). ev_state = gc_event_state-re_render. + WHEN gc_action-git_branch_delete. " Delete remote branch + lcl_services_git=>delete_branch( lv_key ). + ev_state = gc_event_state-re_render. + WHEN gc_action-git_branch_switch. " Switch branch + lcl_services_git=>switch_branch( lv_key ). + ev_state = gc_event_state-re_render. "Others WHEN OTHERS. diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 9f8eb033c..0e4152674 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -6,13 +6,10 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PUBLIC SECTION. - TYPES: BEGIN OF ty_commit_fields, - repo_key TYPE lcl_persistence_repo=>ty_repo-key, - username TYPE string, - email TYPE string, - comment TYPE string, - body TYPE string, - END OF ty_commit_fields. + CONSTANTS: BEGIN OF c_action, + commit_post TYPE string VALUE 'commit_post', + commit_cancel TYPE string VALUE 'commit_cancel', + END OF c_action. METHODS: constructor @@ -38,10 +35,7 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, - commit_push - IMPORTING it_postdata TYPE cnht_post_data_tab - RAISING lcx_exception. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. ENDCLASS. @@ -54,6 +48,50 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. mo_stage = io_stage. ENDMETHOD. + METHOD lif_gui_page~on_event. + + DATA: ls_commit TYPE lcl_services_git=>ty_commit_fields. + + CASE iv_action. + WHEN c_action-commit_post. + + lcl_html_action_utils=>parse_commit_request( EXPORTING it_postdata = it_postdata + IMPORTING es_fields = ls_commit ). + + lcl_services_git=>commit( is_commit = ls_commit + io_repo = mo_repo + io_stage = mo_stage ). + + ev_state = gc_event_state-go_back_to_bookmark. + + WHEN c_action-commit_cancel. + ev_state = gc_event_state-go_back. + ENDCASE. + + ENDMETHOD. + + METHOD lif_gui_page~render. + + CREATE OBJECT ro_html. + + ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( title( 'COMMIT' ) ). + + ro_html->add( '
' ). + ro_html->add( render_repo_top( + io_repo = mo_repo + iv_show_package = abap_false + iv_branch = mo_stage->get_branch_name( ) ) ). + + ro_html->add( render_menu( ) ). + ro_html->add( render_form( ) ). + ro_html->add( render_stage( ) ). + ro_html->add( '
' ). + + ro_html->add( footer( io_include_script = scripts( ) ) ). + + ENDMETHOD. "lif_gui_page~render + METHOD render_stage. DATA: lt_stage TYPE lcl_stage=>ty_stage_tt. @@ -177,40 +215,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ENDMETHOD. "render_menu - METHOD lif_gui_page~on_event. - - CASE iv_action. - WHEN 'commit_post'. - commit_push( it_postdata ). - ev_state = gc_event_state-go_back_to_bookmark. - WHEN 'commit_cancel'. - ev_state = gc_event_state-go_back. - ENDCASE. - - ENDMETHOD. - - METHOD lif_gui_page~render. - - CREATE OBJECT ro_html. - - ro_html->add( header( io_include_style = styles( ) ) ). - ro_html->add( title( 'COMMIT' ) ). - - ro_html->add( '
' ). - ro_html->add( render_repo_top( - io_repo = mo_repo - iv_show_package = abap_false - iv_branch = mo_stage->get_branch_name( ) ) ). - - ro_html->add( render_menu( ) ). - ro_html->add( render_form( ) ). - ro_html->add( render_stage( ) ). - ro_html->add( '
' ). - - ro_html->add( footer( io_include_script = scripts( ) ) ). - - ENDMETHOD. "lif_gui_page~render - METHOD styles. CREATE OBJECT ro_html. @@ -252,44 +256,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ENDMETHOD. "styles - METHOD commit_push. - - DATA: ls_fields TYPE ty_commit_fields, - ls_comment TYPE ty_comment, - lo_user TYPE REF TO lcl_persistence_user. - - - lcl_html_action_utils=>parse_commit_request( EXPORTING it_postdata = it_postdata - IMPORTING es_fields = ls_fields ). - - lo_user = lcl_app=>user( ). - lo_user->set_repo_username( iv_url = mo_repo->get_url( ) iv_username = ls_fields-username ). - lo_user->set_repo_email( iv_url = mo_repo->get_url( ) iv_email = ls_fields-email ). - - IF ls_fields-username IS INITIAL. - lcx_exception=>raise( 'empty username' ). - ELSEIF ls_fields-email IS INITIAL. - lcx_exception=>raise( 'empty email' ). - ELSEIF ls_fields-comment IS INITIAL. - lcx_exception=>raise( 'empty comment' ). - ENDIF. - - ls_comment-username = ls_fields-username. - ls_comment-email = ls_fields-email. - ls_comment-comment = ls_fields-comment. - - IF NOT ls_fields-body IS INITIAL. - CONCATENATE ls_comment-comment gc_newline ls_fields-body - INTO ls_comment-comment. - ENDIF. - - mo_repo->push( is_comment = ls_comment - io_stage = mo_stage ). - - COMMIT WORK. - - ENDMETHOD. "commit_push - METHOD scripts. CREATE OBJECT ro_html. diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 933db4a96..0e8c9ac86 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -96,15 +96,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION. lv_key = iv_getdata. CASE iv_action. - WHEN gc_action-repo_newoffline. " New offline repo - lcl_services_repo=>new_offline( ). - ev_state = gc_event_state-re_render. - WHEN gc_action-git_branch_delete. " Delete remote branch - lcl_services_git=>delete_branch( lv_key ). - ev_state = gc_event_state-re_render. - WHEN gc_action-git_branch_switch. " Switch branch - lcl_services_git=>switch_branch( lv_key ). - ev_state = gc_event_state-re_render. WHEN c_actions-show. " Change displayed repo lcl_app=>user( )->set_repo_show( lv_key ). ev_state = gc_event_state-re_render. diff --git a/src/zabapgit_services_git.prog.abap b/src/zabapgit_services_git.prog.abap index 90b29a2f9..cc24467b2 100644 --- a/src/zabapgit_services_git.prog.abap +++ b/src/zabapgit_services_git.prog.abap @@ -4,6 +4,15 @@ CLASS lcl_services_git DEFINITION FINAL. PUBLIC SECTION. + + TYPES: BEGIN OF ty_commit_fields, + repo_key TYPE lcl_persistence_repo=>ty_repo-key, + username TYPE string, + email TYPE string, + comment TYPE string, + body TYPE string, + END OF ty_commit_fields. + CLASS-METHODS pull IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception lcx_cancel. @@ -24,6 +33,12 @@ CLASS lcl_services_git DEFINITION FINAL. IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception lcx_cancel. + CLASS-METHODS commit + IMPORTING io_repo TYPE REF TO lcl_repo_online + is_commit TYPE ty_commit_fields + io_stage TYPE REF TO lcl_stage + RAISING lcx_exception lcx_cancel. + ENDCLASS. " lcl_services_git CLASS lcl_services_git IMPLEMENTATION. @@ -163,4 +178,39 @@ CLASS lcl_services_git IMPLEMENTATION. ENDMETHOD. "delete_branch + METHOD commit. + + DATA: ls_comment TYPE ty_comment, + lo_user TYPE REF TO lcl_persistence_user. + + lo_user = lcl_app=>user( ). + lo_user->set_repo_username( iv_url = io_repo->get_url( ) + iv_username = is_commit-username ). + lo_user->set_repo_email( iv_url = io_repo->get_url( ) + iv_email = is_commit-email ). + + IF is_commit-username IS INITIAL. + lcx_exception=>raise( 'Commit: empty username' ). + ELSEIF is_commit-email IS INITIAL. + lcx_exception=>raise( 'Commit: empty email' ). + ELSEIF is_commit-comment IS INITIAL. + lcx_exception=>raise( 'Commit: empty comment' ). + ENDIF. + + ls_comment-username = is_commit-username. + ls_comment-email = is_commit-email. + ls_comment-comment = is_commit-comment. + + IF NOT is_commit-body IS INITIAL. + CONCATENATE ls_comment-comment is_commit-body + INTO ls_comment-comment SEPARATED BY gc_newline. + ENDIF. + + io_repo->push( is_comment = ls_comment + io_stage = io_stage ). + + COMMIT WORK. + + ENDMETHOD. "commit + ENDCLASS. " lcl_services_git \ No newline at end of file