mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
#238, moved page_commit events to router
This commit is contained in:
parent
12810c65a6
commit
3f11b0a8d8
|
@ -13180,6 +13180,15 @@ ENDCLASS.
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_html_action_utils DEFINITION FINAL.
|
CLASS lcl_html_action_utils DEFINITION FINAL.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
TYPES: BEGIN OF ty_commit_fields, "TODO refactor ! Move to normal place
|
||||||
|
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 jump_encode
|
CLASS-METHODS jump_encode
|
||||||
IMPORTING iv_obj_type TYPE tadir-object
|
IMPORTING iv_obj_type TYPE tadir-object
|
||||||
iv_obj_name TYPE tadir-obj_name
|
iv_obj_name TYPE tadir-obj_name
|
||||||
|
@ -13210,6 +13219,10 @@ CLASS lcl_html_action_utils DEFINITION FINAL.
|
||||||
IMPORTING iv_string TYPE clike
|
IMPORTING iv_string TYPE clike
|
||||||
RETURNING VALUE(rs_key) TYPE lcl_persistence_db=>ty_content.
|
RETURNING VALUE(rs_key) TYPE lcl_persistence_db=>ty_content.
|
||||||
|
|
||||||
|
CLASS-METHODS parse_commit_request
|
||||||
|
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||||
|
RETURNING VALUE(rs_fields) TYPE ty_commit_fields.
|
||||||
|
|
||||||
ENDCLASS. "lcl_html_action_utils DEFINITION
|
ENDCLASS. "lcl_html_action_utils DEFINITION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -13361,6 +13374,42 @@ CLASS lcl_html_action_utils IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "dbkey_decode
|
ENDMETHOD. "dbkey_decode
|
||||||
|
|
||||||
|
METHOD parse_commit_request.
|
||||||
|
|
||||||
|
CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
|
||||||
|
|
||||||
|
DATA: lv_string TYPE string,
|
||||||
|
lt_fields TYPE tihttpnvp.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
||||||
|
|
||||||
|
|
||||||
|
CONCATENATE LINES OF it_postdata INTO lv_string.
|
||||||
|
|
||||||
|
REPLACE ALL OCCURRENCES OF gc_newline IN lv_string WITH lc_replace.
|
||||||
|
|
||||||
|
lt_fields = cl_http_utility=>if_http_utility~string_to_fields( lv_string ).
|
||||||
|
|
||||||
|
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'username' ##NO_TEXT.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
rs_fields-username = <ls_field>-value.
|
||||||
|
|
||||||
|
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'email' ##NO_TEXT.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
rs_fields-email = <ls_field>-value.
|
||||||
|
|
||||||
|
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'comment' ##NO_TEXT.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
rs_fields-comment = <ls_field>-value.
|
||||||
|
|
||||||
|
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'body' ##NO_TEXT.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
rs_fields-body = <ls_field>-value.
|
||||||
|
REPLACE ALL OCCURRENCES OF lc_replace IN rs_fields-body WITH gc_newline.
|
||||||
|
|
||||||
|
ENDMETHOD. "parse_commit_request
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS. "lcl_html_action_utils IMPLEMENTATION
|
ENDCLASS. "lcl_html_action_utils IMPLEMENTATION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -16394,6 +16443,10 @@ CLASS lcl_gui_router DEFINITION FINAL.
|
||||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
METHODS commit_push
|
||||||
|
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -19959,32 +20012,12 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
||||||
IMPORTING iv_repo_key TYPE lcl_persistence_repo=>ty_repo-key
|
IMPORTING iv_repo_key TYPE lcl_persistence_repo=>ty_repo-key
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
METHODS lif_gui_page~on_event REDEFINITION.
|
|
||||||
METHODS lif_gui_page~render REDEFINITION.
|
METHODS lif_gui_page~render REDEFINITION.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||||
mo_stage TYPE REF TO lcl_stage.
|
mo_stage TYPE REF TO lcl_stage.
|
||||||
|
|
||||||
TYPES: BEGIN OF ty_fields,
|
|
||||||
username TYPE string,
|
|
||||||
email TYPE string,
|
|
||||||
comment TYPE string,
|
|
||||||
body TYPE string,
|
|
||||||
END OF ty_fields.
|
|
||||||
|
|
||||||
METHODS push
|
|
||||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
|
||||||
RAISING lcx_exception.
|
|
||||||
|
|
||||||
METHODS update_userdata
|
|
||||||
IMPORTING is_fields TYPE ty_fields
|
|
||||||
RAISING lcx_exception.
|
|
||||||
|
|
||||||
METHODS parse
|
|
||||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
|
||||||
RETURNING VALUE(rs_fields) TYPE ty_fields.
|
|
||||||
|
|
||||||
METHODS render_menu
|
METHODS render_menu
|
||||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||||
|
|
||||||
|
@ -20013,101 +20046,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
||||||
mo_stage = lcl_app=>repo_srv( )->get_stage( iv_repo_key ).
|
mo_stage = lcl_app=>repo_srv( )->get_stage( iv_repo_key ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD update_userdata.
|
|
||||||
|
|
||||||
DATA: lo_user TYPE REF TO lcl_persistence_user.
|
|
||||||
|
|
||||||
lo_user = lcl_app=>user( ).
|
|
||||||
lo_user->set_username( is_fields-username ).
|
|
||||||
lo_user->set_email( is_fields-email ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD lif_gui_page~on_event.
|
|
||||||
|
|
||||||
CASE iv_action.
|
|
||||||
WHEN 'commit_post'.
|
|
||||||
push( it_postdata ).
|
|
||||||
"lcl_app=>repo_srv( )->free_stage( ??? ).
|
|
||||||
* MESSAGE 'POST PUSHED' TYPE 'S' DISPLAY LIKE 'S'.
|
|
||||||
rv_state = gc_event_state-go_back_to_bookmark.
|
|
||||||
WHEN 'commit_cancel'.
|
|
||||||
rv_state = gc_event_state-go_back.
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD push.
|
|
||||||
|
|
||||||
DATA: ls_fields TYPE ty_fields,
|
|
||||||
ls_comment TYPE ty_comment.
|
|
||||||
|
|
||||||
|
|
||||||
ls_fields = parse( it_postdata ).
|
|
||||||
|
|
||||||
update_userdata( ls_fields ).
|
|
||||||
|
|
||||||
IF ls_fields-username IS INITIAL.
|
|
||||||
_raise 'empty username'.
|
|
||||||
ENDIF.
|
|
||||||
IF ls_fields-email IS INITIAL.
|
|
||||||
_raise 'empty email'.
|
|
||||||
ENDIF.
|
|
||||||
IF ls_fields-comment IS INITIAL.
|
|
||||||
_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.
|
|
||||||
|
|
||||||
METHOD parse.
|
|
||||||
|
|
||||||
CONSTANTS: lc_replace TYPE string VALUE '<<new>>'.
|
|
||||||
|
|
||||||
DATA: lv_string TYPE string,
|
|
||||||
lt_fields TYPE tihttpnvp.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
|
||||||
|
|
||||||
|
|
||||||
CONCATENATE LINES OF it_postdata INTO lv_string.
|
|
||||||
|
|
||||||
REPLACE ALL OCCURRENCES OF gc_newline IN lv_string WITH lc_replace.
|
|
||||||
|
|
||||||
lt_fields = cl_http_utility=>if_http_utility~string_to_fields( lv_string ).
|
|
||||||
|
|
||||||
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'username' ##NO_TEXT.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
rs_fields-username = <ls_field>-value.
|
|
||||||
|
|
||||||
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'email' ##NO_TEXT.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
rs_fields-email = <ls_field>-value.
|
|
||||||
|
|
||||||
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'comment' ##NO_TEXT.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
rs_fields-comment = <ls_field>-value.
|
|
||||||
|
|
||||||
READ TABLE lt_fields ASSIGNING <ls_field> WITH KEY name = 'body' ##NO_TEXT.
|
|
||||||
ASSERT sy-subrc = 0.
|
|
||||||
rs_fields-body = <ls_field>-value.
|
|
||||||
REPLACE ALL OCCURRENCES OF lc_replace IN rs_fields-body WITH gc_newline.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD render_stage.
|
METHOD render_stage.
|
||||||
|
|
||||||
DATA: lt_stage TYPE lcl_stage=>ty_stage_tt.
|
DATA: lt_stage TYPE lcl_stage=>ty_stage_tt.
|
||||||
|
@ -23870,6 +23808,14 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
||||||
ei_page = get_page_stage( lv_key ).
|
ei_page = get_page_stage( lv_key ).
|
||||||
ev_state = gc_event_state-new_page_w_bookmark.
|
ev_state = gc_event_state-new_page_w_bookmark.
|
||||||
|
|
||||||
|
" Commit
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
ev_state = gc_event_state-not_handled.
|
ev_state = gc_event_state-not_handled.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
@ -24388,6 +24334,49 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD commit_push.
|
||||||
|
|
||||||
|
DATA: ls_fields TYPE lcl_html_action_utils=>ty_commit_fields,
|
||||||
|
ls_comment TYPE ty_comment,
|
||||||
|
lo_stage TYPE REF TO lcl_stage,
|
||||||
|
lo_repo TYPE REF TO lcl_repo_online,
|
||||||
|
lo_user TYPE REF TO lcl_persistence_user.
|
||||||
|
|
||||||
|
ls_fields = lcl_html_action_utils=>parse_commit_request( it_postdata ).
|
||||||
|
|
||||||
|
lo_user = lcl_app=>user( ). " TODO refactor - password manager
|
||||||
|
lo_user->set_username( ls_fields-username ).
|
||||||
|
lo_user->set_email( ls_fields-email ).
|
||||||
|
|
||||||
|
IF ls_fields-username IS INITIAL.
|
||||||
|
_raise 'empty username'.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_fields-email IS INITIAL.
|
||||||
|
_raise 'empty email'.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_fields-comment IS INITIAL.
|
||||||
|
_raise 'empty comment'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lo_repo ?= lcl_app=>repo_srv( )->get( ls_fields-repo_key ).
|
||||||
|
lo_stage = lcl_app=>repo_srv( )->get_stage( ls_fields-repo_key ).
|
||||||
|
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.
|
||||||
|
|
||||||
|
lo_repo->push( is_comment = ls_comment
|
||||||
|
io_stage = lo_stage ).
|
||||||
|
|
||||||
|
COMMIT WORK.
|
||||||
|
|
||||||
|
ENDMETHOD. "commit_push
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS. " lcl_gui_router
|
ENDCLASS. " lcl_gui_router
|
||||||
|
|
||||||
CLASS ltcl_git_porcelain DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
CLASS ltcl_git_porcelain DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user