From 0d8d5af0d8789953cc5c745e19f0b80f8c263d61 Mon Sep 17 00:00:00 2001 From: eduardocopat Date: Wed, 23 Nov 2016 17:13:16 +0100 Subject: [PATCH 01/27] Changing icon to Folder --- src/zabapgit_popups.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index cda5de30f..89d8ba4b8 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -362,7 +362,7 @@ CLASS lcl_popups IMPLEMENTATION. IF iv_package IS INITIAL. " Empty package -> can be created lv_button2 = 'Create package' ##NO_TEXT. - lv_icon2 = icon_msg. + lv_icon2 = icon_folder. ENDIF. * TAB FLD LABEL DEF ATTR From f7c08c0d10610302065b6b9c4c6a5eef54f998d8 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 23 Nov 2016 16:18:02 +0000 Subject: [PATCH 02/27] PROG - Skip empty CUA, close #456 --- src/zabapgit.prog.abap | 2 +- src/zabapgit.prog.xml | 21 --------------------- src/zabapgit_objects.prog.abap | 8 +++++--- 3 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 0f217ebb4..fe9b1aaca 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.0'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.1'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit.prog.xml b/src/zabapgit.prog.xml index c45af12c8..aed90ce00 100644 --- a/src/zabapgit.prog.xml +++ b/src/zabapgit.prog.xml @@ -35,27 +35,6 @@ X - - - - - - - - - - - - - - - - - - - - - R diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 16a01b499..ebd7eff61 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -861,7 +861,7 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super. TYPES: ty_spaces_tt TYPE STANDARD TABLE OF i WITH DEFAULT KEY. TYPES: BEGIN OF ty_tpool. - INCLUDE TYPE textpool. + INCLUDE TYPE textpool. TYPES: split TYPE c LENGTH 8. TYPES: END OF ty_tpool. @@ -1038,8 +1038,10 @@ CLASS lcl_objects_program IMPLEMENTATION. ig_data = lt_dynpros ). ls_cua = serialize_cua( lv_program_name ). - lo_xml->add( iv_name = 'CUA' - ig_data = ls_cua ). + IF NOT ls_cua IS INITIAL. + lo_xml->add( iv_name = 'CUA' + ig_data = ls_cua ). + ENDIF. ENDIF. IF lines( lt_tpool ) = 1. From 5b12359538158283fa5a45cb16cd2e73fe0d76b2 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 23 Nov 2016 17:41:51 +0000 Subject: [PATCH 03/27] VARCL fix --- src/zabapgit_objects.prog.abap | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index ebd7eff61..54933d711 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -1194,7 +1194,10 @@ CLASS lcl_objects_program IMPLEMENTATION. lcx_exception=>raise( 'PROG, error inserting' ). ENDIF. - IF is_progdir-varcl = space AND ls_progdir_new = abap_true. + SELECT SINGLE * FROM progdir INTO ls_progdir_new + WHERE name = ls_progdir_new-name + AND state = ls_progdir_new-state. + IF sy-subrc = 0 AND is_progdir-varcl = space AND ls_progdir_new-varcl = abap_true. * function module UPDATE_PROGDIR does not update VARCL UPDATE progdir SET varcl = is_progdir-varcl WHERE name = ls_progdir_new-name From a6a9f74e05b383ce652bef8412c9f69bf2c44401 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Wed, 23 Nov 2016 20:47:20 +0200 Subject: [PATCH 04/27] css finetune, fixes #460 --- src/zabapgit_page.prog.abap | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 0bbfad094..0eaaff4db 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -452,14 +452,15 @@ CLASS lcl_gui_page_super IMPLEMENTATION. _add '}'. _add '.dropdown_angle {'. _add ' position: absolute !important;'. - _add ' right: -2px;'. + _add ' right: -4px;'. + _add ' top: -1px;'. _add '}'. _add '.dropbtn_angle {'. _add ' width: 0;'. _add ' height: 0;'. - _add ' border-left: 5px solid transparent;'. - _add ' border-right: 5px solid transparent;'. - _add ' border-bottom: 5px solid #4078c0;'. + _add ' border-left: 7px solid transparent;'. + _add ' border-right: 7px solid transparent;'. + _add ' border-bottom: 7px solid #4078c0;'. _add ' transform: rotate(45deg);'. _add ' -ms-transform: rotate(45deg);'. _add '}'. @@ -482,6 +483,9 @@ CLASS lcl_gui_page_super IMPLEMENTATION. _add ' bottom: 0px;'. _add ' left: -16px;'. _add '}'. + _add '.dropdown_angle .dropdown_content {'. + _add ' top: -1px;'. + _add '}'. _add '.dropdown:hover .dropdown_content { display: block; }'. _add '.dropdown:hover .minizone { display: block; }'. From 95c73d82b9865f34d671ffd35b294e0e4de68b36 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 24 Nov 2016 07:38:22 +0000 Subject: [PATCH 05/27] TABL bugfix, #296 --- src/zabapgit.prog.abap | 2 +- src/zabapgit_objects_impl.prog.abap | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index fe9b1aaca..17b69c579 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.1'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.2'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index 77130a3af..2e8bc1fae 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -696,13 +696,16 @@ CLASS lcl_objects IMPLEMENTATION. METHOD compare_remote_to_local. - DATA ls_remote_file TYPE ty_file. + DATA: ls_remote_file TYPE ty_file, + lo_remote_version TYPE REF TO lcl_xml_input, + lo_comparison_result TYPE REF TO lif_object_comparison_result. - DATA: - lo_remote_version TYPE REF TO lcl_xml_input, - lo_comparison_result TYPE REF TO lif_object_comparison_result. IF is_result-filename CS '.XML'. + IF io_object->exists( ) = abap_false. + RETURN. + ENDIF. + READ TABLE it_remote WITH KEY filename = is_result-filename INTO ls_remote_file. "if file does not exist in remote, we don't need to validate From 4219f46d9ea2f26fc15fbe2326f33e659e060be9 Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 24 Nov 2016 13:55:00 +0000 Subject: [PATCH 06/27] FUGR - bugfix, #430 --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_fugr.prog.abap | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 17b69c579..c45cfe847 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.2'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.3'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index 3d68aba65..c02cd8626 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -485,6 +485,9 @@ CLASS lcl_object_fugr IMPLEMENTATION. APPEND INITIAL LINE TO rt_functions ASSIGNING . MOVE-CORRESPONDING TO . + CLEAR lt_new_source. + CLEAR lt_source. + CALL FUNCTION 'RPY_FUNCTIONMODULE_READ_NEW' EXPORTING functionname = -funcname From c5911ff1f8dae00a193b2f9cc71f31ad32ab942e Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 11:36:51 +0000 Subject: [PATCH 07/27] ENQU - changed by --- src/zabapgit_object_enqu.prog.abap | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/zabapgit_object_enqu.prog.abap b/src/zabapgit_object_enqu.prog.abap index 617f5402b..53d08681f 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -24,9 +24,9 @@ CLASS lcl_object_enqu IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + DATA: lv_date TYPE dats, + lv_time TYPE tims, + lv_ts TYPE timestamp. SELECT SINGLE as4date as4time FROM dd25l INTO (lv_date, lv_time) @@ -39,7 +39,16 @@ CLASS lcl_object_enqu IMPLEMENTATION. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. - rv_user = c_user_unknown. " todo + + SELECT SINGLE AS4USER FROM dd25l + INTO rv_user + WHERE viewname = ms_item-obj_name + AND as4local = 'A' + AND as4vers = '0000'. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. METHOD lif_object~get_metadata. From fcee6109af144f2ebd7d1bc3f632a3f812b08efa Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 12:10:55 +0000 Subject: [PATCH 08/27] background mode: build commit comment plus remove some unused variables --- src/zabapgit.prog.abap | 2 +- src/zabapgit_background.prog.abap | 41 ++++++++++++++++++++---- src/zabapgit_http.prog.abap | 2 +- src/zabapgit_object_dtel.prog.abap | 4 +-- src/zabapgit_object_ensc.prog.abap | 3 +- src/zabapgit_object_fugr.prog.abap | 1 - src/zabapgit_object_pinf.prog.abap | 12 +++---- src/zabapgit_object_tabl_valid.prog.abap | 4 +-- src/zabapgit_objects.prog.abap | 3 +- src/zabapgit_objects_impl.prog.abap | 1 - 10 files changed, 47 insertions(+), 26 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index c45cfe847..667b1acb9 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.3'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.4'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_background.prog.abap b/src/zabapgit_background.prog.abap index cd729c657..ef43ba48c 100644 --- a/src/zabapgit_background.prog.abap +++ b/src/zabapgit_background.prog.abap @@ -5,11 +5,15 @@ CLASS lcl_background DEFINITION FINAL. PUBLIC SECTION. - CLASS-METHODS: run - RAISING lcx_exception. + CLASS-METHODS: + run + RAISING lcx_exception. PRIVATE SECTION. CLASS-METHODS: + build_comment + IMPORTING is_files TYPE ty_stage_files + RETURNING VALUE(rv_comment) TYPE string, push IMPORTING io_repo TYPE REF TO lcl_repo_online is_settings TYPE lcl_persistence_background=>ty_background @@ -54,14 +58,9 @@ CLASS lcl_background IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF ls_files-local. - ls_files = lcl_stage_logic=>get( io_repo ). ASSERT lines( ls_files-local ) > 0. - ls_comment-username = is_settings-aname. - ls_comment-email = is_settings-amail. - ls_comment-comment = 'abapGit background mode' ##NO_TEXT. - CREATE OBJECT lo_stage EXPORTING iv_branch_name = io_repo->get_branch_name( ) @@ -76,11 +75,39 @@ CLASS lcl_background IMPLEMENTATION. iv_data = -file-data ). ENDLOOP. + ls_comment-username = is_settings-aname. + ls_comment-email = is_settings-amail. + ls_comment-comment = build_comment( ls_files ). + io_repo->push( is_comment = ls_comment io_stage = lo_stage ). ENDMETHOD. + METHOD build_comment. + + DATA: lt_objects TYPE STANDARD TABLE OF string WITH DEFAULT KEY, + lv_str TYPE string. + + FIELD-SYMBOLS: LIKE LINE OF is_files-local. + + + LOOP AT is_files-local ASSIGNING . + lv_str = |{ -item-obj_type } { -item-obj_name }|. + APPEND lv_str TO lt_objects. + ENDLOOP. + + IF lines( lt_objects ) = 1. + rv_comment = |BG: { lv_str }|. + ELSE. + rv_comment = 'BG: Multiple objects'. + LOOP AT lt_objects INTO lv_str. + CONCATENATE rv_comment gc_newline lv_str INTO rv_comment. + ENDLOOP. + ENDIF. + + ENDMETHOD. + METHOD push_auto. DATA: ls_comment TYPE ty_comment, diff --git a/src/zabapgit_http.prog.abap b/src/zabapgit_http.prog.abap index 041662aaa..1f08d18f5 100644 --- a/src/zabapgit_http.prog.abap +++ b/src/zabapgit_http.prog.abap @@ -78,7 +78,7 @@ CLASS lcl_http_client DEFINITION FINAL. iv_service TYPE string RAISING lcx_exception. - PROTECTED SECTION. + PRIVATE SECTION. DATA: mi_client TYPE REF TO if_http_client, mo_digest TYPE REF TO lcl_http_digest. diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index 311c887d7..024786107 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -210,9 +210,9 @@ CLASS lcl_object_dtel IMPLEMENTATION. DATA: lv_name TYPE ddobjname, lv_index TYPE i, ls_dd04v TYPE dd04v, - ls_tpara TYPE tpara, lt_dd04_texts TYPE tt_dd04_texts, lt_i18n_langs TYPE TABLE OF langu. + FIELD-SYMBOLS: LIKE LINE OF lt_i18n_langs, TYPE ty_dd04_texts. @@ -232,7 +232,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. langu = IMPORTING dd04v_wa = ls_dd04v - tpara_wa = ls_tpara +* tpara_wa = ls_tpara EXCEPTIONS illegal_input = 1 OTHERS = 2. diff --git a/src/zabapgit_object_ensc.prog.abap b/src/zabapgit_object_ensc.prog.abap index 3434d3c3f..cc29f012f 100644 --- a/src/zabapgit_object_ensc.prog.abap +++ b/src/zabapgit_object_ensc.prog.abap @@ -90,7 +90,6 @@ CLASS lcl_object_ensc IMPLEMENTATION. DATA: lv_spot_name TYPE enhspotcompositename, lv_message TYPE string, lv_enh_shtext TYPE string, - lv_parent TYPE enhspotcompositename, lt_enh_spots TYPE enhspotname_it, lt_comp_spots TYPE enhspotname_it, lx_root TYPE REF TO cx_root, @@ -109,7 +108,7 @@ CLASS lcl_object_ensc IMPLEMENTATION. lv_enh_shtext = li_spot_ref->if_enh_object_docu~get_shorttext( ). "find parent = composite enhancement (ENSC) - lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ). +* lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ). "find subsequent enhancement spots lt_enh_spots = lo_spot_ref->if_enh_spot_composite~get_enh_spot_childs( ). "find subsequent composite enhancement spots diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index c02cd8626..ce2d916de 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -143,7 +143,6 @@ CLASS lcl_object_fugr IMPLEMENTATION. DATA: lv_include TYPE rs38l-include, lv_area TYPE rs38l-area, - lv_message TYPE string, lt_source TYPE TABLE OF abaptxt255. FIELD-SYMBOLS: LIKE LINE OF it_functions. diff --git a/src/zabapgit_object_pinf.prog.abap b/src/zabapgit_object_pinf.prog.abap index 873c19355..727fd1fb1 100644 --- a/src/zabapgit_object_pinf.prog.abap +++ b/src/zabapgit_object_pinf.prog.abap @@ -193,18 +193,18 @@ CLASS lcl_object_pinf IMPLEMENTATION. lt_add TYPE scomeldata, lv_index TYPE i, lv_found TYPE abap_bool, - ls_sign TYPE scomelsign, +* ls_sign TYPE scomelsign, ls_attr TYPE scomeldtln. FIELD-SYMBOLS: LIKE LINE OF lt_existing, LIKE LINE OF is_pinf-elements. - ls_sign-usag_restr = abap_true. - ls_sign-stability = abap_true. - ls_sign-no_check = abap_true. - ls_sign-useastype = abap_true. - ls_sign-asforgnkey = abap_true. +* ls_sign-usag_restr = abap_true. +* ls_sign-stability = abap_true. +* ls_sign-no_check = abap_true. +* ls_sign-useastype = abap_true. +* ls_sign-asforgnkey = abap_true. * ls_sign-deprecation_type = abap_true. backport * ls_sign-replacement_object_type = abap_true. backport * ls_sign-replacement_object_name = abap_true. backport diff --git a/src/zabapgit_object_tabl_valid.prog.abap b/src/zabapgit_object_tabl_valid.prog.abap index 0247006be..59576cf1b 100644 --- a/src/zabapgit_object_tabl_valid.prog.abap +++ b/src/zabapgit_object_tabl_valid.prog.abap @@ -143,8 +143,7 @@ CLASS lct_table_validation IMPLEMENTATION. METHOD no_type_changes. DATA: - ls_previous_table_field LIKE LINE OF mt_previous_table_fields, - ls_current_table_field LIKE LINE OF mt_current_table_fields. + ls_previous_table_field LIKE LINE OF mt_previous_table_fields. ls_previous_table_field-fieldname = 'FIELD1'. ls_previous_table_field-rollname = 'INT4'. @@ -189,7 +188,6 @@ CLASS lct_table_validation IMPLEMENTATION. METHOD no_fields_no_message. DATA: - ls_previous_table_field LIKE LINE OF mt_previous_table_fields, ls_current_table_field LIKE LINE OF mt_current_table_fields. create_xmls( ). diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 54933d711..30887800b 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -556,8 +556,7 @@ CLASS lcl_objects_files IMPLEMENTATION. METHOD read_raw. - DATA: lv_filename TYPE string, - lv_data TYPE xstring. + DATA: lv_filename TYPE string. lv_filename = filename( iv_extra = iv_extra iv_ext = iv_ext ). diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index 2e8bc1fae..c90be83ba 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -593,7 +593,6 @@ CLASS lcl_objects IMPLEMENTATION. lv_cancel TYPE abap_bool, li_obj TYPE REF TO lif_object, lt_remote TYPE ty_files_tt, - ls_remote_file TYPE ty_file, lv_package TYPE devclass, lo_files TYPE REF TO lcl_objects_files, lo_xml TYPE REF TO lcl_xml_input, From 9cdf93ab08903538981aefbbb1e10e3dd753d3e2 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 12:57:20 +0000 Subject: [PATCH 09/27] utility to test changed by functionality --- src/zabapgit_page_main.prog.abap | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 61237c1f6..ecbda3159 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -14,13 +14,16 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PRIVATE SECTION. CONSTANTS: BEGIN OF c_actions, - show TYPE string VALUE 'show' ##NO_TEXT, + show TYPE string VALUE 'show' ##NO_TEXT, + changed_by TYPE string VALUE 'changed_by', END OF c_actions. DATA: mv_show TYPE lcl_persistence_db=>ty_value, mo_repo_content TYPE REF TO lcl_gui_view_repo_content. METHODS: + test_changed_by + RAISING lcx_exception, styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, retrieve_active_repo @@ -80,10 +83,34 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ENDTRY. ev_state = gc_event_state-re_render. + WHEN c_actions-changed_by. + test_changed_by( ). + ev_state = gc_event_state-no_more_act. ENDCASE. ENDMETHOD. "on_event + METHOD test_changed_by. + + DATA: ls_tadir TYPE tadir, + lv_user TYPE xubname, + ls_item TYPE ty_item. + + + ls_tadir = lcl_popups=>popup_object( ). + IF ls_tadir IS INITIAL. + RETURN. + ENDIF. + + ls_item-obj_type = ls_tadir-object. + ls_item-obj_name = ls_tadir-obj_name. + + lv_user = lcl_objects=>changed_by( ls_item ). + + MESSAGE lv_user TYPE 'S'. + + ENDMETHOD. + ********************************************************************** * RENDERING ********************************************************************** @@ -172,6 +199,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Object to files' iv_act = gc_action-zip_object ) ##NO_TEXT. + lo_betasub->add( iv_txt = 'Test changed by' iv_act = c_actions-changed_by ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Settings' iv_act = gc_action-go_settings ) ##NO_TEXT. From 7de9306e0eb051dfb8972d5e7566de21620fd275 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 13:35:21 +0000 Subject: [PATCH 10/27] fix newline --- src/zabapgit_unit_test.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 774c21c5f..8181da660 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -2178,4 +2178,4 @@ CLASS ltcl_persistence_settings IMPLEMENTATION. ENDMETHOD. -ENDCLASS. +ENDCLASS. \ No newline at end of file From 662ff0904e07469151a8dabed762c87909a75824 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 13:39:37 +0000 Subject: [PATCH 11/27] FUGR: changed by implemented --- src/zabapgit_object_fugr.prog.abap | 69 ++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index ce2d916de..97aaf4f86 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -86,8 +86,8 @@ CLASS lcl_object_fugr IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lt_functab TYPE ty_rs38l_incl_tt, - lt_includes TYPE rso_t_objnm. + DATA: lt_functab TYPE ty_rs38l_incl_tt, + lt_includes TYPE rso_t_objnm. FIELD-SYMBOLS: LIKE LINE OF lt_functab, LIKE LINE OF lt_includes. @@ -117,7 +117,70 @@ CLASS lcl_object_fugr IMPLEMENTATION. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. - rv_user = c_user_unknown. " todo + + TYPES: BEGIN OF ty_stamps, + user TYPE xubname, + date TYPE d, + time TYPE t, + END OF ty_stamps. + + DATA: lt_stamps TYPE STANDARD TABLE OF ty_stamps WITH DEFAULT KEY, + lv_program TYPE program, + lt_includes TYPE rso_t_objnm. + + FIELD-SYMBOLS: LIKE LINE OF lt_stamps, + LIKE LINE OF lt_includes. + + + lv_program = main_name( ). + + CALL FUNCTION 'RS_GET_ALL_INCLUDES' + EXPORTING + program = lv_program + TABLES + includetab = lt_includes + EXCEPTIONS + not_existent = 1 + no_program = 2 + OTHERS = 3. + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error from RS_GET_ALL_INCLUDES' ). + ENDIF. + + SELECT unam AS user udat AS date utime AS time FROM reposrc + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE progname = lv_program + AND r3state = 'A'. + + LOOP AT lt_includes ASSIGNING . + SELECT unam AS user udat AS date utime AS time FROM reposrc + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE progname = + AND r3state = 'A'. + ENDLOOP. + + SELECT unam AS user udat AS date utime AS time FROM repotext " Program text pool + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE progname = lv_program + AND r3state = 'A'. + + SELECT vautor AS user vdatum AS date vzeit AS time FROM eudb " GUI + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE relid = 'CU' + AND name = lv_program + AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS. + +* Screens: username not stored in D020S database table + + SORT lt_stamps BY date DESCENDING time DESCENDING. + + READ TABLE lt_stamps INDEX 1 ASSIGNING . + IF sy-subrc = 0. + rv_user = -user. + ELSE. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. METHOD lif_object~get_metadata. From 16fe500579bcdbb241b46fb4af378b141bb0fa44 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 15:16:14 +0100 Subject: [PATCH 12/27] CLAS: better changed_by but still not perfect --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_clas.prog.abap | 73 +++++++++++++++++++++--- src/zabapgit_object_tabl_valid.prog.abap | 6 +- src/zabapgit_unit_test.prog.abap | 2 +- 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 667b1acb9..9c7ff8684 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.4'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.5'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 755b52a00..a978ed0e2 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -102,6 +102,9 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program. METHODS reduce CHANGING ct_source TYPE ty_string_tt. + METHODS get_all_class_includes + RETURNING VALUE(rt_includes) TYPE seoincl_t. + ENDCLASS. "lcl_object_dtel DEFINITION *----------------------------------------------------------------------* @@ -121,6 +124,37 @@ ENDCLASS. "lcl_object_intf DEFINITION *----------------------------------------------------------------------* CLASS lcl_object_clas IMPLEMENTATION. + METHOD get_all_class_includes. +* note: includes returned might not exist +* method cl_oo_classname_service=>GET_ALL_CLASS_INCLUDES does not exist in 702 + + DATA: lv_clsname TYPE seoclsname, + lt_methods TYPE seop_methods_w_include. + + FIELD-SYMBOLS: LIKE LINE OF lt_methods. + + + lv_clsname = ms_item-obj_name. + + APPEND cl_oo_classname_service=>get_ccdef_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ccmac_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ccimp_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_cl_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ccau_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_pubsec_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_prosec_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_prisec_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_classpool_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_ct_name( lv_clsname ) TO rt_includes. + APPEND cl_oo_classname_service=>get_cs_name( lv_clsname ) TO rt_includes. + + lt_methods = cl_oo_classname_service=>get_all_method_includes( lv_clsname ). + LOOP AT lt_methods ASSIGNING . + APPEND -incname TO rt_includes. + ENDLOOP. + + ENDMETHOD. + METHOD lif_object~has_changed_since. DATA: lv_clsname TYPE seoclsname, @@ -169,18 +203,39 @@ CLASS lcl_object_clas IMPLEMENTATION. ENDMETHOD. "lif_object~get_metadata METHOD lif_object~changed_by. -* todo, not sure this is correct, to be tested - SELECT SINGLE changedby FROM seoclassdf INTO rv_user - WHERE clsname = ms_item-obj_name - AND version = '1'. "#EC CI_GENBUFF - IF sy-subrc = 0 AND rv_user IS INITIAL. - SELECT SINGLE author FROM seoclassdf INTO rv_user - WHERE clsname = ms_item-obj_name - AND version = '1'. "#EC CI_GENBUFF - ENDIF. + + TYPES: BEGIN OF ty_includes, + programm TYPE programm, + END OF ty_includes. + + TYPES: BEGIN OF ty_reposrc, + unam TYPE reposrc-unam, + udat TYPE reposrc-udat, + utime TYPE reposrc-utime, + END OF ty_reposrc. + + DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc, + ls_reposrc LIKE LINE OF lt_reposrc, + lt_includes TYPE STANDARD TABLE OF ty_includes. + + + lt_includes = get_all_class_includes( ). + ASSERT lines( lt_includes ) > 0. + + SELECT unam udat utime FROM reposrc + INTO TABLE lt_reposrc + FOR ALL ENTRIES IN lt_includes + WHERE progname = lt_includes-programm + AND r3state = 'A'. IF sy-subrc <> 0. rv_user = c_user_unknown. + ELSE. + SORT lt_reposrc BY udat DESCENDING utime DESCENDING. + READ TABLE lt_reposrc INDEX 1 INTO ls_reposrc. + ASSERT sy-subrc = 0. + rv_user = ls_reposrc-unam. ENDIF. + ENDMETHOD. METHOD lif_object~exists. diff --git a/src/zabapgit_object_tabl_valid.prog.abap b/src/zabapgit_object_tabl_valid.prog.abap index 59576cf1b..58d0aa20a 100644 --- a/src/zabapgit_object_tabl_valid.prog.abap +++ b/src/zabapgit_object_tabl_valid.prog.abap @@ -2,7 +2,7 @@ *& Include zabapgit_object_tabl_valid *&---------------------------------------------------------------------* -CLASS lcl_object_tabl_validation DEFINITION. +CLASS lcl_object_tabl_validation DEFINITION FINAL. PUBLIC SECTION. METHODS validate IMPORTING @@ -14,7 +14,7 @@ CLASS lcl_object_tabl_validation DEFINITION. lcx_exception. ENDCLASS. -CLASS lcl_tabl_validation_dialog DEFINITION. +CLASS lcl_tabl_validation_dialog DEFINITION FINAL. PUBLIC SECTION. METHODS: constructor @@ -91,7 +91,7 @@ CLASS lcl_tabl_validation_dialog IMPLEMENTATION. ENDCLASS. -CLASS lct_table_validation DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. +CLASS lct_table_validation DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. PRIVATE SECTION. METHODS: setup, diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 8181da660..2dabe4cd0 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -81,7 +81,7 @@ CLASS ltcl_convert IMPLEMENTATION. ENDCLASS. "ltcl_convert IMPLEMENTATION -CLASS lth_critical_tests DEFINITION . +CLASS lth_critical_tests DEFINITION FINAL. PUBLIC SECTION. CLASS-METHODS: check_run_permission. From 49fad6edc67a9e433f2d9d85951325066cdeb4e6 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 15:23:13 +0100 Subject: [PATCH 13/27] background mode: fix --- src/zabapgit_background.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_background.prog.abap b/src/zabapgit_background.prog.abap index ef43ba48c..42e25676c 100644 --- a/src/zabapgit_background.prog.abap +++ b/src/zabapgit_background.prog.abap @@ -130,7 +130,7 @@ CLASS lcl_background IMPLEMENTATION. CLEAR ls_comment. ls_comment-username = lcl_objects=>changed_by( -item ). ls_comment-email = |{ ls_comment-username }@localhost|. - ls_comment-comment = 'abapGit background mode' ##NO_TEXT. + ls_comment-comment = build_comment( ls_files ). CREATE OBJECT lo_stage EXPORTING From 211e314844e9f14be364c831c769f4ea124e1004 Mon Sep 17 00:00:00 2001 From: larshp Date: Fri, 25 Nov 2016 15:27:45 +0100 Subject: [PATCH 14/27] background mode: fix lets try this instead, getting sloppy --- src/zabapgit_background.prog.abap | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/zabapgit_background.prog.abap b/src/zabapgit_background.prog.abap index 42e25676c..b183c992d 100644 --- a/src/zabapgit_background.prog.abap +++ b/src/zabapgit_background.prog.abap @@ -110,9 +110,10 @@ CLASS lcl_background IMPLEMENTATION. METHOD push_auto. - DATA: ls_comment TYPE ty_comment, - ls_files TYPE ty_stage_files, - lo_stage TYPE REF TO lcl_stage. + DATA: ls_comment TYPE ty_comment, + ls_files TYPE ty_stage_files, + ls_user_files LIKE ls_files, + lo_stage TYPE REF TO lcl_stage. FIELD-SYMBOLS: LIKE LINE OF ls_files-local. @@ -121,7 +122,6 @@ CLASS lcl_background IMPLEMENTATION. ls_files = lcl_stage_logic=>get( io_repo ). DO. - READ TABLE ls_files-local INDEX 1 ASSIGNING . IF sy-subrc <> 0. EXIT. @@ -130,13 +130,14 @@ CLASS lcl_background IMPLEMENTATION. CLEAR ls_comment. ls_comment-username = lcl_objects=>changed_by( -item ). ls_comment-email = |{ ls_comment-username }@localhost|. - ls_comment-comment = build_comment( ls_files ). CREATE OBJECT lo_stage EXPORTING iv_branch_name = io_repo->get_branch_name( ) iv_branch_sha1 = io_repo->get_sha1_remote( ). + CLEAR ls_user_files. + LOOP AT ls_files-local ASSIGNING . IF lcl_objects=>changed_by( -item ) = ls_comment-username. WRITE: / 'stage' ##NO_TEXT, @@ -147,9 +148,13 @@ CLASS lcl_background IMPLEMENTATION. lo_stage->add( iv_path = -file-path iv_filename = -file-filename iv_data = -file-data ). + + APPEND TO ls_user_files-local. ENDIF. ENDLOOP. + ls_comment-comment = build_comment( ls_user_files ). + io_repo->push( is_comment = ls_comment io_stage = lo_stage ). From 78aa64ee98d0d0fc2e1cf669c30ab392b0eb301f Mon Sep 17 00:00:00 2001 From: sshlapak Date: Fri, 25 Nov 2016 17:40:08 +0200 Subject: [PATCH 15/27] MSAG translations --- src/zabapgit_object_msag.prog.abap | 130 +++++++++++++++++++++++++++-- 1 file changed, 122 insertions(+), 8 deletions(-) diff --git a/src/zabapgit_object_msag.prog.abap b/src/zabapgit_object_msag.prog.abap index 1e030e260..bfb8d2837 100644 --- a/src/zabapgit_object_msag.prog.abap +++ b/src/zabapgit_object_msag.prog.abap @@ -13,6 +13,23 @@ CLASS lcl_object_msag DEFINITION INHERITING FROM lcl_objects_super FINAL. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. + PRIVATE SECTION. + TYPES: BEGIN OF ty_t100_texts, + sprsl TYPE t100-sprsl, + msgnr TYPE t100-msgnr, + text TYPE t100-text, + END OF ty_t100_texts, + tt_t100_texts TYPE STANDARD TABLE OF ty_t100_texts. + + METHODS: + serialize_texts + IMPORTING io_xml TYPE REF TO lcl_xml_output + RAISING lcx_exception, + deserialize_texts + IMPORTING io_xml TYPE REF TO lcl_xml_input + RAISING lcx_exception. + + ENDCLASS. "lcl_object_msag DEFINITION *----------------------------------------------------------------------* @@ -111,21 +128,24 @@ CLASS lcl_object_msag IMPLEMENTATION. lcx_exception=>raise( 'Error from RS_CORR_INSERT' ). ENDIF. - SELECT * FROM t100u INTO TABLE lt_before WHERE arbgb = ls_t100a-arbgb. + SELECT * FROM t100u INTO TABLE lt_before + WHERE arbgb = ls_t100a-arbgb ORDER BY msgnr. "#EC CI_GENBUFF "#EC CI_BYPASS LOOP AT lt_t100 ASSIGNING . DELETE lt_before WHERE msgnr = -msgnr. - MODIFY t100 FROM . "#EC CI_SUBRC - ASSERT sy-subrc = 0. - + IF sy-subrc <> 0. + lcx_exception=>raise( 'MSAG: Table T100 modify failed' ). + ENDIF. CLEAR ls_t100u. MOVE-CORRESPONDING TO ls_t100u ##enh_ok. ls_t100u-name = sy-uname. ls_t100u-datum = sy-datum. ls_t100u-selfdef = '3'. MODIFY t100u FROM ls_t100u. "#EC CI_SUBRC - ASSERT sy-subrc = 0. + IF sy-subrc <> 0. + lcx_exception=>raise( 'MSAG: Table T100U modify failed' ). + ENDIF. ENDLOOP. ls_t100a-masterlang = mv_language. @@ -134,19 +154,26 @@ CLASS lcl_object_msag IMPLEMENTATION. ls_t100a-ldate = sy-datum. ls_t100a-ltime = sy-uzeit. MODIFY t100a FROM ls_t100a. "#EC CI_SUBRC - ASSERT sy-subrc = 0. + IF sy-subrc <> 0. + lcx_exception=>raise( 'MSAG: Table T100A modify failed' ). + ENDIF. ls_t100t-sprsl = mv_language. ls_t100t-arbgb = ls_t100a-arbgb. ls_t100t-stext = ls_t100a-stext. MODIFY t100t FROM ls_t100t. "#EC CI_SUBRC - ASSERT sy-subrc = 0. + IF sy-subrc <> 0. + lcx_exception=>raise( 'MSAG: Table T100T modify failed' ). + ENDIF. LOOP AT lt_before INTO ls_t100u. DELETE FROM t100 WHERE arbgb = ls_t100u-arbgb AND msgnr = ls_t100u-msgnr. DELETE FROM t100u WHERE arbgb = ls_t100u-arbgb AND msgnr = ls_t100u-msgnr. ENDLOOP. + deserialize_texts( io_xml = io_xml ). + + ENDMETHOD. "deserialize METHOD lif_object~serialize. @@ -168,7 +195,7 @@ CLASS lcl_object_msag IMPLEMENTATION. SELECT * FROM t100 INTO TABLE lt_source WHERE sprsl = mv_language AND arbgb = lv_msg_id - ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF + ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF CLEAR: ls_inf-lastuser, ls_inf-ldate, @@ -179,9 +206,96 @@ CLASS lcl_object_msag IMPLEMENTATION. io_xml->add( ig_data = lt_source iv_name = 'T100' ). + serialize_texts( io_xml ). ENDMETHOD. "serialize + METHOD serialize_texts. + + DATA: lv_msg_id TYPE rglif-message_id, + lt_t100_texts TYPE tt_t100_texts, + lt_t100t TYPE table of t100t, + lt_i18n_langs TYPE TABLE OF langu. + + lv_msg_id = ms_item-obj_name. + + " Collect additional languages + " Skip master lang - it has been already serialized + SELECT DISTINCT sprsl AS langu INTO TABLE lt_i18n_langs + FROM t100t + WHERE arbgb = lv_msg_id + AND sprsl <> mv_language. "#EC CI_BYPASS "#EC CI_GENBUFF. + + SORT lt_i18n_langs ASCENDING. + + IF LINES( lt_i18n_langs ) > 0. + + SELECT * FROM t100t INTO CORRESPONDING FIELDS OF TABLE lt_t100t + WHERE sprsl <> mv_language + AND arbgb = lv_msg_id. "#EC CI_GENBUFF + + SELECT * FROM t100 INTO CORRESPONDING FIELDS OF TABLE lt_t100_texts + FOR ALL ENTRIES IN lt_i18n_langs + WHERE sprsl = lt_i18n_langs-table_line + AND arbgb = lv_msg_id + ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF + + SORT lt_t100t BY sprsl ASCENDING. + SORT lt_t100_texts BY sprsl msgnr ASCENDING. + + io_xml->add( iv_name = 'I18N_LANGS' + ig_data = lt_i18n_langs ). + + io_xml->add( iv_name = 'T100T' + ig_data = lt_t100t ). + + io_xml->add( iv_name = 'T100_TEXTS' + ig_data = lt_t100_texts ). + + ENDIF. + + ENDMETHOD. + + METHOD deserialize_texts. + + DATA: lv_msg_id TYPE rglif-message_id, + ls_t100 TYPE t100, + lt_t100t TYPE table of t100t, + lt_t100_texts TYPE tt_t100_texts, + lt_t100u TYPE TABLE OF t100u. + + FIELD-SYMBOLS: TYPE ty_t100_texts. + + + lv_msg_id = ms_item-obj_name. + + SELECT * FROM t100u INTO TABLE lt_t100u + WHERE arbgb = lv_msg_id ORDER BY PRIMARY KEY. "#EC CI_GENBUFF + + io_xml->read( EXPORTING iv_name = 'T100_TEXTS' + CHANGING cg_data = lt_t100_texts ). + + io_xml->read( EXPORTING iv_name = 'T100T' + CHANGING cg_data = lt_t100t ). + + MODIFY t100t FROM TABLE lt_t100t. "#EC CI_SUBRC + + LOOP AT lt_t100_texts ASSIGNING . + "check if message exists + READ TABLE lt_t100u TRANSPORTING NO FIELDS + WITH KEY arbgb = lv_msg_id msgnr = -msgnr BINARY SEARCH. + CHECK sy-subrc = 0. "if original message doesn't exist no translations added + + MOVE-CORRESPONDING TO ls_t100. + ls_t100-arbgb = lv_msg_id. + MODIFY t100 FROM ls_t100. "#EC CI_SUBRC + IF sy-subrc <> 0. + lcx_exception=>raise( 'MSAG: Table T100 modify failed' ). + ENDIF. + ENDLOOP. + + ENDMETHOD. + METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. From 2080398f38bec63da8cf6a8d0f6de9d2bebc1ba8 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 26 Nov 2016 13:03:46 +0200 Subject: [PATCH 16/27] W3xx deserialize, fix remote filesize change bug --- src/zabapgit_object_w3xx.prog.abap | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/zabapgit_object_w3xx.prog.abap b/src/zabapgit_object_w3xx.prog.abap index 1fb7f5c5a..220515c02 100644 --- a/src/zabapgit_object_w3xx.prog.abap +++ b/src/zabapgit_object_w3xx.prog.abap @@ -33,6 +33,11 @@ CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT. RETURNING VALUE(rv_ext) TYPE string RAISING lcx_exception. + METHODS patch_size + IMPORTING iv_size TYPE i + CHANGING ct_params TYPE ty_wwwparams_tt + RAISING lcx_exception. + ENDCLASS. "lcl_object_W3SUPER DEFINITION *----------------------------------------------------------------------* @@ -250,6 +255,12 @@ CLASS lcl_object_w3super IMPLEMENTATION. lcx_exception=>raise( 'Wrong W3xx type' ). ENDCASE. + " Update size of file (for the case file was actually changed remotely) + " Will also trigger "stage" at next sync if remote XML + " was not updated with the new file size + patch_size( EXPORTING iv_size = lv_size + CHANGING ct_params = lt_w3params ). + CALL FUNCTION 'WWWPARAMS_UPDATE' TABLES params = lt_w3params @@ -361,6 +372,21 @@ CLASS lcl_object_w3super IMPLEMENTATION. ENDMETHOD. " get_ext. + METHOD patch_size. + + FIELD-SYMBOLS LIKE LINE OF ct_params. + + READ TABLE ct_params ASSIGNING WITH KEY name = 'filesize'. + + IF sy-subrc > 0. + lcx_exception=>raise( |W3xx: Cannot find file size for { ms_key-objid }| ). + ENDIF. + + -value = iv_size. + SHIFT -value LEFT DELETING LEADING space. + + ENDMETHOD. " patch_size. + METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. From 96f805d50a065403d033189a466d11c4dbcfdfd2 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 26 Nov 2016 19:53:52 +0200 Subject: [PATCH 17/27] W3xx remove path from filename #374 --- src/zabapgit_object_w3xx.prog.abap | 22 ++++++++++++++++++++++ src/zabapgit_unit_test.prog.abap | 25 +++++++++++++++++++++++++ src/zabapgit_util.prog.abap | 13 +++++++++++++ 3 files changed, 60 insertions(+) diff --git a/src/zabapgit_object_w3xx.prog.abap b/src/zabapgit_object_w3xx.prog.abap index 220515c02..d480c2259 100644 --- a/src/zabapgit_object_w3xx.prog.abap +++ b/src/zabapgit_object_w3xx.prog.abap @@ -38,6 +38,10 @@ CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT. CHANGING ct_params TYPE ty_wwwparams_tt RAISING lcx_exception. + METHODS patch_filename + CHANGING ct_params TYPE ty_wwwparams_tt + RAISING lcx_exception. + ENDCLASS. "lcl_object_W3SUPER DEFINITION *----------------------------------------------------------------------* @@ -144,6 +148,9 @@ CLASS lcl_object_w3super IMPLEMENTATION. lv_size = ls_wwwparam-value. + " Remove file path (for security concerns) + patch_filename( CHANGING ct_params = lt_w3params ). + CASE ms_key-relid. WHEN 'MI'. CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' @@ -387,6 +394,21 @@ CLASS lcl_object_w3super IMPLEMENTATION. ENDMETHOD. " patch_size. + METHOD patch_filename. + + FIELD-SYMBOLS LIKE LINE OF ct_params. + + READ TABLE ct_params ASSIGNING WITH KEY name = 'filename'. + + IF sy-subrc > 0. + lcx_exception=>raise( |W3xx: Cannot find file name for { ms_key-objid }| ). + ENDIF. + + " Remove path + -value = lcl_path=>get_filename_from_syspath( |{ -value }| ). + + ENDMETHOD. " patch_filename. + METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 2dabe4cd0..9ff966597 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -1676,6 +1676,7 @@ CLASS ltcl_path DEFINITION METHODS split_file_location FOR TESTING. METHODS is_subdir FOR TESTING. METHODS change_dir FOR TESTING. + METHODS get_filename_from_syspath FOR TESTING. ENDCLASS. "ltcl_path @@ -1794,6 +1795,30 @@ CLASS ltcl_path IMPLEMENTATION. ENDMETHOD. + METHOD get_filename_from_syspath. + + DATA lv_filename TYPE string. + + lv_filename = lcl_path=>get_filename_from_syspath( 'file.txt' ). + assert_equals( act = lv_filename exp = 'file.txt' ). + + lv_filename = lcl_path=>get_filename_from_syspath( 'c:\dir\file.txt' ). + assert_equals( act = lv_filename exp = 'file.txt' ). + + lv_filename = lcl_path=>get_filename_from_syspath( 'c:\file.txt' ). + assert_equals( act = lv_filename exp = 'file.txt' ). + + lv_filename = lcl_path=>get_filename_from_syspath( '/dir/file.txt' ). + assert_equals( act = lv_filename exp = 'file.txt' ). + + lv_filename = lcl_path=>get_filename_from_syspath( '/file.txt' ). + assert_equals( act = lv_filename exp = 'file.txt' ). + + lv_filename = lcl_path=>get_filename_from_syspath( '\\server$\file.txt' ). + assert_equals( act = lv_filename exp = 'file.txt' ). + + ENDMETHOD. " get_filename_from_syspath. + ENDCLASS. "ltcl_path CLASS ltcl_file_status DEFINITION diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 98700dbbe..282848d42 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -360,6 +360,10 @@ CLASS lcl_path DEFINITION FINAL. iv_cd TYPE string RETURNING VALUE(rv_path) TYPE string. + CLASS-METHODS get_filename_from_syspath + IMPORTING iv_path TYPE string + RETURNING VALUE(rv_filename) TYPE string. + ENDCLASS. "lcl_path CLASS lcl_path IMPLEMENTATION. @@ -434,6 +438,15 @@ CLASS lcl_path IMPLEMENTATION. ENDMETHOD. "change_dir + METHOD get_filename_from_syspath. + + " filename | c:\filename | /dir/filename | \\server\filename + FIND FIRST OCCURRENCE OF REGEX '^(?:/(?:.+/)*|(?:\w:|\\)\\(?:.+\\)*)?([^\\/]+)$' + IN iv_path + SUBMATCHES rv_filename. + + ENDMETHOD. " get_filename_from_syspath. + ENDCLASS. "lcl_path *----------------------------------------------------------------------* From a108cda84575cb4571d943b92603fa4515b8f909 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 26 Nov 2016 19:54:57 +0200 Subject: [PATCH 18/27] Assets manager, first working code #374 --- src/zabapgit.prog.abap | 1 + src/zabapgit_css_common.w3mi.data.css | 584 +++++++++++++++++++++++ src/zabapgit_css_common.w3mi.xml | 41 ++ src/zabapgit_gui.prog.abap | 103 ++-- src/zabapgit_gui_asset_manager.prog.abap | 140 ++++++ src/zabapgit_gui_asset_manager.prog.xml | 48 ++ src/zabapgit_page.prog.abap | 13 +- 7 files changed, 894 insertions(+), 36 deletions(-) create mode 100644 src/zabapgit_css_common.w3mi.data.css create mode 100644 src/zabapgit_css_common.w3mi.xml create mode 100644 src/zabapgit_gui_asset_manager.prog.abap create mode 100644 src/zabapgit_gui_asset_manager.prog.xml diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 9c7ff8684..32538a1c0 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -69,6 +69,7 @@ INCLUDE zabapgit_background. INCLUDE zabapgit_transport. INCLUDE zabapgit_services. " All services here +INCLUDE zabapgit_gui_asset_manager. INCLUDE zabapgit_gui_pages. " All GUI pages here INCLUDE zabapgit_gui_pages_userexit IF FOUND. INCLUDE zabapgit_gui_router. diff --git a/src/zabapgit_css_common.w3mi.data.css b/src/zabapgit_css_common.w3mi.data.css new file mode 100644 index 000000000..949111af7 --- /dev/null +++ b/src/zabapgit_css_common.w3mi.data.css @@ -0,0 +1,584 @@ +/* + * ABAPGIT COMMON CSS + */ + +/* GLOBALS */ + +body { + font-family: Arial,Helvetica,sans-serif; + font-size: 12pt; + background: #E8E8E8; +} + +a, a:visited { + color: #4078c0; + text-decoration: none; +} + +a:hover, a:active { + cursor: pointer; + text-decoration: underline; +} + +img { border: 0px; vertical-align: middle; } +table { border-collapse: collapse; } +pre { display: inline; } + +form input, textarea, select { + border: 1px solid #DDD; + padding: 3px 6px; +} + +form input:focus, textarea:focus { + border: 1px solid #8cadd9; +} + +/* MODIFIERS */ +.grey { color: lightgrey !important; } +.emphasis { font-weight: bold !important; } +.attention { color: red !important; } +.crossout { text-decoration: line-through !important; } +.right { text-align:right; } +.paddings { padding: 0.5em 0.5em; } +.pad-sides { padding: 0 0.3em; } +.pad4px { padding: 4px; } + +/* STRUCTURE DIVS, HEADER & FOOTER */ +td.headpad { padding-top: 11px; } +td.logo { width: 164px; } + +div#header { + padding: 0.5em 0.5em; + border-bottom: 3px double lightgrey; +} + +div#toc { + padding: 0.5em 1em; + background-color: #f2f2f2; +} + +div#toc div.toc_grid { + margin: -0.3em 0em; +} + +div#toc div.toc_grid a { + color: #ccc; +} + +div#toc:hover div.toc_grid a { + color: #4078c0; +} + +div#toc div.toc_row { + margin: 0.3em 0em; +} + +div#footer { + padding: 0.5em 1em; + border-top: 3px double lightgrey; + text-align: center; +} + +div.dummydiv { + background-color: #f2f2f2; + padding: 0.5em 1em; + text-align: center; +} + +span.version { + display: block; + color: grey; + margin-top: 0.3em; +} + +span.page_title { + font-weight: normal; + font-size: 18pt; + color: #bbb; + padding-left: 0.4em; +} + +/* MENU */ +div.menu { display: inline; } +div.menu .menu_end { border-right: 0px !important; } +div.menu a { + padding-left: 0.5em; + padding-right: 0.5em; + border-right: 1px solid lightgrey; + font-size: 12pt; +} +div.menu_vertical { display: inline; } +div.menu_vertical a { + display: block; + font-size: 12pt; +} + +/*DROP DOWN*/ +.dropdown { + position: relative; + display: inline; +} +.dropdown_angle { + position: absolute !important; + right: -4px; + top: -1px; +} +.dropbtn_angle { + width: 0; + height: 0; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #4078c0; + transform: rotate(45deg); + -ms-transform: rotate(45deg); +} +.dropdown_content { + display: none; + z-index: 1; + position: absolute; + right: -12px; + top: 1em; + padding: 6px 10px 10px 10px; + white-space: nowrap; +} +.dropdown div.minizone { + display: none; + z-index: 1; + position: absolute; + padding: 0px; + width: 16px; + height: 16px; + bottom: 0px; + left: -16px; +} +.dropdown_angle .dropdown_content { + top: -1px; +} +.dropdown:hover .dropdown_content { display: block; } +.dropdown:hover .minizone { display: block; } +.dropdown_content a { + padding: 0.2em; + background-color: #f9f9f9; + text-decoration: none; + display: block; + border: none !important; +} +.dropdown_content div.box { + border-bottom: 1px solid #C0C0C0; + border-right: 1px solid #C0C0C0; + background-color: #f9f9f9; + padding: 2px; +} +.dropdown_content td { text-align: left; padding: 2px; } +.dropdown_content td a { padding: 0em 0.2em; } +.dropdown_content td.icon { padding: 0 3px 0 6px; } +.dropdown_content a:hover { background-color: #f1f1f1 } +.dropdown:hover .dropbtn { color: #79a0d2; } + +/* REPOSITORY */ +div.repo { + margin-top: 3px; + background-color: #f2f2f2; + padding: 0.5em 1em 0.5em 1em; +} +.repo_name span.name { + font-weight: bold; + color: #333; + font-size: 14pt; +} +.repo_name span.url { + color: #ccc; + font-size: 12pt; + margin-left: 0.5em; +} +.repo_name img { + vertical-align: baseline; + margin: 0 5px 0 5px; +} +.repo_attr { + color: grey; + font-size: 12pt; +} +.repo_attr span { + margin-left: 0.2em; + margin-right: 0.5em; +} +.repo_attr span.bg_marker { + border: 1px solid #d2d2d2; + border-radius: 3px; + background: #d8d8d8; + color: #fff; + font-size: 8pt; + padding: 4px 2px 3px 2px; +} +.repo_attr span.branch { + padding: 2px 4px; + border: 1px solid #d9d9d9; + border-radius: 4px; + background-color: #e2e2e2; +} +.repo_attr span.branch_head { + border-color: #d8dff3; + background-color: #eceff9; +} +.repo_attr span.branch_branch { + border-color: #e7d9b1; + background-color: #f8f0d8; +} + +/* MISC AND REFACTOR */ +.hidden-submit { + border: 0 none; + height: 0; + width: 0; + padding: 0; + margin: 0; + overflow: hidden; +} + +#stdout { + text-align: right; + padding-right: 0.5em; + color: #ccc; + font-style: italic; + font-size: small; +} + +/* REPOSITORY TABLE*/ +div.repo_container { + position: relative; +} +.repo_tab { + border: 1px solid #DDD; + border-radius: 3px; + background: #fff; + margin-top: 0.5em; +} +.repo_tab td { + border-top: 1px solid #eee; + vertical-align: middle; + color: #333; + padding-top: 2px; + padding-bottom: 2px; +} +.repo_tab td.icon { + width: 32px; + text-align: center; +} +.repo_tab td.type { + width: 3em; +} +.repo_tab td.object { + padding-left: 0.5em; +} +.repo_tab td.files { + padding-left: 0.5em; +} +.repo_tab td.cmd { + text-align: right; + padding-left: 0.5em; + padding-right: 0.7em; +} +.repo_tab tr.unsupported { color: lightgrey; } +.repo_tab tr.modified { background: #fbf7e9; } +.repo_tab tr:first-child td { border-top: 0px; } +.repo_tab td.current_dir { color: #ccc; } +.repo_tab td.cmd span.state-block { + margin-left: 1em; + font-family: Consolas, Lucida Console, Courier, monospace; + font-size: x-small; + vertical-align: 13%; + display: inline-block; + text-align: center; +} +.repo_tab td.cmd span.state-block span { + display: inline-block; + padding: 0px 2px; + border: 1px solid #000; +} +.repo_tab td.cmd span.state-block span.added { + background-color: #69ad74; + border-color: #579e64; + color: white; +} +.repo_tab td.cmd span.state-block span.changed { + background-color: #e0c150; + border-color: #d4af25; + color: white; +} +.repo_tab td.cmd span.state-block span.mixed { + background-color: #e0c150; + border-color: #579e64; + color: #69ad74; +} +.repo_tab td.cmd span.state-block span.deleted { + background-color: #c76861; + border-color: #b8605a; + color: white; +} +.repo_tab td.cmd span.state-block span.none { + background-color: #e8e8e8; + border-color: #dbdbdb; + color: #c8c8c8; +} + +/* STAGE */ +.stage_tab { + border: 1px solid #DDD; + background: #fff; + margin-top: 0.2em; +} +.stage_tab td { + border-top: 1px solid #eee; + color: #333; + vertical-align: middle; + padding: 2px 0.5em; +} +.stage_tab th { + color: #BBB; + font-size: 10pt; + text-align: left; + font-weight: normal; + background-color: #edf2f9; + padding: 4px 0.5em; +} +.stage_tab td.status { + width: 2em; + text-align: center; +} +.stage_tab tbody tr:first-child td { padding-top: 0.5em; } +.stage_tab tbody tr:last-child td { padding-bottom: 0.5em; } +.stage_tab td.cmd a { padding: 0px 4px; } + +/* STAGE */ +.stage_tab td.method { + color: #ccc; +} +.stage_tab tr.firstrow td { border-top: 0px; } +.stage_tab tr.title td { + color: #BBB; + font-size: 10pt; + background-color: #edf2f9; + padding: 4px 0.5em; + text-align: center; +} + +/* COMMIT */ +div.form_div { + margin: 0.5em 0em; + background-color: #F8F8F8; + padding: 1em 1em; +} + +div.form_div td.field_name { + color: #BBB; + padding-right: 1em; +} + +/* SETTINGS STYLES */ +div.settings_container { + padding: 0.5em; + font-size: 10pt; + color: #444; + background-color: #f2f2f2; +} + +/* DIFF */ +div.diff { + background-color: #f2f2f2; + padding: 0.7em +} +div.diff_head { + padding-bottom: 0.7em; +} +span.diff_name { + padding-left: 0.5em; + color: grey; +} +span.diff_name strong { + color: #333; +} +span.diff_banner { + border-style: solid; + border-width: 1px; + border-radius: 3px; + padding-left: 0.3em; + padding-right: 0.3em; +} +.diff_ins { + border-color: #7bea7b; + background-color: #d3f8d3; +} +.diff_del { + border-color: #ff667d; + background-color: #ffccd4; +} +.diff_upd { + border-color: #dada00; + background-color: #ffffcc; +} +div.diff_content { + background: #fff; + border-top: 1px solid #DDD; + border-bottom: 1px solid #DDD; +} +div.diff_head span.state-block { + margin-left: 0.5em; + font-family: Consolas, Lucida Console, Courier, monospace; + display: inline-block; + text-align: center; +} +div.diff_head span.state-block span { + display: inline-block; + padding: 0px 4px; + border: 1px solid #000; +} +div.diff_head span.state-block span.added { + background-color: #69ad74; + border-color: #579e64; + color: white; +} +div.diff_head span.state-block span.changed { + background-color: #e0c150; + border-color: #d4af25; + color: white; +} +div.diff_head span.state-block span.mixed { + background-color: #e0c150; + border-color: #579e64; + color: #69ad74; +} +div.diff_head span.state-block span.deleted { + background-color: #c76861; + border-color: #b8605a; + color: white; +} +div.diff_head span.state-block span.none { + background-color: #e8e8e8; + border-color: #dbdbdb; + color: #c8c8c8; +} + +/* DIFF TABLE */ +table.diff_tab { + font-family: Consolas, Courier, monospace; + font-size: 10pt; +} +table.diff_tab td,th { + color: #444; + padding-left: 0.5em; + padding-right: 0.5em; +} +table.diff_tab th { + text-align: left; + font-weight: normal; + padding-top: 3px; + padding-bottom: 3px; +} +table.diff_tab thead.header th { + color: #EEE; + background-color: #BBB; + text-align: left; + font-weight: bold; + padding-left: 0.5em; + font-size: 9pt; +} +table.diff_tab thead.nav_line { + background-color: #edf2f9; +} +table.diff_tab thead.nav_line th { + color: #bbb; +} +table.diff_tab td.num, th.num { + text-align: right; + color: #ccc; + border-left: 1px solid #eee; + border-right: 1px solid #eee; +} +table.diff_tab code { + font-family: inherit; + white-space: pre; +} +table.diff_tab tbody tr:first-child td { padding-top: 0.5em; } +table.diff_tab tbody tr:last-child td { padding-bottom: 0.5em; } + +/* DEBUG INFO STYLES */ +div.debug_container { + padding: 0.5em; + font-size: 10pt; + color: #444; + font-family: Consolas, Courier, monospace; +} +div.debug_container p { + margin: 0px; +} + +/* DB ENTRIES */ +div.db_list { + background-color: #f2f2f2; + padding: 0.5em; +} +table.db_tab pre { + display: inline-block; + overflow: hidden; + word-wrap:break-word; + white-space: pre-wrap; + margin: 0px; + width: 30em; +} +table.db_tab tr.firstrow td { padding-top: 0.5em; } +table.db_tab th { + text-align: left; + color: #888; + padding: 0.5em; + border-bottom: 1px #ddd solid; +} +table.db_tab td { + color: #333; + padding: 0.5em; + vertical-align: top; +} +table.db_tab td.data { + color: #888; + font-style: italic; +} + +/* DB ENTRY DISPLAY */ +div.db_entry { + background-color: #f2f2f2; + padding: 0.5em; +} +div.db_entry pre { + display: block; + overflow: hidden; + word-wrap:break-word; + white-space: pre-wrap; + background-color: #eaeaea; + padding: 0.5em; + margin: 0.5em 0em; + width: 50em; +} +div.db_entry table.toolbar { + width: 50em; +} +table.tag { + display: inline-block; + border: 1px #b3c1cc solid; + background-color: #eee; + border-radius: 3px; + margin-right: 0.5em; +} +table.tag td { padding: 0.2em 0.5em; } +table.tag td.label { background-color: #b3c1cc; } + +/* DB ENTRY DISPLAY */ +div.db_entry textarea { margin: 0.5em 0em; } +table.tag { + display: inline-block; + border: 1px #b3c1cc solid; + background-color: #eee; + border-radius: 3px; + margin-right: 0.5em; +} +table.tag td { padding: 0.2em 0.5em; } +table.tag td.label { background-color: #b3c1cc; } diff --git a/src/zabapgit_css_common.w3mi.xml b/src/zabapgit_css_common.w3mi.xml new file mode 100644 index 000000000..acb0bd0d7 --- /dev/null +++ b/src/zabapgit_css_common.w3mi.xml @@ -0,0 +1,41 @@ + + + + + ZABAPGIT_CSS_COMMON + AbapGit common styles + + + MI + ZABAPGIT_CSS_COMMON + fileextension + .css + + + MI + ZABAPGIT_CSS_COMMON + filename + styles.css + + + MI + ZABAPGIT_CSS_COMMON + filesize + 12130 + + + MI + ZABAPGIT_CSS_COMMON + mimetype + text/css + + + MI + ZABAPGIT_CSS_COMMON + version + 00001 + + + + + diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index dc15db32e..9a3290585 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -31,6 +31,7 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. mt_stack TYPE STANDARD TABLE OF ty_page_stack, mt_assets TYPE tt_w3urls, mo_router TYPE REF TO lcl_gui_router, + mo_asset_man TYPE REF TO lcl_gui_asset_manager, mo_html_viewer TYPE REF TO cl_gui_html_viewer. METHODS constructor @@ -41,10 +42,19 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. METHODS cache_image IMPORTING iv_url TYPE w3url - iv_base64 TYPE string. + iv_base64 TYPE string + RETURNING VALUE(rv_url) TYPE w3url. METHODS cache_html - IMPORTING iv_html TYPE string + IMPORTING iv_text TYPE string + RETURNING VALUE(rv_url) TYPE w3url. + + METHODS cache_asset + IMPORTING iv_text TYPE string OPTIONAL + iv_xdata TYPE xstring OPTIONAL + iv_url TYPE w3url OPTIONAL + iv_type TYPE c + iv_subtype TYPE c RETURNING VALUE(rv_url) TYPE w3url. METHODS render @@ -219,17 +229,27 @@ CLASS lcl_gui IMPLEMENTATION. ls_event LIKE LINE OF lt_events. CREATE OBJECT mo_router. + CREATE OBJECT mo_asset_man. CREATE OBJECT mo_html_viewer EXPORTING query_table_disabled = abap_true parent = cl_gui_container=>screen0. - CLEAR ls_event. - ls_event-eventid = mo_html_viewer->m_id_sapevent. + cache_asset( iv_xdata = mo_asset_man->get_asset( 'css_common' ) + iv_url = 'css/common.css' + iv_type = 'text' + iv_subtype = 'css' ). + +* cache_asset( iv_xdata = mo_asset_man->get_asset( 'js_common' ) +* iv_url = 'js/common.js' +* iv_type = 'text' +* iv_subtype = 'javascript' ). + + ls_event-eventid = mo_html_viewer->m_id_sapevent. ls_event-appl_event = abap_true. APPEND ls_event TO lt_events. - mo_html_viewer->set_registered_events( lt_events ). + mo_html_viewer->set_registered_events( lt_events ). SET HANDLER me->on_event FOR mo_html_viewer. ENDMETHOD. "startup @@ -246,57 +266,80 @@ CLASS lcl_gui IMPLEMENTATION. METHOD cache_html. - DATA: lt_data TYPE TABLE OF text200. - - CALL FUNCTION 'SCMS_STRING_TO_FTEXT' - EXPORTING - text = iv_html - TABLES - ftext_tab = lt_data. - - mo_html_viewer->load_data( - IMPORTING - assigned_url = rv_url - CHANGING - data_table = lt_data ). + rv_url = cache_asset( iv_text = iv_text + iv_type = 'text' + iv_subtype = 'html' ). ENDMETHOD. "cache_html METHOD cache_image. - DATA lv_xtmp TYPE xstring. - DATA lv_size TYPE int4. - DATA lt_xdata TYPE TABLE OF w3_mime. " RAW255 + DATA lv_xstr TYPE xstring. CALL FUNCTION 'SSFC_BASE64_DECODE' EXPORTING b64data = iv_base64 IMPORTING - bindata = lv_xtmp + bindata = lv_xstr EXCEPTIONS OTHERS = 1. ASSERT sy-subrc = 0. " Image data error + rv_url = cache_asset( iv_xdata = lv_xstr + iv_url = iv_url + iv_type = 'image' + iv_subtype = 'png' ). + + ENDMETHOD. "cache_image + + METHOD cache_asset. + + DATA: lv_xstr TYPE xstring, + lt_xdata TYPE TABLE OF w3_mime, " RAW255 + lv_size TYPE int4. + + ASSERT iv_text IS SUPPLIED OR iv_xdata IS SUPPLIED. + + IF iv_text IS SUPPLIED. " String input + + CALL FUNCTION 'SCMS_STRING_TO_XSTRING' + EXPORTING + text = iv_text + IMPORTING + buffer = lv_xstr + EXCEPTIONS + OTHERS = 1. + ASSERT sy-subrc = 0. + + ELSE. " Raw input + lv_xstr = iv_xdata. + ENDIF. + CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING - buffer = lv_xtmp + buffer = lv_xstr IMPORTING output_length = lv_size TABLES binary_tab = lt_xdata. mo_html_viewer->load_data( - EXPORTING type = 'image' - subtype = 'png' - size = lv_size - url = iv_url - CHANGING data_table = lt_xdata - EXCEPTIONS OTHERS = 1 ) ##NO_TEXT. + EXPORTING + type = iv_type + subtype = iv_subtype + size = lv_size + url = iv_url + IMPORTING + assigned_url = rv_url + CHANGING + data_table = lt_xdata + EXCEPTIONS + OTHERS = 1 ) ##NO_TEXT. ASSERT sy-subrc = 0. " Image data error - ENDMETHOD. "cache_image + ENDMETHOD. " cache_asset. METHOD get_current_page_name. IF mi_cur_page IS BOUND. diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap new file mode 100644 index 000000000..20f42129e --- /dev/null +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -0,0 +1,140 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_GUI_ASSET_MANAGER +*&---------------------------------------------------------------------* + +CLASS lcl_gui_asset_manager DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_gui. + PUBLIC SECTION. + + METHODS get_asset + IMPORTING iv_asset_name TYPE string + RETURNING VALUE(rv_data) TYPE xstring + RAISING lcx_exception. + + PRIVATE SECTION. + + METHODS get_inline_asset + IMPORTING iv_asset_name TYPE string + RETURNING VALUE(rv_data) TYPE xstring + RAISING lcx_exception. + + METHODS get_mime_asset + IMPORTING iv_asset_name TYPE c + RETURNING VALUE(rv_data) TYPE xstring + RAISING lcx_exception. + +ENDCLASS. "lcl_gui_asset_manager + +CLASS lcl_gui_asset_manager IMPLEMENTATION. + + METHOD get_asset. + + DATA: lv_asset_name TYPE string, + lv_mime_name TYPE wwwdatatab-objid. + + lv_asset_name = to_upper( iv_asset_name ). + + CASE lv_asset_name. + WHEN 'CSS_COMMON'. + lv_mime_name = 'ZABAPGIT_CSS_COMMON'. + WHEN 'JS_COMMON'. + lv_mime_name = 'ZABAPGIT_JS_COMMON'. + WHEN OTHERS. + lcx_exception=>raise( |Improper resource name: { iv_asset_name }| ). + ENDCASE. + + rv_data = get_mime_asset( lv_mime_name ). + IF rv_data IS INITIAL. " Fallback to inline asset + rv_data = get_inline_asset( lv_asset_name ). + ENDIF. + + IF rv_data IS INITIAL. + lcx_exception=>raise( |Failed to get GUI resource: { iv_asset_name }| ). + ENDIF. + + ENDMETHOD. " get_asset. + + METHOD get_mime_asset. + + DATA: ls_key TYPE wwwdatatab, + lv_size_c TYPE wwwparams-value, + lv_size TYPE i, + lt_w3mime TYPE STANDARD TABLE OF w3mime. + + ls_key-relid = 'MI'. + ls_key-objid = iv_asset_name. + + " Get exact file size + CALL FUNCTION 'WWWPARAMS_READ' + EXPORTING + relid = ls_key-relid + objid = ls_key-objid + name = 'filesize' + IMPORTING + value = lv_size_c + EXCEPTIONS + entry_not_exists = 1. + + IF sy-subrc IS NOT INITIAL. + RETURN. + ENDIF. + + lv_size = lv_size_c. + + " Get binary data + CALL FUNCTION 'WWWDATA_IMPORT' + EXPORTING + key = ls_key + TABLES + mime = lt_w3mime + EXCEPTIONS + wrong_object_type = 1 + import_error = 2. + + IF sy-subrc IS NOT INITIAL. + RETURN. + ENDIF. + + CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' + EXPORTING + input_length = lv_size + IMPORTING + buffer = rv_data + TABLES + binary_tab = lt_w3mime + EXCEPTIONS + failed = 1. + + IF sy-subrc IS NOT INITIAL. + RETURN. + ENDIF. + + ENDMETHOD. " get_mime_asset. + + METHOD get_inline_asset. + + DATA: lt_data TYPE ty_string_tt, + lv_str TYPE string. + + CASE iv_asset_name. + WHEN 'CSS_COMMON'. + " @@abapmerge include src/zabapgit_css_common.data.css > APPEND '$$' TO lt_data. + WHEN 'JS_COMMON'. + + WHEN OTHERS. + lcx_exception=>raise( |No inline resource: { iv_asset_name }| ). + ENDCASE. + + CONCATENATE LINES OF lt_data INTO lv_str SEPARATED BY gc_newline. + + CALL FUNCTION 'SCMS_STRING_TO_XSTRING' + EXPORTING + text = lv_str + IMPORTING + buffer = rv_data + EXCEPTIONS + OTHERS = 1. + ASSERT sy-subrc = 0. + + ENDMETHOD. " get_inline_asset. + +ENDCLASS. "lcl_gui_asset_manager \ No newline at end of file diff --git a/src/zabapgit_gui_asset_manager.prog.xml b/src/zabapgit_gui_asset_manager.prog.xml new file mode 100644 index 000000000..bcab6cac1 --- /dev/null +++ b/src/zabapgit_gui_asset_manager.prog.xml @@ -0,0 +1,48 @@ + + + + + + ZABAPGIT_GUI_ASSET_MANAGER + A + + + X + + + + + + I + + + + 0000-00-00 + + 0000-00-00 + + + + + E + + + 0000-00-00 + + 0000-00-00 + + + X + + + + R + + Include ZABAPGIT_GUI_ASSET_MANAGER + 34 + + + + + + diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 0eaaff4db..53771ca31 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -227,13 +227,14 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( 'abapGit' ). "#EC NOTEXT - ro_html->add( styles( ) ). + ro_html->add( '' ). +* ro_html->add( styles( ) ). - IF io_include_style IS BOUND. - ro_html->add( '' ). "#EC NOTEXT - ENDIF. +* IF io_include_style IS BOUND. +* ro_html->add( '' ). "#EC NOTEXT +* ENDIF. ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT From e452f2a8e3f60b715237d248c98d48b4a72e802a Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 27 Nov 2016 00:02:13 +0200 Subject: [PATCH 19/27] remove inline styles #374 --- src/zabapgit_page.prog.abap | 263 --------------------------- src/zabapgit_page_commit.prog.abap | 45 +---- src/zabapgit_page_db.prog.abap | 109 +---------- src/zabapgit_page_debug.prog.abap | 21 +-- src/zabapgit_page_diff.prog.abap | 130 +------------ src/zabapgit_page_main.prog.abap | 91 +-------- src/zabapgit_page_settings.prog.abap | 16 +- src/zabapgit_page_stage.prog.abap | 38 +--- 8 files changed, 9 insertions(+), 704 deletions(-) diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 53771ca31..1a9e85861 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -72,9 +72,6 @@ CLASS lcl_gui_page_super DEFINITION ABSTRACT. IMPORTING iv_url TYPE string RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. - PRIVATE SECTION. - METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. - ENDCLASS. CLASS lcl_gui_page_super IMPLEMENTATION. @@ -228,14 +225,6 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( '' ). "#EC NOTEXT ro_html->add( 'abapGit' ). "#EC NOTEXT ro_html->add( '' ). -* ro_html->add( styles( ) ). - -* IF io_include_style IS BOUND. -* ro_html->add( '' ). "#EC NOTEXT -* ENDIF. - ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT @@ -339,258 +328,6 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ENDMETHOD. - METHOD styles. - - CREATE OBJECT ro_html. - - _add ''. - - ENDMETHOD. "common styles - METHOD lif_gui_page~get_assets. " Common images here DATA ls_image TYPE ty_web_asset. diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 0e4152674..db6f789a8 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -32,8 +32,6 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. render_form RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper RAISING lcx_exception, - styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, scripts RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. @@ -74,7 +72,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'COMMIT' ) ). ro_html->add( '
' ). @@ -215,47 +213,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ENDMETHOD. "render_menu - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* STAGE */'. - _add '.stage_tab {'. - _add ' border: 1px solid #DDD;'. - _add ' background: #fff;'. - _add ' margin-top: 0.2em;'. - _add '}'. - _add '.stage_tab td {'. - _add ' border-top: 1px solid #eee;'. - _add ' color: #333;'. - _add ' vertical-align: middle;'. - _add ' padding: 2px 0.5em;'. - _add '}'. - _add '.stage_tab td.method {'. - _add ' color: #ccc;'. - _add '}'. - _add '.stage_tab tr.firstrow td { border-top: 0px; } '. - _add '.stage_tab tr.title td {'. - _add ' color: #BBB;'. - _add ' font-size: 10pt;'. - _add ' background-color: #edf2f9;'. - _add ' padding: 4px 0.5em;'. - _add ' text-align: center;'. - _add '}'. - - _add '/* COMMIT */'. - _add 'div.form_div {'. - _add ' margin: 0.5em 0em;'. - _add ' background-color: #F8F8F8;'. - _add ' padding: 1em 1em;'. - _add '}'. - _add 'div.form_div td.field_name {'. - _add ' color: #BBB;'. - _add ' padding-right: 1em;'. - _add '}'. - - ENDMETHOD. "styles - METHOD scripts. CREATE OBJECT ro_html. diff --git a/src/zabapgit_page_db.prog.abap b/src/zabapgit_page_db.prog.abap index 8aff9e1be..b4a158417 100644 --- a/src/zabapgit_page_db.prog.abap +++ b/src/zabapgit_page_db.prog.abap @@ -13,9 +13,6 @@ CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_supe PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. - METHODS styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. - ENDCLASS. CLASS lcl_gui_page_db_display IMPLEMENTATION. @@ -47,7 +44,7 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. format = cl_abap_format=>e_html_attr ). CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'CONFIG DISPLAY' ) ). ro_html->add( '
' ). @@ -69,43 +66,6 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. ENDMETHOD. - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* DB ENTRY DISPLAY */'. - _add 'div.db_entry {'. - _add ' background-color: #f2f2f2;'. - _add ' padding: 0.5em;'. - _add '}'. - - _add 'div.db_entry pre {'. - _add ' display: block;'. - _add ' overflow: hidden;'. - _add ' word-wrap:break-word;'. - _add ' white-space: pre-wrap;'. - _add ' background-color: #eaeaea;'. - _add ' padding: 0.5em;'. - _add ' margin: 0.5em 0em;'. - _add ' width: 50em;'. - _add '}'. - - _add 'div.db_entry table.toolbar {'. - _add ' width: 50em;'. - _add '}'. - - _add 'table.tag {'. - _add ' display: inline-block;'. - _add ' border: 1px #b3c1cc solid;'. - _add ' background-color: #eee;'. - _add ' border-radius: 3px;'. - _add ' margin-right: 0.5em; '. - _add '}'. - _add 'table.tag td { padding: 0.2em 0.5em; }'. - _add 'table.tag td.label { background-color: #b3c1cc; }'. - - ENDMETHOD. "styles - ENDCLASS. CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. @@ -119,9 +79,6 @@ CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. - METHODS styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. - METHODS scripts RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. @@ -158,7 +115,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. CREATE OBJECT ro_html. CREATE OBJECT lo_toolbar. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'CONFIG EDIT' ) ). ro_html->add( '
' ). @@ -193,28 +150,6 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. ENDMETHOD. - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* DB ENTRY DISPLAY */'. - _add 'div.db_entry {'. - _add ' background-color: #f2f2f2;'. - _add ' padding: 0.5em;'. - _add '}'. - _add 'div.db_entry textarea { margin: 0.5em 0em; }'. - _add 'table.tag {'. - _add ' display: inline-block;'. - _add ' border: 1px #b3c1cc solid;'. - _add ' background-color: #eee;'. - _add ' border-radius: 3px;'. - _add ' margin-right: 0.5em; '. - _add '}'. - _add 'table.tag td { padding: 0.2em 0.5em; }'. - _add 'table.tag td.label { background-color: #b3c1cc; }'. - - ENDMETHOD. "styles - METHOD scripts. CREATE OBJECT ro_html. @@ -233,8 +168,6 @@ CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. METHODS lif_gui_page~render REDEFINITION. PRIVATE SECTION. - METHODS styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS explain_content IMPORTING is_data TYPE lcl_persistence_db=>ty_content RETURNING VALUE(rv_text) TYPE string @@ -259,7 +192,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'DATABASE PERSISTENCY' ) ). ro_html->add( '
' ). @@ -350,40 +283,4 @@ CLASS lcl_gui_page_db IMPLEMENTATION. ENDCASE. ENDMETHOD. "explain_content - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* DB ENTRIES */'. - _add 'div.db_list {'. - _add ' background-color: #f2f2f2;'. - _add ' padding: 0.5em;'. - _add '}'. - _add 'table.db_tab pre {'. - _add ' display: inline-block;'. - _add ' overflow: hidden;'. - _add ' word-wrap:break-word;'. - _add ' white-space: pre-wrap;'. - _add ' margin: 0px;'. - _add ' width: 30em;'. - _add '}'. - _add 'table.db_tab tr.firstrow td { padding-top: 0.5em; }'. - _add 'table.db_tab th {'. - _add ' text-align: left;'. - _add ' color: #888;'. - _add ' padding: 0.5em;'. - _add ' border-bottom: 1px #ddd solid;'. - _add '}'. - _add 'table.db_tab td {'. - _add ' color: #333;'. - _add ' padding: 0.5em;'. - _add ' vertical-align: top;'. - _add '}'. - _add 'table.db_tab td.data {'. - _add ' color: #888;'. - _add ' font-style: italic;'. - _add '}'. - - ENDMETHOD. "styles - ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_debug.prog.abap b/src/zabapgit_page_debug.prog.abap index db2641f77..151ca4017 100644 --- a/src/zabapgit_page_debug.prog.abap +++ b/src/zabapgit_page_debug.prog.abap @@ -6,8 +6,6 @@ CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super PUBLIC SECTION. METHODS lif_gui_page~render REDEFINITION. - METHODS styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS scripts RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. @@ -25,7 +23,7 @@ CLASS lcl_gui_page_debuginfo IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'DEBUG INFO' ) ). ro_html->add( '
' ). @@ -89,23 +87,6 @@ CLASS lcl_gui_page_debuginfo IMPLEMENTATION. ENDMETHOD. " render_supported_object_types - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* DEBUG INFO STYLES */'. - _add 'div.debug_container {'. - _add ' padding: 0.5em;'. - _add ' font-size: 10pt;'. - _add ' color: #444;'. - _add ' font-family: Consolas, Courier, monospace;'. - _add '}'. - _add 'div.debug_container p {'. - _add ' margin: 0px;'. - _add '}'. - - ENDMETHOD. - METHOD scripts. CREATE OBJECT ro_html. diff --git a/src/zabapgit_page_diff.prog.abap b/src/zabapgit_page_diff.prog.abap index 9c0a97d04..e026a1d8e 100644 --- a/src/zabapgit_page_diff.prog.abap +++ b/src/zabapgit_page_diff.prog.abap @@ -33,7 +33,6 @@ CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super. PRIVATE SECTION. DATA: mt_diff_files TYPE tt_file_diff. - METHODS styles RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_diff IMPORTING is_diff TYPE ty_file_diff RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. @@ -175,133 +174,6 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ENDMETHOD. "append_diff - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* DIFF */'. "#EC NOTEXT - _add 'div.diff {'. "#EC NOTEXT - _add ' background-color: #f2f2f2;'. "#EC NOTEXT - _add ' padding: 0.7em '. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'div.diff_head {'. "#EC NOTEXT - _add ' padding-bottom: 0.7em;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'span.diff_name {'. "#EC NOTEXT - _add ' padding-left: 0.5em;'. "#EC NOTEXT - _add ' color: grey;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'span.diff_name strong {'. "#EC NOTEXT - _add ' color: #333;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'span.diff_banner {'. "#EC NOTEXT - _add ' border-style: solid;'. "#EC NOTEXT - _add ' border-width: 1px;'. "#EC NOTEXT - _add ' border-radius: 3px;'. "#EC NOTEXT - _add ' padding-left: 0.3em;'. "#EC NOTEXT - _add ' padding-right: 0.3em;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add '.diff_ins {'. "#EC NOTEXT - _add ' border-color: #7bea7b;'. "#EC NOTEXT - _add ' background-color: #d3f8d3;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add '.diff_del {'. "#EC NOTEXT - _add ' border-color: #ff667d;'. "#EC NOTEXT - _add ' background-color: #ffccd4;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add '.diff_upd {'. "#EC NOTEXT - _add ' border-color: #dada00;'. "#EC NOTEXT - _add ' background-color: #ffffcc;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'div.diff_content {'. "#EC NOTEXT - _add ' background: #fff;'. "#EC NOTEXT - _add ' border-top: 1px solid #DDD;'. "#EC NOTEXT - _add ' border-bottom: 1px solid #DDD;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - - _add 'div.diff_head span.state-block {'. - _add ' margin-left: 0.5em;'. - _add ' font-family: Consolas, Lucida Console, Courier, monospace;'. - _add ' display: inline-block;'. - _add ' text-align: center;'. - _add '}'. - _add 'div.diff_head span.state-block span {'. - _add ' display: inline-block;'. - _add ' padding: 0px 4px;'. - _add ' border: 1px solid #000;'. - _add '}'. - _add 'div.diff_head span.state-block span.added {'. - _add ' background-color: #69ad74; '. - _add ' border-color: #579e64;'. - _add ' color: white;'. - _add '}'. - _add 'div.diff_head span.state-block span.changed {'. - _add ' background-color: #e0c150;'. - _add ' border-color: #d4af25;'. - _add ' color: white;'. - _add '}'. - _add 'div.diff_head span.state-block span.mixed {'. - _add ' background-color: #e0c150;'. - _add ' border-color: #579e64;'. - _add ' color: #69ad74;'. - _add '}'. - _add 'div.diff_head span.state-block span.deleted {'. - _add ' background-color: #c76861;'. - _add ' border-color: #b8605a;'. - _add ' color: white;'. - _add '}'. - _add 'div.diff_head span.state-block span.none {'. - _add ' background-color: #e8e8e8;'. - _add ' border-color: #dbdbdb;'. - _add ' color: #c8c8c8;'. - _add '}'. - - " Table part - _add '/* DIFF TABLE */'. "#EC NOTEXT - _add 'table.diff_tab {'. "#EC NOTEXT - _add ' font-family: Consolas, Courier, monospace;'. "#EC NOTEXT - _add ' font-size: 10pt;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab td,th {'. "#EC NOTEXT - _add ' color: #444;'. "#EC NOTEXT - _add ' padding-left: 0.5em;'. "#EC NOTEXT - _add ' padding-right: 0.5em;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab th {'. "#EC NOTEXT - _add ' text-align: left;'. "#EC NOTEXT - _add ' font-weight: normal;'. "#EC NOTEXT - _add ' padding-top: 3px;'. "#EC NOTEXT - _add ' padding-bottom: 3px;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab thead.header th {'. "#EC NOTEXT - _add ' color: #EEE;'. "#EC NOTEXT - _add ' background-color: #BBB;'. "#EC NOTEXT - _add ' text-align: left;'. "#EC NOTEXT - _add ' font-weight: bold;'. "#EC NOTEXT - _add ' padding-left: 0.5em;'. "#EC NOTEXT - _add ' font-size: 9pt;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab thead.nav_line {'. "#EC NOTEXT - _add ' background-color: #edf2f9;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab thead.nav_line th {'. "#EC NOTEXT - _add ' color: #bbb;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab td.num, th.num {'. "#EC NOTEXT - _add ' text-align: right;'. "#EC NOTEXT - _add ' color: #ccc;'. "#EC NOTEXT - _add ' border-left: 1px solid #eee;'. "#EC NOTEXT - _add ' border-right: 1px solid #eee;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab code {'. "#EC NOTEXT - _add ' font-family: inherit;'. "#EC NOTEXT - _add ' white-space: pre;'. "#EC NOTEXT - _add '}'. "#EC NOTEXT - _add 'table.diff_tab tbody tr:first-child td { padding-top: 0.5em; }'. - _add 'table.diff_tab tbody tr:last-child td { padding-bottom: 0.5em; }'. - - ENDMETHOD. - METHOD render_diff_head. DATA: lo_html TYPE REF TO lcl_html_helper, ls_stats TYPE lcl_diff=>ty_count. @@ -467,7 +339,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'DIFF' ) ). LOOP AT mt_diff_files INTO ls_diff_file. diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index ecbda3159..e272b5983 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -24,8 +24,6 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. METHODS: test_changed_by RAISING lcx_exception, - styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, retrieve_active_repo RAISING lcx_exception, render_toc @@ -125,7 +123,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( iv_title = 'HOME' io_menu = build_main_menu( ) ) ). @@ -342,93 +340,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION. * ASSETS, STYLES, SCRIPTS ********************************************************************** - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* REPOSITORY TABLE*/'. - _add 'div.repo_container {'. - _add ' position: relative;'. - _add '}'. - _add '.repo_tab {'. - _add ' border: 1px solid #DDD;'. - _add ' border-radius: 3px;'. - _add ' background: #fff;'. - _add ' margin-top: 0.5em;'. - _add '}'. - _add '.repo_tab td {'. - _add ' border-top: 1px solid #eee;'. - _add ' vertical-align: middle;'. - _add ' color: #333;'. - _add ' padding-top: 2px;'. - _add ' padding-bottom: 2px;'. - _add '}'. - _add '.repo_tab td.icon {'. - _add ' width: 32px;'. - _add ' text-align: center;'. - _add '}'. - _add '.repo_tab td.type {'. - _add ' width: 3em;'. - _add '}'. - _add '.repo_tab td.object {'. - _add ' padding-left: 0.5em;'. - _add '}'. - _add '.repo_tab td.files {'. - _add ' padding-left: 0.5em;'. - _add '}'. - _add '.repo_tab td.cmd {'. - _add ' text-align: right;'. - _add ' padding-left: 0.5em;'. - _add ' padding-right: 0.7em;'. - _add '}'. - _add '.repo_tab tr.unsupported { color: lightgrey; }'. - _add '.repo_tab tr.modified { background: #fbf7e9; }'. - _add '.repo_tab tr:first-child td { border-top: 0px; }'. - _add '.repo_tab td.current_dir { color: #ccc; }'. - - " States - _add '.repo_tab td.cmd span.state-block {'. - _add ' margin-left: 1em;'. - _add ' font-family: Consolas, Lucida Console, Courier, monospace;'. - _add ' font-size: x-small;'. - _add ' vertical-align: 13%;'. - _add ' display: inline-block;'. - _add ' text-align: center;'. - _add '}'. - _add '.repo_tab td.cmd span.state-block span {'. - _add ' display: inline-block;'. - _add ' padding: 0px 2px;'. - _add ' border: 1px solid #000;'. - _add '}'. - - _add '.repo_tab td.cmd span.state-block span.added {'. - _add ' background-color: #69ad74; '. - _add ' border-color: #579e64;'. - _add ' color: white;'. - _add '}'. - _add '.repo_tab td.cmd span.state-block span.changed {'. - _add ' background-color: #e0c150;'. - _add ' border-color: #d4af25;'. - _add ' color: white;'. - _add '}'. - _add '.repo_tab td.cmd span.state-block span.mixed {'. - _add ' background-color: #e0c150;'. - _add ' border-color: #579e64;'. - _add ' color: #69ad74;'. - _add '}'. - _add '.repo_tab td.cmd span.state-block span.deleted {'. - _add ' background-color: #c76861;'. - _add ' border-color: #b8605a;'. - _add ' color: white;'. - _add '}'. - _add '.repo_tab td.cmd span.state-block span.none {'. - _add ' background-color: #e8e8e8;'. - _add ' border-color: #dbdbdb;'. - _add ' color: #c8c8c8;'. - _add '}'. - - ENDMETHOD. "styles - METHOD lif_gui_page~get_assets. * http://fa2png.io/r/octicons/ * colour: #808080 diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index 797f4fa56..a81637801 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -11,8 +11,6 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super. save_settings TYPE string VALUE 'save_settings', END OF c_action. PRIVATE SECTION. - METHODS styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_proxy RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_development_internals @@ -46,7 +44,7 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. read_settings( ). - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'Settings' ) ). ro_html->add( render_form_begin( ) ). @@ -56,18 +54,6 @@ CLASS lcl_gui_page_settings IMPLEMENTATION. ro_html->add( render_form_end( ) ). ENDMETHOD. - METHOD styles. - CREATE OBJECT ro_html. - - _add '/* settings STYLES */'. - _add 'div.settings_container {'. - _add ' padding: 0.5em;'. - _add ' font-size: 10pt;'. - _add ' color: #444;'. - _add ' background-color: #f2f2f2;'. - _add '}'. - ENDMETHOD. - METHOD render_proxy. CREATE OBJECT ro_html. ro_html->add( |

