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.
|
||||
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
|
||||
IMPORTING iv_obj_type TYPE tadir-object
|
||||
iv_obj_name TYPE tadir-obj_name
|
||||
|
@ -13210,6 +13219,10 @@ CLASS lcl_html_action_utils DEFINITION FINAL.
|
|||
IMPORTING iv_string TYPE clike
|
||||
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
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -13361,6 +13374,42 @@ CLASS lcl_html_action_utils IMPLEMENTATION.
|
|||
|
||||
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
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -16394,6 +16443,10 @@ CLASS lcl_gui_router DEFINITION FINAL.
|
|||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS commit_push
|
||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||
RAISING lcx_exception.
|
||||
|
||||
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
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS lif_gui_page~on_event REDEFINITION.
|
||||
METHODS lif_gui_page~render REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||
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
|
||||
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 ).
|
||||
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.
|
||||
|
||||
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 ).
|
||||
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.
|
||||
ev_state = gc_event_state-not_handled.
|
||||
ENDCASE.
|
||||
|
@ -24388,6 +24334,49 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
|||
|
||||
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
|
||||
|
||||
CLASS ltcl_git_porcelain DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
||||
|
|
Loading…
Reference in New Issue
Block a user