*&---------------------------------------------------------------------* *& Include ZABAPGIT_PAGE_DB *&---------------------------------------------------------------------* CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PUBLIC SECTION. METHODS lif_gui_page~render REDEFINITION. METHODS: constructor IMPORTING is_key TYPE lcl_persistence_db=>ty_content. PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. ENDCLASS. CLASS lcl_gui_page_db_display IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_key = is_key. ENDMETHOD. METHOD lif_gui_page~render. DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, ls_action TYPE lcl_persistence_db=>ty_content, lv_action TYPE string. TRY. lv_data = lcl_app=>db( )->read( iv_type = ms_key-type iv_value = ms_key-value ). CATCH lcx_not_found ##NO_HANDLER. ENDTRY. ls_action-type = ms_key-type. ls_action-value = ms_key-value. lv_action = lcl_html_action_utils=>dbkey_encode( ls_action ). lv_data = lcl_xml_pretty=>print( lv_data ). lv_data = escape( val = lv_data format = cl_abap_format=>e_html_attr ). CREATE OBJECT ro_html. ro_html->add( header( ) ). ro_html->add( title( 'CONFIG DISPLAY' ) ). ro_html->add( '
' ). ro_html->add( '
' ). ro_html->add( || && |
Type:{ ms_key-type }
| ). ro_html->add( || && |
Key:{ ms_key-value }
| ). ro_html->add( '
' ). ro_html->add_anchor( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ). ro_html->add( '
' ). ro_html->add( |
{ lv_data }
| ). ro_html->add( '
' ). ro_html->add( footer( ) ). ENDMETHOD. ENDCLASS. CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PUBLIC SECTION. METHODS lif_gui_page~render REDEFINITION. METHODS: constructor IMPORTING is_key TYPE lcl_persistence_db=>ty_content. PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. ENDCLASS. CLASS lcl_gui_page_db_edit IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_key = is_key. ENDMETHOD. METHOD lif_gui_page~render. DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, lo_toolbar TYPE REF TO lcl_html_toolbar. TRY. lv_data = lcl_app=>db( )->read( iv_type = ms_key-type iv_value = ms_key-value ). CATCH lcx_not_found ##NO_HANDLER. ENDTRY. lcl_app=>db( )->lock( iv_type = ms_key-type iv_value = ms_key-value ). lv_data = lcl_xml_pretty=>print( lv_data ). lv_data = escape( val = lv_data format = cl_abap_format=>e_html_attr ). CREATE OBJECT ro_html. CREATE OBJECT lo_toolbar. ro_html->add( header( ) ). ro_html->add( title( 'CONFIG EDIT' ) ). ro_html->add( '
' ). " Banners ro_html->add( || && |
Type:{ ms_key-type }
| ). ro_html->add( || && |
Key:{ ms_key-value }
| ). " Form ro_html->add( |
| ). ro_html->add( || ). ro_html->add( || ). ro_html->add( || ). ro_html->add( '
' ). " Menu lo_toolbar->add( iv_act = 'submitFormById(''db_form'');' iv_txt = 'Save' iv_typ = gc_action_type-onclick iv_opt = gc_html_opt-emphas ) ##NO_TEXT. ro_html->add( '
' ). ro_html->add( lo_toolbar->render( ) ). ro_html->add( '
' ). ro_html->add( '
' ). "db_entry ro_html->add( footer( ) ). ENDMETHOD. ENDCLASS. CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PUBLIC SECTION. METHODS lif_gui_page~render REDEFINITION. PRIVATE SECTION. METHODS explain_content IMPORTING is_data TYPE lcl_persistence_db=>ty_content RETURNING VALUE(rv_text) TYPE string RAISING lcx_exception. ENDCLASS. CLASS lcl_gui_page_db IMPLEMENTATION. METHOD lif_gui_page~render. DATA: lt_data TYPE lcl_persistence_db=>tt_content, lv_action TYPE string, lv_trclass TYPE string, lo_toolbar TYPE REF TO lcl_html_toolbar. FIELD-SYMBOLS: LIKE LINE OF lt_data. lt_data = lcl_app=>db( )->list( ). CREATE OBJECT ro_html. ro_html->add( header( ) ). ro_html->add( title( 'DATABASE PERSISTENCY' ) ). ro_html->add( '
' ). ro_html->add( '' ). " Header ro_html->add( '' ). ro_html->add( '' ). ro_html->add( '' ). ro_html->add( '' ). ro_html->add( '' ). ro_html->add( '' ). " Lines LOOP AT lt_data ASSIGNING . CLEAR lv_trclass. IF sy-tabix = 1. lv_trclass = ' class="firstrow"' ##NO_TEXT. ENDIF. lv_action = lcl_html_action_utils=>dbkey_encode( ). CREATE OBJECT lo_toolbar. lo_toolbar->add( iv_txt = 'Display' iv_act = |{ gc_action-db_display }?{ lv_action }| ). lo_toolbar->add( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ). lo_toolbar->add( iv_txt = 'Delete' iv_act = |{ gc_action-db_delete }?{ lv_action }| ). ro_html->add( || ). ro_html->add( || ). ro_html->add( || ). ro_html->add( || ). ro_html->add( '' ). ro_html->add( '' ). ENDLOOP. ro_html->add( '
TypeKeyData
{ -type }{ -value }{ explain_content( ) }' ). ro_html->add( lo_toolbar->render( iv_vertical = abap_false ) ). ro_html->add( '
' ). ro_html->add( '
' ). ro_html->add( footer( ) ). ENDMETHOD. "lif_gui_page~render METHOD explain_content. DATA: lv_result TYPE match_result, lv_match TYPE submatch_result, lv_cnt TYPE i. CASE is_data-type. WHEN 'REPO'. FIND FIRST OCCURRENCE OF REGEX '(.*)' IN is_data-data_str IGNORING CASE RESULTS lv_result. READ TABLE lv_result-submatches INTO lv_match INDEX 1. IF sy-subrc IS INITIAL. rv_text = is_data-data_str+lv_match-offset(lv_match-length). ENDIF. FIND FIRST OCCURRENCE OF REGEX '' IN is_data-data_str IGNORING CASE MATCH COUNT lv_cnt. IF lv_cnt > 0. rv_text = |On-line, Name: { lcl_url=>name( rv_text ) }|. ELSE. rv_text = |Off-line, Name: { rv_text }|. ENDIF. WHEN 'BACKGROUND'. FIND FIRST OCCURRENCE OF REGEX '(.*)' IN is_data-data_str IGNORING CASE RESULTS lv_result. READ TABLE lv_result-submatches INTO lv_match INDEX 1. IF sy-subrc IS NOT INITIAL. RETURN. ENDIF. rv_text = |Method: { is_data-data_str+lv_match-offset(lv_match-length) }, | && |Repository: { lcl_app=>repo_srv( )->get( is_data-value )->get_name( ) }|. WHEN 'USER'. rv_text = '-'. " No additional explanation for user WHEN OTHERS. IF strlen( is_data-data_str ) >= 250. rv_text = is_data-data_str(250). ELSE. rv_text = is_data-data_str. ENDIF. rv_text = escape( val = rv_text format = cl_abap_format=>e_html_attr ). rv_text = |
{ rv_text }
|. ENDCASE. ENDMETHOD. "explain_content ENDCLASS.