CLASS zcl_abapgit_gui_page_commit DEFINITION PUBLIC FINAL
CREATE PUBLIC INHERITING FROM zcl_abapgit_gui_page.
PUBLIC SECTION.
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
IMPORTING io_repo TYPE REF TO zcl_abapgit_repo_online
io_stage TYPE REF TO zcl_abapgit_stage
RAISING zcx_abapgit_exception,
zif_abapgit_gui_page~on_event REDEFINITION.
PROTECTED SECTION.
METHODS:
render_content REDEFINITION,
scripts REDEFINITION.
PRIVATE SECTION.
DATA: mo_repo TYPE REF TO zcl_abapgit_repo_online,
mo_stage TYPE REF TO zcl_abapgit_stage.
METHODS:
render_menu
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html,
render_stage
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html
RAISING zcx_abapgit_exception,
render_form
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html
RAISING zcx_abapgit_exception,
render_text_input
IMPORTING iv_name TYPE string
iv_label TYPE string
iv_value TYPE string OPTIONAL
iv_max_length TYPE string OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html.
ENDCLASS.
CLASS ZCL_ABAPGIT_GUI_PAGE_COMMIT IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mo_repo = io_repo.
mo_stage = io_stage.
ms_control-page_title = 'COMMIT'.
ENDMETHOD.
METHOD render_content.
CREATE OBJECT ro_html.
ro_html->add( '
' ).
ENDMETHOD. "render_content
METHOD render_form.
CONSTANTS: lc_body_col_max TYPE i VALUE 150.
DATA: lo_user TYPE REF TO zcl_abapgit_persistence_user.
DATA: lv_user TYPE string.
DATA: lv_email TYPE string.
DATA: lv_s_param TYPE string.
DATA: lo_settings TYPE REF TO zcl_abapgit_settings.
DATA: lv_body_size TYPE i.
* see https://git-scm.com/book/ch5-2.html
* commit messages should be max 50 characters
* body should wrap at 72 characters
lo_user = zcl_abapgit_persistence_user=>get_instance( ).
lv_user = lo_user->get_repo_git_user_name( mo_repo->get_url( ) ).
IF lv_user IS INITIAL.
lv_user = lo_user->get_default_git_user_name( ).
ENDIF.
lv_email = lo_user->get_repo_git_user_email( mo_repo->get_url( ) ).
IF lv_email IS INITIAL.
lv_email = lo_user->get_default_git_user_email( ).
ENDIF.
CREATE OBJECT ro_html.
ro_html->add( '
' ).
ENDMETHOD. "render_stage
METHOD render_text_input.
DATA lv_attrs TYPE string.
CREATE OBJECT ro_html.
IF iv_value IS NOT INITIAL.
lv_attrs = | value="{ iv_value }"|.
ENDIF.
IF iv_max_length IS NOT INITIAL.
lv_attrs = | maxlength="{ iv_max_length }"|.
ENDIF.
ro_html->add( '