All files / test/src/web zcl_abapgit_html_viewer_web.clas.abap

41.07% Statements 46/112
100% Branches 0/0
0% Functions 0/8
41.07% Lines 46/112

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 1121x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x     1x 1x     1x 1x     1x 1x     1x 1x 1x 1x 1x 1x                 1x 1x     1x 1x     1x 1x                                                                                             1x
CLASS zcl_abapgit_html_viewer_web DEFINITION PUBLIC FINAL CREATE PUBLIC.
 
  PUBLIC SECTION.
    INTERFACES zif_abapgit_html_viewer.
 
    METHODS constructor
      IMPORTING
        ii_request  TYPE REF TO zif_abapgit_web_request
        ii_response TYPE REF TO zif_abapgit_web_response.
 
  PROTECTED SECTION.
  PRIVATE SECTION.
    DATA mv_html   TYPE string.
    DATA mv_css    TYPE string.
    DATA mi_request  TYPE REF TO zif_abapgit_web_request.
    DATA mi_response TYPE REF TO zif_abapgit_web_response.
ENDCLASS.
 
 
CLASS zcl_abapgit_html_viewer_web IMPLEMENTATION.
 
  METHOD constructor.
    mi_request = ii_request.
    mi_response = ii_response.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~back.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~close_document.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~free.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~set_focus.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~get_url.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~load_data.

    IF iv_url = 'css/bundle.css'.
      CONCATENATE LINES OF ct_data_table INTO mv_css IN CHARACTER MODE RESPECTING BLANKS.
    ELSEIF iv_url = ''.
      CONCATENATE LINES OF ct_data_table INTO mv_html IN CHARACTER MODE RESPECTING BLANKS.
    ENDIF.

  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~set_registered_events.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~set_visiblity.
    RETURN.
  ENDMETHOD.
 
  METHOD zif_abapgit_html_viewer~show_url.

    DATA lv_path TYPE string.
    DATA lv_js   TYPE string.

    lv_path = cl_http_utility=>unescape_url( mi_request->get_header_field( '~path' ) ).

    lv_js = |<script>                                     \n| &&
      |function registerLinks() \{                        \n| &&
      |  const links = document.getElementsByTagName("a");\n| &&
      |  for (let i = 0; i < links.length; i++) \{        \n| &&
      |    if (links[i].href.startsWith("sapevent:")) \{  \n| &&
      |      links[i].href = "./" + links[i].href;        \n| &&
      |    \}                                             \n| &&
      |  \}                                               \n| &&
      |\}                                                 \n| &&
      |registerLinks();                                   \n| &&
      |                                                   \n| &&
      |function registerForms() \{                              \n| &&
      |  const forms = document.getElementsByTagName("form");   \n| &&
      |  for (let i = 0; i < forms.length; i++) \{              \n| &&
      |    forms[i].action = "./" + forms[i].action;            \n| &&
      |  \}                                                     \n| &&
      |  const inputs = document.getElementsByTagName("input"); \n| &&
      |  for (let i = 0; i < inputs.length; i++) \{             \n| &&
      |    if (inputs[i].type === "submit"                          \n| &&
      |        && inputs[i].formAction.startsWith("sapevent:")) \{  \n| &&
      |      inputs[i].formAction = "./" + inputs[i].formAction;    \n| &&
      |    \}                                                       \n| &&
      |  \}                                                     \n| &&
      |\}                                                       \n| &&
      |registerForms();                                         \n| &&
      |</script></body>\n|.

    IF lv_path = '/sap/zabapgit/css/bundle.css'.
      mi_response->set_content_type( 'text/css' ).
      mi_response->set_cdata( mv_css ).
    ELSEIF lv_path = '/sap/zabapgit/' OR lv_path CP |/sap/zabapgit/sapevent:+*|.
      REPLACE FIRST OCCURRENCE OF |</body>| IN mv_html WITH lv_js.
      mi_response->set_content_type( 'text/html' ).
      mi_response->set_cdata( mv_html ).
    ELSE.
      mi_response->set_content_type( 'text/html' ).
      mi_response->set_cdata( |show_url, unknown path { lv_path }| ).
    ENDIF.

  ENDMETHOD.
ENDCLASS.