Proxy

| ). diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index eeb1debe2..08080efd6 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -32,8 +32,6 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, render_menu RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, - styles - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, scripts RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. @@ -217,7 +215,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( io_include_style = styles( ) ) ). + ro_html->add( header( ) ). ro_html->add( title( 'STAGE' ) ). ro_html->add( '
' ). @@ -248,40 +246,6 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ENDMETHOD. "render_menu - METHOD styles. - - CREATE OBJECT ro_html. - - _add '/* STAGE */'. - _add '.stage_tab {'. - _add ' border: 1px solid #DDD;'. - _add ' background: #fff;'. - _add ' margin-top: 0.2em;'. - _add '}'. - _add '.stage_tab td {'. - _add ' border-top: 1px solid #eee;'. - _add ' color: #333;'. - _add ' vertical-align: middle;'. - _add ' padding: 2px 0.5em;'. - _add '}'. - _add '.stage_tab th {'. - _add ' color: #BBB;'. - _add ' font-size: 10pt;'. - _add ' text-align: left;'. - _add ' font-weight: normal;'. - _add ' background-color: #edf2f9;'. - _add ' padding: 4px 0.5em;'. - _add '}'. - _add '.stage_tab td.status {'. - _add ' width: 2em;'. - _add ' text-align: center;'. - _add '}'. - _add '.stage_tab tbody tr:first-child td { padding-top: 0.5em; }'. - _add '.stage_tab tbody tr:last-child td { padding-bottom: 0.5em; }'. - _add '.stage_tab td.cmd a { padding: 0px 4px; }'. - - ENDMETHOD. "styles - METHOD scripts. CREATE OBJECT ro_html. From d84e1b1500e84d992245781921663c2cd5b50d3a Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 27 Nov 2016 00:29:46 +0200 Subject: [PATCH 20/27] common js asset #374 --- src/zabapgit_gui.prog.abap | 8 +- src/zabapgit_gui_asset_manager.prog.abap | 2 +- src/zabapgit_js_common.w3mi.data.js | 165 +++++++++++++++++++++++ src/zabapgit_js_common.w3mi.xml | 41 ++++++ src/zabapgit_page.prog.abap | 27 +--- src/zabapgit_page_commit.prog.abap | 11 +- src/zabapgit_page_db.prog.abap | 17 +-- src/zabapgit_page_stage.prog.abap | 104 -------------- 8 files changed, 216 insertions(+), 159 deletions(-) create mode 100644 src/zabapgit_js_common.w3mi.data.js create mode 100644 src/zabapgit_js_common.w3mi.xml diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index 9a3290585..27a0ddd61 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -240,10 +240,10 @@ CLASS lcl_gui IMPLEMENTATION. iv_type = 'text' iv_subtype = 'css' ). -* cache_asset( iv_xdata = mo_asset_man->get_asset( 'js_common' ) -* iv_url = 'js/common.js' -* iv_type = 'text' -* iv_subtype = 'javascript' ). + cache_asset( iv_xdata = mo_asset_man->get_asset( 'js_common' ) + iv_url = 'js/common.js' + iv_type = 'text' + iv_subtype = 'javascript' ). ls_event-eventid = mo_html_viewer->m_id_sapevent. ls_event-appl_event = abap_true. diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 20f42129e..8a8495c9c 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -119,7 +119,7 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. WHEN 'CSS_COMMON'. " @@abapmerge include src/zabapgit_css_common.data.css > APPEND '$$' TO lt_data. WHEN 'JS_COMMON'. - + " @@abapmerge include src/zabapgit_js_common.data.css > APPEND '$$' TO lt_data. WHEN OTHERS. lcx_exception=>raise( |No inline resource: { iv_asset_name }| ). ENDCASE. diff --git a/src/zabapgit_js_common.w3mi.data.js b/src/zabapgit_js_common.w3mi.data.js new file mode 100644 index 000000000..4e8029873 --- /dev/null +++ b/src/zabapgit_js_common.w3mi.data.js @@ -0,0 +1,165 @@ +// +// ABAPGIT JS function library +// + +// Output text to the debug div +function debugOutput(text, dstID) { + var stdout = document.getElementById(dstID || "stdout"); + var wrapped = "

" + text + "

"; + stdout.innerHTML = stdout.innerHTML + wrapped; +} + +// Submit form data with sapevent +function submitForm(params, action) { + var form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", "sapevent:" + action); + + for(var key in params) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", key); + hiddenField.setAttribute("value", params[key]); + form.appendChild(hiddenField); + } + + document.body.appendChild(form); + form.submit(); +} + +function setInitialFocus(id) { + document.getElementById(id).focus(); +} + +function submitFormById(id) { + document.getElementById(id).submit(); +} + + +// STAGE +// Hook global click listener on table, global action counter +function setHook() { + var stageTab = document.getElementById("stage_tab"); + + if (stageTab.addEventListener) { + stageTab.addEventListener("click", onEvent); + } else { + stageTab.attachEvent("onclick", onEvent); + } + + window.onbeforeunload = onPageUnload; + window.onload = onPageLoad; +} + +// Store table state on leaving the page +function onPageUnload() { + var data = collectData(); + window.sessionStorage.setItem(gPageID, JSON.stringify(data)); +} + +// Re-store table state on entering the page +function onPageLoad() { + var data = JSON.parse(window.sessionStorage.getItem(gPageID)); + var stage = document.getElementById("stage_tab"); + + for (var i = stage.rows.length - 1; i >= 0; i--) { + var tr = stage.rows[i]; + if (tr.parentNode.tagName == "THEAD") continue; + var context = tr.parentNode.className; + var cmd = data[tr.cells[1].innerText]; + if (!cmd) continue; + + formatTR(tr, cmd, context); + if (countChoiceImpact(cmd) > 0) { + gChoiceCount++; + } + } + + updateMenu(); +} + +// Event handler, change status +function onEvent(event) { + if (!event.target) { + if (event.srcElement) { + event.target = event.srcElement; + } else { + return; + } + } + + if (event.target.tagName != "A") return; + + var td = event.target.parentNode; + if (!td || td.tagName != "TD" || td.className != "cmd") return; + + var cmd = event.target.innerText; + var tr = td.parentNode; + var context = tr.parentNode.className; + + switch (cmd) { + case "add": cmd = "A"; break; + case "remove": cmd = "R"; break; + case "ignore": cmd = "I"; break; + case "reset": cmd = "?"; break; + } + + formatTR(tr, cmd, context); + gChoiceCount += countChoiceImpact(cmd); + + updateMenu(); +} + +// Update action counter -> affects menu update after +function countChoiceImpact(cmd) { + if ("ARI".indexOf(cmd) > -1) { + return 1; + } else if ("?".indexOf(cmd) > -1) { + return -1; + } else { + alert("Unknown command"); + } +} + +// Re-format table line +function formatTR(tr, cmd, context) { + var cmdReset = "reset"; + var cmdLocal = "add"; + var cmdRemote = "ignoreremove"; + + tr.cells[0].innerText = cmd; + tr.cells[0].style.color = (cmd == "?") ? "#CCC" : ""; + tr.cells[2].innerHTML = (cmd != "?") ? cmdReset + :(context == "local") ? cmdLocal : cmdRemote; +} + +// Update menu items visibility +function updateMenu() { + if (gChoiceCount > 0) { + document.getElementById("act_commit").style.display = "inline"; + document.getElementById("act_commit_all").style.display = "none"; + } else { + document.getElementById("act_commit").style.display = "none"; + document.getElementById("act_commit_all").style.display = "inline"; + } +} + +// Commit change to the server +function commit(action) { + var data = collectData(); + submitForm(data, action); +} + +// Extract data from the table +function collectData() { + var stage = document.getElementById("stage_tab"); + var data = {}; + + for (var i = stage.rows.length - 1; i >= 0; i--) { + var row = stage.rows[i]; + if (row.parentNode.tagName == "THEAD") continue; + data[row.cells[1].innerText] = row.cells[0].innerText; + } + + return data; +} diff --git a/src/zabapgit_js_common.w3mi.xml b/src/zabapgit_js_common.w3mi.xml new file mode 100644 index 000000000..6021761a6 --- /dev/null +++ b/src/zabapgit_js_common.w3mi.xml @@ -0,0 +1,41 @@ + + + + + ZABAPGIT_JS_COMMON + Abapgit common JS library + + + MI + ZABAPGIT_JS_COMMON + fileextension + .js + + + MI + ZABAPGIT_JS_COMMON + filename + script.js + + + MI + ZABAPGIT_JS_COMMON + filesize + 4416 + + + MI + ZABAPGIT_JS_COMMON + mimetype + text/javascript + + + MI + ZABAPGIT_JS_COMMON + version + 00001 + + + + + diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 1a9e85861..ee635d64d 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -226,6 +226,7 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( 'abapGit' ). "#EC NOTEXT ro_html->add( '' ). ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT @@ -271,32 +272,6 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( '
' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT - " Common JS routines - _add ''. "#EC NOTEXT - IF io_include_script IS BOUND. ro_html->add( '' ). ENDIF. diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index dbefa4cf0..bd254fdaa 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -233,7 +233,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( '
' ). - ro_html->add_anchor( iv_act = |commit('{ c_action-stage_commit }');| + ro_html->add_anchor( iv_act = 'gHelper.submit();' iv_typ = gc_action_type-onclick iv_id = 'act_commit' iv_style = 'display: none' @@ -250,10 +250,14 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. CREATE OBJECT ro_html. - " Globals & initialization - ro_html->add( |var gPageID = "stage{ mv_ts }";| ). - _add 'var gChoiceCount = 0;'. - _add 'setHook();'. + ro_html->add( 'var gStageParams = {' ). + ro_html->add( | seed: "stage{ mv_ts }",| ). + ro_html->add( ' stageTabId: "stage_tab",' ). + ro_html->add( ' formAction: "stage_commit",' ). + ro_html->add( ' commitNodeId: "act_commit",' ). + ro_html->add( ' commitAllNodeId: "act_commit_all"' ). + ro_html->add( '}' ). + ro_html->add( 'var gHelper = new StageHelper(gStageParams);' ). ENDMETHOD. "scripts From 61e01e294966a62fa8f351ba82bdf31928a51b93 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 27 Nov 2016 11:41:29 +0200 Subject: [PATCH 22/27] abapmerge fix #374 --- src/zabapgit_gui_asset_manager.prog.abap | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 8a8495c9c..1ecfb54ef 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -110,6 +110,10 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_mime_asset. + DEFINE _inline. + APPEND &1 TO lt_data. + END-OF-DEFINITION. + METHOD get_inline_asset. DATA: lt_data TYPE ty_string_tt, @@ -117,9 +121,9 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. CASE iv_asset_name. WHEN 'CSS_COMMON'. - " @@abapmerge include src/zabapgit_css_common.data.css > APPEND '$$' TO lt_data. + " @@abapmerge include zabapgit_css_common.w3mi.data.css > _inline '$$'. WHEN 'JS_COMMON'. - " @@abapmerge include src/zabapgit_js_common.data.css > APPEND '$$' TO lt_data. + " @@abapmerge include zabapgit_js_common.w3mi.data.js > _inline '$$'. WHEN OTHERS. lcx_exception=>raise( |No inline resource: { iv_asset_name }| ). ENDCASE. From 6defda4b52885831ff0032e4657e22c258faece6 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 27 Nov 2016 12:45:16 +0200 Subject: [PATCH 23/27] move images to asset_manager #374 --- src/zabapgit_definitions.prog.abap | 3 +- src/zabapgit_gui.prog.abap | 56 ++--- src/zabapgit_gui_asset_manager.prog.abap | 270 +++++++++++++++++++++++ src/zabapgit_page.prog.abap | 93 -------- src/zabapgit_page_main.prog.abap | 167 +------------- 5 files changed, 288 insertions(+), 301 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 67719c40a..4ecc74b25 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -55,7 +55,8 @@ TYPES: BEGIN OF ty_metadata, TYPES: BEGIN OF ty_web_asset, url TYPE w3url, - content TYPE string, + base64 TYPE string, + content TYPE xstring, END OF ty_web_asset. TYPES tt_web_assets TYPE STANDARD TABLE OF ty_web_asset WITH DEFAULT KEY. diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index 27a0ddd61..b5397ea7d 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -29,7 +29,6 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. DATA: mi_cur_page TYPE REF TO lif_gui_page, mt_stack TYPE STANDARD TABLE OF ty_page_stack, - mt_assets TYPE tt_w3urls, mo_router TYPE REF TO lcl_gui_router, mo_asset_man TYPE REF TO lcl_gui_asset_manager, mo_html_viewer TYPE REF TO cl_gui_html_viewer. @@ -40,11 +39,6 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. METHODS startup RAISING lcx_exception. - METHODS cache_image - IMPORTING iv_url TYPE w3url - iv_base64 TYPE string - RETURNING VALUE(rv_url) TYPE w3url. - METHODS cache_html IMPORTING iv_text TYPE string RETURNING VALUE(rv_url) TYPE w3url. @@ -192,9 +186,7 @@ CLASS lcl_gui IMPLEMENTATION. METHOD call_page. - DATA: lt_assets TYPE tt_web_assets, - ls_stack TYPE ty_page_stack. - FIELD-SYMBOLS LIKE LINE OF lt_assets. + DATA: ls_stack TYPE ty_page_stack. IF iv_replacing = abap_false AND NOT mi_cur_page IS INITIAL. ls_stack-page = mi_cur_page. @@ -202,16 +194,6 @@ CLASS lcl_gui IMPLEMENTATION. APPEND ls_stack TO mt_stack. ENDIF. - lt_assets = ii_page->get_assets( ). - IF lines( lt_assets ) > 0. - LOOP AT lt_assets ASSIGNING . - READ TABLE mt_assets TRANSPORTING NO FIELDS WITH KEY table_line = -url. - CHECK sy-subrc IS NOT INITIAL. - APPEND -url TO mt_assets. - cache_image( iv_url = -url iv_base64 = -content ). - ENDLOOP. - ENDIF. - mi_cur_page = ii_page. render( ). @@ -226,7 +208,10 @@ CLASS lcl_gui IMPLEMENTATION. METHOD startup. DATA: lt_events TYPE cntl_simple_events, - ls_event LIKE LINE OF lt_events. + ls_event LIKE LINE OF lt_events, + lt_assets TYPE tt_web_assets. + + FIELD-SYMBOLS LIKE LINE OF lt_assets. CREATE OBJECT mo_router. CREATE OBJECT mo_asset_man. @@ -245,6 +230,16 @@ CLASS lcl_gui IMPLEMENTATION. iv_type = 'text' iv_subtype = 'javascript' ). + lt_assets = mo_asset_man->get_images( ). + IF lines( lt_assets ) > 0. + LOOP AT lt_assets ASSIGNING . + cache_asset( iv_xdata = -content + iv_url = -url + iv_type = 'image' + iv_subtype = 'png' ). + ENDLOOP. + ENDIF. + ls_event-eventid = mo_html_viewer->m_id_sapevent. ls_event-appl_event = abap_true. APPEND ls_event TO lt_events. @@ -272,27 +267,6 @@ CLASS lcl_gui IMPLEMENTATION. ENDMETHOD. "cache_html - METHOD cache_image. - - DATA lv_xstr TYPE xstring. - - CALL FUNCTION 'SSFC_BASE64_DECODE' - EXPORTING - b64data = iv_base64 - IMPORTING - bindata = lv_xstr - EXCEPTIONS - OTHERS = 1. - - ASSERT sy-subrc = 0. " Image data error - - rv_url = cache_asset( iv_xdata = lv_xstr - iv_url = iv_url - iv_type = 'image' - iv_subtype = 'png' ). - - ENDMETHOD. "cache_image - METHOD cache_asset. DATA: lv_xstr TYPE xstring, diff --git a/src/zabapgit_gui_asset_manager.prog.abap b/src/zabapgit_gui_asset_manager.prog.abap index 1ecfb54ef..2ff246994 100644 --- a/src/zabapgit_gui_asset_manager.prog.abap +++ b/src/zabapgit_gui_asset_manager.prog.abap @@ -10,6 +10,9 @@ CLASS lcl_gui_asset_manager DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_gui. RETURNING VALUE(rv_data) TYPE xstring RAISING lcx_exception. + METHODS get_images + RETURNING VALUE(rt_images) TYPE tt_web_assets. + PRIVATE SECTION. METHODS get_inline_asset @@ -22,6 +25,9 @@ CLASS lcl_gui_asset_manager DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_gui. RETURNING VALUE(rv_data) TYPE xstring RAISING lcx_exception. + METHODS get_inline_images + RETURNING VALUE(rt_images) TYPE tt_web_assets. + ENDCLASS. "lcl_gui_asset_manager CLASS lcl_gui_asset_manager IMPLEMENTATION. @@ -110,6 +116,26 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_mime_asset. + METHOD get_images. + + FIELD-SYMBOLS LIKE LINE OF rt_images. + + rt_images = get_inline_images( ). + + " Convert to xstring + LOOP AT rt_images ASSIGNING . + CALL FUNCTION 'SSFC_BASE64_DECODE' + EXPORTING + b64data = -base64 + IMPORTING + bindata = -content + EXCEPTIONS + OTHERS = 1. + ASSERT sy-subrc = 0. " Image data error + ENDLOOP. + + ENDMETHOD. " get_images. + DEFINE _inline. APPEND &1 TO lt_data. END-OF-DEFINITION. @@ -141,4 +167,248 @@ CLASS lcl_gui_asset_manager IMPLEMENTATION. ENDMETHOD. " get_inline_asset. + METHOD get_inline_images. + + DATA ls_image TYPE ty_web_asset. + +* see https://github.com/larshp/abapGit/issues/201 for source SVG + ls_image-url = 'img/logo' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhkiAAA' + && 'AAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9y' + && 'Z5vuPBoAAA8VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQ' + && 'cEkDJWmTltLStGkoDCkzwBAuCemUlksDNCkhJTTTljJpZhIuBQxxAWPvyuYiW7UkG8Il' + && 'UByIsS1sLEu75+0fu5JXu9/etAJz0TOzM/rOec85765+37m+3yczY8w0NU3qrwv9npfa' + && 'Hfx02pPPd469sgk+7misYnyjpWXy5IOG7kd8ZjjNjEtr13TdOm7eTfCxwo2lUJAQASRu' + && '2dnRfMn4uDbBx42yxZhPiMNMCHKCsVK2GGuqqqoQUwrZTAhygrFQshjfaGmZ/M7yxQtm' + && 'xGL9/qDqzwLxQvYTgpygXEoS4/DQ7LE1O05atLBu1YZdE4KcYLwpupoOmCO+5Z2dXPfE' + && 'xk07Tm2ZroGhBwX1wAygKqiOiVX2Rw9Jam/gyH0wuGGzvTEudRYSY4HFyogghxN2n7Sw' + && 'IendvcCioLoOtCCXNeqohOf0oDwPq9f3Wt/77dOHlWhYzUj/BRybTnrGEnZO5wv2m0rq' + && 'DezJoOiqeZbzegzpk6TVPPWJTT39y5svMogF1ZcesjlQgkwYp4F+EJQXwv4E+MiLUZJa' + && 'F7AIcRq4hWZ2mMRhQD/oZcErXv7FScaja3rt/wpU9E/sFyLACQq57wB/XIl/gWIstn2T' + && 'xpHVre7ZW71p8sFDeQscSEHKu3pTBadNH2Lq61VT57iwNazLgaNSqYaUaWXLDZCJIbBo' + && 'g3tK2A2xHns0oMrm3CRrqdTPnAVMiUIEmLlz2XGLMxNmH7YrifFcoUIHalHj8f8p6UfA' + && 'O+932weStno1zghps6Q7GBFiUYRxopkeaZ2vIwLyfxtQ4vV8lbWHNScacf+T/vwqn90o' + && 'MZYhRADJ+bv725vmj6Q8tHWffPKUD6IgO/tsfawneRHYd97Pdg8kSyJaZiGtBY4pYPYO' + && 'kH84C0Cyv8tKSiK7OZ99EpYAJ2V8AhkRY5lCHGaxhaq+BLCzY/EXd5y0aOG0td1vf1AF' + && 'CWCw7/1u80DQEtahQvcB03MyjQfM7Hwnmxfv9dPivX5SssqOwuzPSqk71mN3ymw5ZtdK' + && 'dmVIdly8xx7JZ29yy0qptwrGLMRRCA6T1w93nLTo5Lq13Zv625tOMRd6DLF4v0lWmQO8' + && 'qPko45y7TWaHZyUnwa6M99mN2fYbuu1V4K5oxF1B4Z4UgFifrQHWFLNbvkh1QheV5DNN' + && 'TZMqFWIGs5zX48M95PTqGa3TZ4erzbvj8/WUErf0L2++uNyGJLn2Js1oDeuYlkbNbmlR' + && 'deXup2hq0qS2es2VlHMDFaOlRdXL5uuwlnodG23QTEljCkbJV3d7WHOK+dXWqHqZnZeb' + && 'Y1fGe3OFOArRU5GTGbSHNWdwUL8Epo1qIQ9V/bXu3HES4jCznNfjb7e1zZ8Ri/UD1MLz' + && 'u05s/huMx4IKGNy4+8Tj/2Pqk8++Vaji86TQqxEuNNM5rWGtSCaokSDkgd0QjbidoPvN' + && '+5s7t9jz5TgdbdBMvLsG2cop6FgLUdUaZk804jYKuyrWa6vzlT2+XrOqQnxd6KwQOj5R' + && 'hULpL9Yaxkcj7g3QT6zK397ZbdtGtbtAZ+B0U3adkt0c67E7OyI6fFDuSpktC6HGpJjU' + && 'GmZ3NOI2mdnVnX32eHZZ7903hGXfBG8mp3J7sd/B0DPCTgUmBf9O7lmMybk56or3Jn8f' + && 'oLVB7Q5dZ9Iy4OBsw2jYbUUk96fwQrzHf955iBZzsDA+aL9k1owZ20fNzaY/tfFXwK48' + && 'ldQkSZ5YqJXmZk15JaJfmOmfgdOAmgCzWrCvyum5aIO+Uor3AIbOx7QV2TeBMPu3vKYA' + && 'Sw091hbWt4PKRhu0oDqkmND1wAnk3vkOmAN2lRLa2hrWMVm5Tek2R3286YzWiK4eQltk' + && '9g1gMfsFMhVYKunR1obQddk+SXZqwLe8acMGe7fYb9HZk7wm3utrBmpsqiXsyClHMHK6' + && '0hLWoRjHBfmLbP9K3bPYjFPIFWLaQeZnlZ8H4JyFflrMwcK4wG63v3/ycZnXOzqalxE0' + && 'mU7x9rvvVv93oVZqBtzNGGeU7Jbp9pZGzS7ReiVQVyDfmXRda4PaA9p5mBLmWGmmSron' + && 'M0FytUGGgjPTAi8UIeVk9u1og5YOJ0QbNBOjIac+Y22JPgLQ1WV7Ol+w36xebYnhtGpj' + && 'FjBYTj3l4KY9/dx6My4d74pN/Ki/Y9HpSG5HR/Nyh/1DHtO9OM6dvWFDwbtWslOykt6U' + && 's5VWZbOFnQtsyMqvc56Ty3T7NeBhLGAfDZDpe5nX6V5uXpbZ43K2NGQ2V9glwLas/I62' + && 'hfrE8EWsJ3mFsGYs+OQqze+A1cBLgbmma4f/9AmOJGBe5vKVLYN1W6wnOWSHmdkVhexM' + && 'PG6yC0x2AbmjoQ3njdh4uwrSw1Htmq5bd3Y0I3FLpQ5n0GTSQ7s6Fva70RPYTPbi+Pz0' + && 'J7ryboRC+m5PnRfsJjVEAfp5bLNflTb52dKIBj36RWY5ZyX2WCLukvbX67ZYHFLHZtGw' + && '+1fD/jDL8qQljWpav9m6Uw3wKYzXgUNJTxsk+0Fssw0L6x+j4dCx6eF/BEtwDBkbx7Fe' + && '29gWCa0yrC2rvXXO26WZfrWG3V2kji8zWbm0QUev67GX5ZgZ8A0H121hXIIZNrxou9oW' + && '6m4b4m/z2aTP+fsAohF3PaNHROvssZ8ElRs5DnyPBAkovxDFF4oJESDeY9tJD4Ur5umg' + && 'PSFm1Uy23Zk2SaM7e43p5Y4uxUMzu2f4H56+tuZmff2gfTqHrGEy5DkW6Abo7LH7gfsB' + && '2uo1LQGzBmoYFSwg57vNcjqqo4F1JXh2S7Zfx83TZZNqdD6MXkQkU369jONgcmfxe83M' + && 'B7XQEdEhg1B0HzDk2ZHpy3vBqLPpMQhyi/f2AIA3WyPZG6KkeVpKiE925awEi7H6JRsA' + && 'cqJDfIi9oayfW8ZB5dY/TFeX7YlGQg+RmgJkcnSQfWyr9QP92enmGcgeNCvx67mXbGdb' + && 'xD1hjI5AklJ+ydgTUGz6iiZNXd09+gYGGIRlQgXn6wDesZYSRFsJOYES5QjSw7fqnu7q' + && 'Bqh7uqu7f3nzdw3uKFJszEIcpqVRs12SRuAYiTrJ1YXMzSGgS6iQnHmWyQWe70pySz/F' + && 'MZagMWnMlaiTuTqTTih7s7IIHm1T1ncVI37l3BAAA4McAYF7iAvG17uxExi1U6Igd9XN' + && 'Dj+UmZA8qPrf3MDQbeSPIN8Ldub0JzeWLcT2I3Swn8JFhr4VQnMze5uKnv0ugOHfUXa3' + && 'ZhySedkR0eGDuMtbw/rTZCI1pA9PF0yWf4e3MnJ7YKXm0pOr6H03QRIIZeYnUj1njhid' + && '8aaRscKX/VGWSRLsCjnK2rcdC3njGUsQ5PSdv92yqJaMk5WBoRMpJsSnNgZufBdCkmsN' + && '60FgRbllK8PNzOlttT/qpz2sOUnpeWGHvq9ewcyc28/7XQCru213NOL+l6wgZ0kXAjnD' + && 'cazP7gXuTdu41rCyxbgr3mt/P16+F6LgUVXtmq5bC237yNsNu5YtPBZgx4kLFznZ1XlM' + && 'BzB/1liECBAN801yhfiq0HflbKXz1ojZ4qCylSBsbm6q/93wX0n0Q1Ir6UzWYXaZyZaF' + && 'qqxeZn813n4ZlhPWJWXMo00P5OTDF5c0qmm8fRlPip6bFhHk6Ti3ddfy5i3OXBemJQE2' + && 'A5g/c/qaTasC8krC0KdzE+3qWG/y6thmW7Vui/UkQ7w51vqDaGnRZFInPdlshNQ2C8oJ' + && 'h0oqaefF++zmzh5bu7bbXrBxjp88bp5qgZzNdyfWD/9t+B+TO4GW8/p+R0SHcGBxLWEF' + && 'jiQlHeIXEaRIPZAVRMVCTDcQCUh8LfOyaqjgCcr+YpY7NRFa2VY/egsqtNtdw8ie5gjJ' + && 'oUTqicjofOYA2f/YgcR03s5MMBF4wlIa7rMr5mnUyru6xl0LZAeFvDG3l83DF5199muk' + && 'oJO1FUMoviSi8Nh9Kg+Ru7qvUvCqPO+cMZsxbPsM4HXW9KcrEyKApTa7s9BVSyLaF3Ik' + && 'SbLSQros18RyInkkV2u5q+6zLaS+aCT0oJl/QVI78IWcsvDos1vtLYCE551QKNuCKW63' + && '+157g36cMOYI9yWhC3K+j4KDEHKxC9+t0altDaFHwL/kvVZIBJw761/uM5/MTJlU7S/Z' + && 'N6hTBNlhZA0OPReNuGdM6nL4jR4G5ZnRusAtKmVHwg1Slcxe11nODZJKh1fJ6kwM3dQa' + && 'VgOw3omjkGuL9/o/L/vFTzs7mi8pQZBpIT4f9PxE2bRFQncY9pdjKDoExDH7ebzPbgFo' + && 'bQjdng48KBfvzZau77ORN61FI66PsW2N7ARiZnZTZ589BtAWCV1v5J1zF+JNVdui2CbL' + && 'OcJsq1ejD2lVgCDL4e14r58J0N6k+cmEu0HYIssdrbxgnaGeeG9yJEg32hC6GbOix81y' + && 'trTsWLtiixpgQNLZ4yVEgCT++xSP0H7C0N1ZadVAh6SR3kRm2WfJO0H/XqTuQcn+IlOI' + && 'AFjRVaZhus3g2az0WuA0wcIi5QP3DDNIIPtakBABYltts7AO4OEi9eTFYGCksSRzwM4L' + && 'ECKAM1gG9tVR5UP+RkqZN5s7a0yBnwUEOSDp7GlPPp83BH0srO+1PmQrDIIen9wOdnln' + && 'n31G5n9ZtDLL6ck2x3uTf6DUee8rASX6vNnyWI/dmZ0R77O7LNXLBkWy9CE7Pd6XvNih' + && 'QkEQeZHZl9PBFtsDstebtyWFwv0B4r32UrzXn+6xDtBdwIslNL0N+JnMvravxiraFO/s' + && 'tm0y+xzQlcfkddCNCe/vGfP7GQH6lzdfbHAjqSCBHZK+PN5CzESSlixgnhMLzXAeXp+3' + && 'hWfuM0sWL10abQv1CdtHixzvmtiYPhcvSFOTJk1NEPEQkWdPUry4oc96y2o3YJiWs5Wx' + && 'zbYq83THHHu9Y1N2kG45tDRqdsgzxxuznKPOGbsTsN2M7d6zfXhePJ5Ici1h6mUcAcw0' + && '8Zo5fp35NoqKxAjwTrRhZmLSpPY9ySmPzV27dm+lTn9cKSTGA+XT+03Jq+l8HBLv2Q7c' + && 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v' + && '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f' + && 'cpUAAAAASUVORK5CYII='. + APPEND ls_image TO rt_images. + +* http://fa2png.io/r/octicons/ +* colour: #808080 +* size: 16 +* https://www.base64-image.de/ can be used to convert images to base64 + + ls_image-url = 'img/sync' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQYGY3BIWuUAQAG' + && '4Pc7N72xsbGBYNE8tYpVZKDZX2CcYLEZ9yQxOQSz3D/YmkUsVovRQ2SYNJnlkFfH7VZu' + && 'wefJgrGHXnjrpQeu5B93smCwr6qqqp54433mDI5Ucds1u577o+p35hyoqe2cMThWVatJ' + && '7KiZrZxz18SJqqtJPFXPssRgw0oSH9WNXMCQU76qzSxx2cxxTlk3yhKb6mcSQy7kvjpM' + && 'Ylt98tpjN3POyFTdSuKSqppayxkjE/Uhc36p+m7PhhXr7vmmfhhnzpHPJqqqquqdcRY8' + && 'spq47sAXMyde2c3/+wvX7Y18BexhBwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/toc' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACAgICAgICA' + && 'gICAgICAgICAgIAO39T0AAAABnRSTlMABBCRlMXJzV0oAAAAN0lEQVQIW2NgwABuaWlB' + && 'YWlpDgwJDAxiAgxACshgYwAz0tLY2NISSBWBMYAmg4ADyBZhARCJAQBBchGypGCbQgAA' + && 'AABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/repo_online' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAABQbJxQbJxQ' + && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' + && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' + && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' + && 'bJz+TJ01AAAANnRSTlMAAQIDBAcJCgwSFBocHygqMTM1NkRHSU1QUWFiZGlweHuDiImL' + && 'lZiio6a5vsfT3uTo6e3x9fsxY2JuAAAAgUlEQVQYGXXB6RaBUBSA0e+IEuIiMs9zhlDn' + && '/R/NZWmt/LA3f1RcoaB50SydCbn20wjedkPu3sKSpMGH21PhLdZ0BATZ+cCXtxtDHGLV' + && 'pgFW9QqJj2U0wvJvMF+5jiNGI3HK9dMQSouH6sRoFGoWd8l1dEDRWlWPQsFS98KPvvDH' + && 'C3HLClrWc70ZAAAAAElFTkSuQmCC'. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/repo_offline' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEUAAACAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICuaWnmAAAAG3RSTlMAAgQFBgsQFxweIiMtN3yI' + && 'nqOvt9Hp6/Hz9fktMNR/AAAAXElEQVQYV5WO2xJAMAxES1q3ugfF/v9/0qLyyL4k58xk' + && 'J0p9D7N5oeqZgSwy7fDZnHNdEE1gWK116tksl7hPimGFFPWYl7MU0zksRCl8TStKg1AJ' + && '0XNC8Zm4/c0BUVQHi0llOUYAAAAASUVORK5CYII='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/pkg' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA30lEQVQoU43OIUuDcRSF' + && '8fvqhuB0mFwaKLbVBVdkX0GTFss+wYL2H4rJIIgyQQSzZcUPoGHZ9CKCmAwTMS8Y/ga3' + && 'BWVjT7hwOQ+HEzEbMhU7jrTd69q2KhtFRU2nrvS927dm3pyqPXcuNRVD7sxiRIQlDSc+' + && 'PGjZUFDWkYekLfdoV2XYua4rSZ61pZBkEUq2XPty41XuXJIiZGNhPDVZiFCYIMSor+Db' + && '7RQhYnQnCsNvNmGgPFFYMQh1PU9aqrLxyGUNx/p66r9mUc2hFx3JhU9vDtQU4y9KGjaV' + && '/gXT+AGZVIinhU2EAwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/branch' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAqFBMVEUAAACAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' + && 'gICAgID/OyosAAAAN3RSTlMAAQIDBAYICQ8TFRweJScoKSo3Oj1FRk1dYWJjZmhzdIaJ' + && 'j5GVm6CwsrS5vsHDyszV19ne7/X583teZAAAAIFJREFUGFdVytkagVAYheFvFzJlnqc0' + && 'EEoR+u//zhxI7dbZ9z4LMJ1op9DmjpntdXiBigHbLiAYqukBVr63+YGRSazgCY/iEooP' + && 'xKZxr0EnSbo14B1Rg4msKzj150fJrQpERPLBv7mIfNxlq+zRbZsu0JYpGlcdwjY9Twfr' + && 'nAbNsr6IKQxJI/U5CgAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/link' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAACAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVwFMKAAAAHnRSTlMAAwQFBgcK' + && 'FR4gIiMmP0JHSm+RmKDByM/R09rg+/0jN/q+AAAAX0lEQVQYV43Nxw6AIBAE0FGw916Z' + && '//9MRQ0S4sG5bPZlCxqSCyBGXgFUJKUA4A8PUOKONzuQOxOZIjcLkrMvxGQg3skSCFYL' + && 'Kl1Ds5LWz+33yyf4rQOSf6CjnV6rHeAA87gJtKzI8ocAAAAASUVORK5CYII='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/code' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA' + && 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAAA1SURBVAhbY2AODQ0NEWBgYGVg' + && 'YGByhNAMKgIMrKyhAQxMDhA+QwCCZgVqIIUP1Q+yJzTUAAAfUAq+Os55uAAAAABJRU5E' + && 'rkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/bin' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA' + && 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAABBSURBVAhbXcqxDYAwAMRAK8h9' + && 'hmAARoANvuD3X4UCiojqZMlsbe8JAuN6ZZ9ozThRCVmsJe9H0HwdXf19W9v2eAA6Fws2' + && 'RotPsQAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/obj' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAACAgICAgICA' + && 'gICAgICAgICAgICAgICAgICAgICAgIDcWqnoAAAACnRSTlMABD1AZI+RlcPFIaFe1gAA' + && 'AEVJREFUCFtjYF+1atVKAQYGLgYGBuaJEJrBUgBCM0+A0AwLgLQIgyOIZmwCSgNptgAG' + && '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/lock' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI' + && 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB' + && 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0' + && 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y' + && 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/dir' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAABmksxmksxm' + && 'ksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxm' + && 'ksxmksxmksxmksxMwQo8AAAAF3RSTlMABhIYIy1fZmhpe3+IiYuMkZvD7e/x93sipD4A' + && 'AAA+SURBVBhXY2BABzwiokAgzAYXEGdiBAIWIYQAPzcQCApzgwEXM4M4KuBDFxAYKAEx' + && 'VAFeBlYOTiTAzoThewD5hBAcnWM4gwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/burger' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEUAAABtktltktlt' + && 'ktltktltktltktltktltktltktk7ccVDAAAACXRSTlMAFDBLY2SFoPGv/DFMAAAAJ0lE' + && 'QVQIW2NggIHKmWAwmaETwpjGoBoKBo4MmIAkxXApuGK4dgwAAJa5IzLs+gRBAAAAAElF' + && 'TkSuQmCC'. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/star' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAABejclejcle' + && 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle' + && 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle' + && 'jclejclejclejclejclejclejclejclejcn2yvsVAAAALXRSTlMAAQIFBwkKCw0QERUY' + && 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC' + && 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV' + && 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o' + && 'ahA3YV7OfwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + ls_image-url = 'img/star-grey' ##NO_TEXT. + ls_image-base64 = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAADQ0NDQ0NDQ' + && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ' + && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ' + && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NC2QdifAAAALXRSTlMAAQIFBwkKCw0QERUY' + && 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC' + && 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV' + && 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o' + && 'ahA3YV7OfwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_images. + + + ENDMETHOD. " get_inline_images. + ENDCLASS. "lcl_gui_asset_manager \ No newline at end of file diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index 39fe26ebf..8d99436c1 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -20,9 +20,6 @@ INTERFACE lif_gui_page. RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper RAISING lcx_exception. - METHODS get_assets - RETURNING VALUE(rt_assets) TYPE tt_web_assets. - ENDINTERFACE. CLASS lcl_gui_page_super DEFINITION ABSTRACT. @@ -304,96 +301,6 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~get_assets. " Common images here - - DATA ls_image TYPE ty_web_asset. - -* see https://github.com/larshp/abapGit/issues/201 for source SVG - ls_image-url = 'img/logo' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhkiAAA' - && 'AAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9y' - && 'Z5vuPBoAAA8VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQ' - && 'cEkDJWmTltLStGkoDCkzwBAuCemUlksDNCkhJTTTljJpZhIuBQxxAWPvyuYiW7UkG8Il' - && 'UByIsS1sLEu75+0fu5JXu9/etAJz0TOzM/rOec85765+37m+3yczY8w0NU3qrwv9npfa' - && 'Hfx02pPPd469sgk+7misYnyjpWXy5IOG7kd8ZjjNjEtr13TdOm7eTfCxwo2lUJAQASRu' - && '2dnRfMn4uDbBx42yxZhPiMNMCHKCsVK2GGuqqqoQUwrZTAhygrFQshjfaGmZ/M7yxQtm' - && 'xGL9/qDqzwLxQvYTgpygXEoS4/DQ7LE1O05atLBu1YZdE4KcYLwpupoOmCO+5Z2dXPfE' - && 'xk07Tm2ZroGhBwX1wAygKqiOiVX2Rw9Jam/gyH0wuGGzvTEudRYSY4HFyogghxN2n7Sw' - && 'IendvcCioLoOtCCXNeqohOf0oDwPq9f3Wt/77dOHlWhYzUj/BRybTnrGEnZO5wv2m0rq' - && 'DezJoOiqeZbzegzpk6TVPPWJTT39y5svMogF1ZcesjlQgkwYp4F+EJQXwv4E+MiLUZJa' - && 'F7AIcRq4hWZ2mMRhQD/oZcErXv7FScaja3rt/wpU9E/sFyLACQq57wB/XIl/gWIstn2T' - && 'xpHVre7ZW71p8sFDeQscSEHKu3pTBadNH2Lq61VT57iwNazLgaNSqYaUaWXLDZCJIbBo' - && 'g3tK2A2xHns0oMrm3CRrqdTPnAVMiUIEmLlz2XGLMxNmH7YrifFcoUIHalHj8f8p6UfA' - && 'O+932weStno1zghps6Q7GBFiUYRxopkeaZ2vIwLyfxtQ4vV8lbWHNScacf+T/vwqn90o' - && 'MZYhRADJ+bv725vmj6Q8tHWffPKUD6IgO/tsfawneRHYd97Pdg8kSyJaZiGtBY4pYPYO' - && 'kH84C0Cyv8tKSiK7OZ99EpYAJ2V8AhkRY5lCHGaxhaq+BLCzY/EXd5y0aOG0td1vf1AF' - && 'CWCw7/1u80DQEtahQvcB03MyjQfM7Hwnmxfv9dPivX5SssqOwuzPSqk71mN3ymw5ZtdK' - && 'dmVIdly8xx7JZ29yy0qptwrGLMRRCA6T1w93nLTo5Lq13Zv625tOMRd6DLF4v0lWmQO8' - && 'qPko45y7TWaHZyUnwa6M99mN2fYbuu1V4K5oxF1B4Z4UgFifrQHWFLNbvkh1QheV5DNN' - && 'TZMqFWIGs5zX48M95PTqGa3TZ4erzbvj8/WUErf0L2++uNyGJLn2Js1oDeuYlkbNbmlR' - && 'deXup2hq0qS2es2VlHMDFaOlRdXL5uuwlnodG23QTEljCkbJV3d7WHOK+dXWqHqZnZeb' - && 'Y1fGe3OFOArRU5GTGbSHNWdwUL8Epo1qIQ9V/bXu3HES4jCznNfjb7e1zZ8Ri/UD1MLz' - && 'u05s/huMx4IKGNy4+8Tj/2Pqk8++Vaji86TQqxEuNNM5rWGtSCaokSDkgd0QjbidoPvN' - && '+5s7t9jz5TgdbdBMvLsG2cop6FgLUdUaZk804jYKuyrWa6vzlT2+XrOqQnxd6KwQOj5R' - && 'hULpL9Yaxkcj7g3QT6zK397ZbdtGtbtAZ+B0U3adkt0c67E7OyI6fFDuSpktC6HGpJjU' - && 'GmZ3NOI2mdnVnX32eHZZ7903hGXfBG8mp3J7sd/B0DPCTgUmBf9O7lmMybk56or3Jn8f' - && 'oLVB7Q5dZ9Iy4OBsw2jYbUUk96fwQrzHf955iBZzsDA+aL9k1owZ20fNzaY/tfFXwK48' - && 'ldQkSZ5YqJXmZk15JaJfmOmfgdOAmgCzWrCvyum5aIO+Uor3AIbOx7QV2TeBMPu3vKYA' - && 'Sw091hbWt4PKRhu0oDqkmND1wAnk3vkOmAN2lRLa2hrWMVm5Tek2R3286YzWiK4eQltk' - && '9g1gMfsFMhVYKunR1obQddk+SXZqwLe8acMGe7fYb9HZk7wm3utrBmpsqiXsyClHMHK6' - && '0hLWoRjHBfmLbP9K3bPYjFPIFWLaQeZnlZ8H4JyFflrMwcK4wG63v3/ycZnXOzqalxE0' - && 'mU7x9rvvVv93oVZqBtzNGGeU7Jbp9pZGzS7ReiVQVyDfmXRda4PaA9p5mBLmWGmmSron' - && 'M0FytUGGgjPTAi8UIeVk9u1og5YOJ0QbNBOjIac+Y22JPgLQ1WV7Ol+w36xebYnhtGpj' - && 'FjBYTj3l4KY9/dx6My4d74pN/Ki/Y9HpSG5HR/Nyh/1DHtO9OM6dvWFDwbtWslOykt6U' - && 's5VWZbOFnQtsyMqvc56Ty3T7NeBhLGAfDZDpe5nX6V5uXpbZ43K2NGQ2V9glwLas/I62' - && 'hfrE8EWsJ3mFsGYs+OQqze+A1cBLgbmma4f/9AmOJGBe5vKVLYN1W6wnOWSHmdkVhexM' - && 'PG6yC0x2AbmjoQ3njdh4uwrSw1Htmq5bd3Y0I3FLpQ5n0GTSQ7s6Fva70RPYTPbi+Pz0' - && 'J7ryboRC+m5PnRfsJjVEAfp5bLNflTb52dKIBj36RWY5ZyX2WCLukvbX67ZYHFLHZtGw' - && '+1fD/jDL8qQljWpav9m6Uw3wKYzXgUNJTxsk+0Fssw0L6x+j4dCx6eF/BEtwDBkbx7Fe' - && '29gWCa0yrC2rvXXO26WZfrWG3V2kji8zWbm0QUev67GX5ZgZ8A0H121hXIIZNrxou9oW' - && '6m4b4m/z2aTP+fsAohF3PaNHROvssZ8ElRs5DnyPBAkovxDFF4oJESDeY9tJD4Ur5umg' - && 'PSFm1Uy23Zk2SaM7e43p5Y4uxUMzu2f4H56+tuZmff2gfTqHrGEy5DkW6Abo7LH7gfsB' - && '2uo1LQGzBmoYFSwg57vNcjqqo4F1JXh2S7Zfx83TZZNqdD6MXkQkU369jONgcmfxe83M' - && 'B7XQEdEhg1B0HzDk2ZHpy3vBqLPpMQhyi/f2AIA3WyPZG6KkeVpKiE925awEi7H6JRsA' - && 'cqJDfIi9oayfW8ZB5dY/TFeX7YlGQg+RmgJkcnSQfWyr9QP92enmGcgeNCvx67mXbGdb' - && 'xD1hjI5AklJ+ydgTUGz6iiZNXd09+gYGGIRlQgXn6wDesZYSRFsJOYES5QjSw7fqnu7q' - && 'Bqh7uqu7f3nzdw3uKFJszEIcpqVRs12SRuAYiTrJ1YXMzSGgS6iQnHmWyQWe70pySz/F' - && 'MZagMWnMlaiTuTqTTih7s7IIHm1T1ncVI37l3BAAA4McAYF7iAvG17uxExi1U6Igd9XN' - && 'Dj+UmZA8qPrf3MDQbeSPIN8Ldub0JzeWLcT2I3Swn8JFhr4VQnMze5uKnv0ugOHfUXa3' - && 'ZhySedkR0eGDuMtbw/rTZCI1pA9PF0yWf4e3MnJ7YKXm0pOr6H03QRIIZeYnUj1njhid' - && '8aaRscKX/VGWSRLsCjnK2rcdC3njGUsQ5PSdv92yqJaMk5WBoRMpJsSnNgZufBdCkmsN' - && '60FgRbllK8PNzOlttT/qpz2sOUnpeWGHvq9ewcyc28/7XQCru213NOL+l6wgZ0kXAjnD' - && 'cazP7gXuTdu41rCyxbgr3mt/P16+F6LgUVXtmq5bC237yNsNu5YtPBZgx4kLFznZ1XlM' - && 'BzB/1liECBAN801yhfiq0HflbKXz1ojZ4qCylSBsbm6q/93wX0n0Q1Ir6UzWYXaZyZaF' - && 'qqxeZn813n4ZlhPWJWXMo00P5OTDF5c0qmm8fRlPip6bFhHk6Ti3ddfy5i3OXBemJQE2' - && 'A5g/c/qaTasC8krC0KdzE+3qWG/y6thmW7Vui/UkQ7w51vqDaGnRZFInPdlshNQ2C8oJ' - && 'h0oqaefF++zmzh5bu7bbXrBxjp88bp5qgZzNdyfWD/9t+B+TO4GW8/p+R0SHcGBxLWEF' - && 'jiQlHeIXEaRIPZAVRMVCTDcQCUh8LfOyaqjgCcr+YpY7NRFa2VY/egsqtNtdw8ie5gjJ' - && 'oUTqicjofOYA2f/YgcR03s5MMBF4wlIa7rMr5mnUyru6xl0LZAeFvDG3l83DF5199muk' - && 'oJO1FUMoviSi8Nh9Kg+Ru7qvUvCqPO+cMZsxbPsM4HXW9KcrEyKApTa7s9BVSyLaF3Ik' - && 'SbLSQros18RyInkkV2u5q+6zLaS+aCT0oJl/QVI78IWcsvDos1vtLYCE551QKNuCKW63' - && '+157g36cMOYI9yWhC3K+j4KDEHKxC9+t0altDaFHwL/kvVZIBJw761/uM5/MTJlU7S/Z' - && 'N6hTBNlhZA0OPReNuGdM6nL4jR4G5ZnRusAtKmVHwg1Slcxe11nODZJKh1fJ6kwM3dQa' - && 'VgOw3omjkGuL9/o/L/vFTzs7mi8pQZBpIT4f9PxE2bRFQncY9pdjKDoExDH7ebzPbgFo' - && 'bQjdng48KBfvzZau77ORN61FI66PsW2N7ARiZnZTZ589BtAWCV1v5J1zF+JNVdui2CbL' - && 'OcJsq1ejD2lVgCDL4e14r58J0N6k+cmEu0HYIssdrbxgnaGeeG9yJEg32hC6GbOix81y' - && 'trTsWLtiixpgQNLZ4yVEgCT++xSP0H7C0N1ZadVAh6SR3kRm2WfJO0H/XqTuQcn+IlOI' - && 'AFjRVaZhus3g2az0WuA0wcIi5QP3DDNIIPtakBABYltts7AO4OEi9eTFYGCksSRzwM4L' - && 'ECKAM1gG9tVR5UP+RkqZN5s7a0yBnwUEOSDp7GlPPp83BH0srO+1PmQrDIIen9wOdnln' - && 'n31G5n9ZtDLL6ck2x3uTf6DUee8rASX6vNnyWI/dmZ0R77O7LNXLBkWy9CE7Pd6XvNih' - && 'QkEQeZHZl9PBFtsDstebtyWFwv0B4r32UrzXn+6xDtBdwIslNL0N+JnMvravxiraFO/s' - && 'tm0y+xzQlcfkddCNCe/vGfP7GQH6lzdfbHAjqSCBHZK+PN5CzESSlixgnhMLzXAeXp+3' - && 'hWfuM0sWL10abQv1CdtHixzvmtiYPhcvSFOTJk1NEPEQkWdPUry4oc96y2o3YJiWs5Wx' - && 'zbYq83THHHu9Y1N2kG45tDRqdsgzxxuznKPOGbsTsN2M7d6zfXhePJ5Ici1h6mUcAcw0' - && '8Zo5fp35NoqKxAjwTrRhZmLSpPY9ySmPzV27dm+lTn9cKSTGA+XT+03Jq+l8HBLv2Q7c' - && 'X9K+ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v' - && '/PogUvEwPUGFiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2f' - && 'cpUAAAAASUVORK5CYII='. - APPEND ls_image TO rt_assets. - - ENDMETHOD. "lif_gui_page~get_assets - METHOD lif_gui_page~on_event. ev_state = gc_event_state-not_handled. ENDMETHOD. "lif_gui_page~on_event diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index e272b5983..a294c53a8 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -9,8 +9,7 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. constructor RAISING lcx_exception, lif_gui_page~render REDEFINITION, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~get_assets REDEFINITION. + lif_gui_page~on_event REDEFINITION. PRIVATE SECTION. CONSTANTS: BEGIN OF c_actions, @@ -336,168 +335,4 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ENDMETHOD. "render_repo -********************************************************************** -* ASSETS, STYLES, SCRIPTS -********************************************************************** - - METHOD lif_gui_page~get_assets. -* http://fa2png.io/r/octicons/ -* colour: #808080 -* size: 16 -* https://www.base64-image.de/ can be used to convert images to base64 - - DATA ls_image TYPE ty_web_asset. - - rt_assets = super->lif_gui_page~get_assets( ). - - ls_image-url = 'img/sync' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA6ElEQVQYGY3BIWuUAQAG' - && '4Pc7N72xsbGBYNE8tYpVZKDZX2CcYLEZ9yQxOQSz3D/YmkUsVovRQ2SYNJnlkFfH7VZu' - && 'wefJgrGHXnjrpQeu5B93smCwr6qqqp54433mDI5Ucds1u577o+p35hyoqe2cMThWVatJ' - && '7KiZrZxz18SJqqtJPFXPssRgw0oSH9WNXMCQU76qzSxx2cxxTlk3yhKb6mcSQy7kvjpM' - && 'Ylt98tpjN3POyFTdSuKSqppayxkjE/Uhc36p+m7PhhXr7vmmfhhnzpHPJqqqquqdcRY8' - && 'spq47sAXMyde2c3/+wvX7Y18BexhBwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/toc' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAFVBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgIAO39T0AAAABnRSTlMABBCRlMXJzV0oAAAAN0lEQVQIW2NgwABuaWlB' - && 'YWlpDgwJDAxiAgxACshgYwAz0tLY2NISSBWBMYAmg4ADyBZhARCJAQBBchGypGCbQgAA' - && 'AABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/repo_online' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAApVBMVEUAAABQbJxQbJxQ' - && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' - && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' - && 'bJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQbJxQ' - && 'bJz+TJ01AAAANnRSTlMAAQIDBAcJCgwSFBocHygqMTM1NkRHSU1QUWFiZGlweHuDiImL' - && 'lZiio6a5vsfT3uTo6e3x9fsxY2JuAAAAgUlEQVQYGXXB6RaBUBSA0e+IEuIiMs9zhlDn' - && '/R/NZWmt/LA3f1RcoaB50SydCbn20wjedkPu3sKSpMGH21PhLdZ0BATZ+cCXtxtDHGLV' - && 'pgFW9QqJj2U0wvJvMF+5jiNGI3HK9dMQSouH6sRoFGoWd8l1dEDRWlWPQsFS98KPvvDH' - && 'C3HLClrWc70ZAAAAAElFTkSuQmCC'. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/repo_offline' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICuaWnmAAAAG3RSTlMAAgQFBgsQFxweIiMtN3yI' - && 'nqOvt9Hp6/Hz9fktMNR/AAAAXElEQVQYV5WO2xJAMAxES1q3ugfF/v9/0qLyyL4k58xk' - && 'J0p9D7N5oeqZgSwy7fDZnHNdEE1gWK116tksl7hPimGFFPWYl7MU0zksRCl8TStKg1AJ' - && '0XNC8Zm4/c0BUVQHi0llOUYAAAAASUVORK5CYII='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/pkg' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAA30lEQVQoU43OIUuDcRSF' - && '8fvqhuB0mFwaKLbVBVdkX0GTFss+wYL2H4rJIIgyQQSzZcUPoGHZ9CKCmAwTMS8Y/ga3' - && 'BWVjT7hwOQ+HEzEbMhU7jrTd69q2KhtFRU2nrvS927dm3pyqPXcuNRVD7sxiRIQlDSc+' - && 'PGjZUFDWkYekLfdoV2XYua4rSZ61pZBkEUq2XPty41XuXJIiZGNhPDVZiFCYIMSor+Db' - && '7RQhYnQnCsNvNmGgPFFYMQh1PU9aqrLxyGUNx/p66r9mUc2hFx3JhU9vDtQU4y9KGjaV' - && '/gXT+AGZVIinhU2EAwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/branch' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAqFBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgID/OyosAAAAN3RSTlMAAQIDBAYICQ8TFRweJScoKSo3Oj1FRk1dYWJjZmhzdIaJ' - && 'j5GVm6CwsrS5vsHDyszV19ne7/X583teZAAAAIFJREFUGFdVytkagVAYheFvFzJlnqc0' - && 'EEoR+u//zhxI7dbZ9z4LMJ1op9DmjpntdXiBigHbLiAYqukBVr63+YGRSazgCY/iEooP' - && 'xKZxr0EnSbo14B1Rg4msKzj150fJrQpERPLBv7mIfNxlq+zRbZsu0JYpGlcdwjY9Twfr' - && 'nAbNsr6IKQxJI/U5CgAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/link' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAXVBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVwFMKAAAAHnRSTlMAAwQFBgcK' - && 'FR4gIiMmP0JHSm+RmKDByM/R09rg+/0jN/q+AAAAX0lEQVQYV43Nxw6AIBAE0FGw916Z' - && '//9MRQ0S4sG5bPZlCxqSCyBGXgFUJKUA4A8PUOKONzuQOxOZIjcLkrMvxGQg3skSCFYL' - && 'Kl1Ds5LWz+33yyf4rQOSf6CjnV6rHeAA87gJtKzI8ocAAAAASUVORK5CYII='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/code' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA' - && 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAAA1SURBVAhbY2AODQ0NEWBgYGVg' - && 'YGByhNAMKgIMrKyhAQxMDhA+QwCCZgVqIIUP1Q+yJzTUAAAfUAq+Os55uAAAAABJRU5E' - && 'rkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/bin' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAElBMVEUAAACAgICAgICA' - && 'gICAgICAgIC07w1vAAAABXRSTlMABECUxcOwZQcAAABBSURBVAhbXcqxDYAwAMRAK8h9' - && 'hmAARoANvuD3X4UCiojqZMlsbe8JAuN6ZZ9ozThRCVmsJe9H0HwdXf19W9v2eAA6Fws2' - && 'RotPsQAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/obj' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAACAgICAgICA' - && 'gICAgICAgICAgICAgICAgICAgICAgIDcWqnoAAAACnRSTlMABD1AZI+RlcPFIaFe1gAA' - && 'AEVJREFUCFtjYF+1atVKAQYGLgYGBuaJEJrBUgBCM0+A0AwLgLQIgyOIZmwCSgNptgAG' - && '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/lock' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI' - && 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB' - && 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0' - && 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y' - && 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/dir' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAASFBMVEUAAABmksxmksxm' - && 'ksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxmksxm' - && 'ksxmksxmksxmksxMwQo8AAAAF3RSTlMABhIYIy1fZmhpe3+IiYuMkZvD7e/x93sipD4A' - && 'AAA+SURBVBhXY2BABzwiokAgzAYXEGdiBAIWIYQAPzcQCApzgwEXM4M4KuBDFxAYKAEx' - && 'VAFeBlYOTiTAzoThewD5hBAcnWM4gwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/burger' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAHlBMVEUAAABtktltktlt' - && 'ktltktltktltktltktltktltktk7ccVDAAAACXRSTlMAFDBLY2SFoPGv/DFMAAAAJ0lE' - && 'QVQIW2NggIHKmWAwmaETwpjGoBoKBo4MmIAkxXApuGK4dgwAAJa5IzLs+gRBAAAAAElF' - && 'TkSuQmCC'. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/star' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAABejclejcle' - && 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle' - && 'jclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejclejcle' - && 'jclejclejclejclejclejclejclejclejcn2yvsVAAAALXRSTlMAAQIFBwkKCw0QERUY' - && 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC' - && 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV' - && 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o' - && 'ahA3YV7OfwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ls_image-url = 'img/star-grey' ##NO_TEXT. - ls_image-content = - 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAilBMVEUAAADQ0NDQ0NDQ' - && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ' - && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ' - && '0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NC2QdifAAAALXRSTlMAAQIFBwkKCw0QERUY' - && 'HB4jLzEzNjg7PVdYYmRvd3mDm52eub7R0+Tr8fX3+/16wo8zAAAAcElEQVQYGW3BBxKC' - && 'MABFwYcQETv2hg1UVP79ryeTZBxw3MWL+JGltBgVtGRSSoORVOAE8Xi5zVU7rWfDCOaV' - && 'Gu59mLz0dTPUBg95eYjVK2VdOzjBW9YZL5FT4i2k5+YoKcY5VPsQkoumOLsu1mjFHx8o' - && 'ahA3YV7OfwAAAABJRU5ErkJggg=='. - APPEND ls_image TO rt_assets. - - ENDMETHOD. "get_assets - ENDCLASS. \ No newline at end of file From c70bedd6ad5bc3c909472a257ef931a6090e2767 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 27 Nov 2016 13:24:15 +0200 Subject: [PATCH 24/27] W3xx condense filesize param #374 --- src/zabapgit_css_common.w3mi.xml | 2 +- src/zabapgit_js_common.w3mi.xml | 2 +- src/zabapgit_object_w3xx.prog.abap | 25 ++++++++++++------------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/zabapgit_css_common.w3mi.xml b/src/zabapgit_css_common.w3mi.xml index 8e398b1d3..1908ab75d 100644 --- a/src/zabapgit_css_common.w3mi.xml +++ b/src/zabapgit_css_common.w3mi.xml @@ -21,7 +21,7 @@ MI ZABAPGIT_CSS_COMMON filesize - 12136 + 12136 MI diff --git a/src/zabapgit_js_common.w3mi.xml b/src/zabapgit_js_common.w3mi.xml index 7047c5f2f..386970cd1 100644 --- a/src/zabapgit_js_common.w3mi.xml +++ b/src/zabapgit_js_common.w3mi.xml @@ -21,7 +21,7 @@ MI ZABAPGIT_JS_COMMON filesize - 6500 + 6500 MI diff --git a/src/zabapgit_object_w3xx.prog.abap b/src/zabapgit_object_w3xx.prog.abap index d480c2259..d67f17668 100644 --- a/src/zabapgit_object_w3xx.prog.abap +++ b/src/zabapgit_object_w3xx.prog.abap @@ -34,8 +34,9 @@ CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT. RAISING lcx_exception. METHODS patch_size - IMPORTING iv_size TYPE i - CHANGING ct_params TYPE ty_wwwparams_tt + IMPORTING iv_size TYPE i OPTIONAL " Overwrite if given + EXPORTING ev_size TYPE i " Return size as integer + CHANGING ct_params TYPE ty_wwwparams_tt " Param table to patch RAISING lcx_exception. METHODS patch_filename @@ -101,7 +102,6 @@ CLASS lcl_object_w3super IMPLEMENTATION. DATA lt_w3html TYPE STANDARD TABLE OF w3html. DATA lt_w3params TYPE STANDARD TABLE OF wwwparams. DATA lv_xstring TYPE xstring. - DATA ls_wwwparam LIKE LINE OF lt_w3params. DATA lv_size TYPE int4. SELECT SINGLE * INTO CORRESPONDING FIELDS OF ms_key @@ -141,12 +141,9 @@ CLASS lcl_object_w3super IMPLEMENTATION. lcx_exception=>raise( 'Cannot read W3xx data' ). ENDIF. - READ TABLE lt_w3params INTO ls_wwwparam WITH KEY name = 'filesize' ##NO_TEXT. - IF sy-subrc IS NOT INITIAL. - lcx_exception=>raise( 'Cannot read W3xx filesize' ). - ENDIF. - - lv_size = ls_wwwparam-value. + " Condense size string + get size to local integer + patch_size( IMPORTING ev_size = lv_size + CHANGING ct_params = lt_w3params ). " Remove file path (for security concerns) patch_filename( CHANGING ct_params = lt_w3params ). @@ -221,10 +218,8 @@ CLASS lcl_object_w3super IMPLEMENTATION. iv_ext = get_ext( lt_w3params ) ). WHEN OTHERS. lcx_exception=>raise( 'W3xx: Unknown serializer version' ). - ENDCASE. - CASE ms_key-relid. WHEN 'MI'. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' @@ -389,8 +384,12 @@ CLASS lcl_object_w3super IMPLEMENTATION. lcx_exception=>raise( |W3xx: Cannot find file size for { ms_key-objid }| ). ENDIF. - -value = iv_size. - SHIFT -value LEFT DELETING LEADING space. + IF iv_size IS NOT INITIAL. + -value = iv_size. + ENDIF. + CONDENSE -value. + + ev_size = -value. ENDMETHOD. " patch_size. From da7da129c2242caf2896c8664c316f254a50c7db Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 27 Nov 2016 13:31:22 +0200 Subject: [PATCH 25/27] W3xx clear version #374 --- src/zabapgit_css_common.w3mi.xml | 2 +- src/zabapgit_js_common.w3mi.xml | 2 +- src/zabapgit_object_w3xx.prog.abap | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_css_common.w3mi.xml b/src/zabapgit_css_common.w3mi.xml index 1908ab75d..b5ce02b7f 100644 --- a/src/zabapgit_css_common.w3mi.xml +++ b/src/zabapgit_css_common.w3mi.xml @@ -33,7 +33,7 @@ MI ZABAPGIT_CSS_COMMON version - 00002 + diff --git a/src/zabapgit_js_common.w3mi.xml b/src/zabapgit_js_common.w3mi.xml index 386970cd1..7860ae90e 100644 --- a/src/zabapgit_js_common.w3mi.xml +++ b/src/zabapgit_js_common.w3mi.xml @@ -33,7 +33,7 @@ MI ZABAPGIT_JS_COMMON version - 00004 + diff --git a/src/zabapgit_object_w3xx.prog.abap b/src/zabapgit_object_w3xx.prog.abap index d67f17668..f1c17f50d 100644 --- a/src/zabapgit_object_w3xx.prog.abap +++ b/src/zabapgit_object_w3xx.prog.abap @@ -43,6 +43,10 @@ CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT. CHANGING ct_params TYPE ty_wwwparams_tt RAISING lcx_exception. + METHODS clear_version + CHANGING ct_params TYPE ty_wwwparams_tt + RAISING lcx_exception. + ENDCLASS. "lcl_object_W3SUPER DEFINITION *----------------------------------------------------------------------* @@ -148,6 +152,9 @@ CLASS lcl_object_w3super IMPLEMENTATION. " Remove file path (for security concerns) patch_filename( CHANGING ct_params = lt_w3params ). + " Clear version + clear_version( CHANGING ct_params = lt_w3params ). + CASE ms_key-relid. WHEN 'MI'. CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' @@ -408,6 +415,21 @@ CLASS lcl_object_w3super IMPLEMENTATION. ENDMETHOD. " patch_filename. + METHOD clear_version. + + FIELD-SYMBOLS LIKE LINE OF ct_params. + + READ TABLE ct_params ASSIGNING WITH KEY name = 'version'. + + IF sy-subrc > 0. + lcx_exception=>raise( |W3xx: Cannot find version for { ms_key-objid }| ). + ENDIF. + + " Clear version + CLEAR -value. + + ENDMETHOD. " clear_version. + METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. ENDMETHOD. From 2bcfbe0dc367c5d66144ad5f5896b76e7d0ead8c Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sun, 27 Nov 2016 12:45:12 +0100 Subject: [PATCH 26/27] use latest abapmerge --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e571cc70f..f0cdb6687 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "url": "git+https://github.com/larshp/abapGit.git" }, "devDependencies": { - "abapmerge": "^0.5.4", + "abapmerge": "^0.6.2", "abaplint": ">=0.26.7" } } From 968a186a85d418a8b2a0f58071df993cd0bc48d0 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 27 Nov 2016 11:53:42 +0000 Subject: [PATCH 27/27] cloning -> favorite, add earlier in case the deserialization fails, currently the repo is not added as a favorite --- src/zabapgit.prog.abap | 2 +- src/zabapgit_services_repo.prog.abap | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 32538a1c0..d115af037 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100. * See http://www.abapgit.org CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT - gc_abap_version TYPE string VALUE 'v1.23.5'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.23.6'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_services_repo.prog.abap b/src/zabapgit_services_repo.prog.abap index f33acb264..eb1e2bfc5 100644 --- a/src/zabapgit_services_repo.prog.abap +++ b/src/zabapgit_services_repo.prog.abap @@ -62,11 +62,13 @@ CLASS lcl_services_repo IMPLEMENTATION. iv_url = ls_popup-url iv_branch_name = ls_popup-branch_name iv_package = ls_popup-package ). + + toggle_favorite( lo_repo->get_key( ) ). + lo_repo->status( ). " check for errors lo_repo->deserialize( ). lcl_app=>user( )->set_repo_show( lo_repo->get_key( ) ). " Set default repo for user - toggle_favorite( lo_repo->get_key( ) ). COMMIT WORK.