CLASS zcl_abapgit_gui_page DEFINITION PUBLIC ABSTRACT CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_page. PROTECTED SECTION. TYPES: BEGIN OF ty_control, redirect_url TYPE string, page_title TYPE string, page_menu TYPE REF TO zcl_abapgit_html_toolbar, END OF ty_control. DATA: ms_control TYPE ty_control. METHODS render_content ABSTRACT RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html RAISING zcx_abapgit_exception. METHODS scripts RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html RAISING zcx_abapgit_exception. PRIVATE SECTION. METHODS html_head RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS title RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS footer RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. METHODS redirect RETURNING VALUE(ro_html) TYPE REF TO zcl_abapgit_html. ENDCLASS. CLASS ZCL_ABAPGIT_GUI_PAGE IMPLEMENTATION. METHOD footer. CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. "footer METHOD html_head. CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( 'abapGit' ). "#EC NOTEXT ro_html->add( '' ). ro_html->add( '' ). "#EC NOTEXT ro_html->add( zcl_abapgit_gui_asset_manager=>get_webfont_link( ) ). " Web fonts ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. "html_head METHOD redirect. CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( || ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. METHOD scripts. DATA: lo_settings TYPE REF TO zcl_abapgit_settings, lv_link_hint_key TYPE char01, lv_background_color TYPE string. CREATE OBJECT ro_html. lo_settings = zcl_abapgit_persist_settings=>get_instance( )->read( ). lv_link_hint_key = lo_settings->get_link_hint_key( ). lv_background_color = lo_settings->get_link_hint_background_color( ). IF lo_settings->get_link_hints_enabled( ) = abap_true AND lv_link_hint_key IS NOT INITIAL. ro_html->add( |setLinkHints("{ lv_link_hint_key }","{ lv_background_color }");| ). ro_html->add( |setInitialFocusWithQuerySelector('a span', true);| ). ro_html->add( |enableArrowListNavigation();| ). ENDIF. ENDMETHOD. "scripts METHOD title. CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. "render page title METHOD zif_abapgit_gui_page~on_event. ev_state = zif_abapgit_definitions=>gc_event_state-not_handled. ENDMETHOD. "lif_gui_page~on_event METHOD zif_abapgit_gui_page~render. DATA lo_script TYPE REF TO zcl_abapgit_html. " Redirect IF ms_control-redirect_url IS NOT INITIAL. ro_html = redirect( ). RETURN. ENDIF. " Real page CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( html_head( ) ). ro_html->add( '' ). "#EC NOTEXT ro_html->add( title( ) ). ro_html->add( render_content( ) ). ro_html->add( footer( ) ). ro_html->add( '' ). "#EC NOTEXT lo_script = scripts( ). IF lo_script IS BOUND AND lo_script->is_empty( ) = abap_false. ro_html->add( '' ). ENDIF. ro_html->add( '' ). "#EC NOTEXT ENDMETHOD. " lif_gui_page~render. ENDCLASS.