mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Refactor "Export Package to ZIP" to HTML Form (#4652)
* refactor export package to zip to HTML form * change literal to constant * downport statement * remove popup package_export * reorder methods, unify whitespace Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
cac2de1ced
commit
1cbda2f2ae
|
@ -107,10 +107,10 @@ CLASS zcl_abapgit_gui_page_ex_object IMPLEMENTATION.
|
|||
WHEN c_event-choose_object_type.
|
||||
|
||||
mo_form_data->set(
|
||||
iv_key = 'object_type'
|
||||
iv_key = c_id-object_type
|
||||
iv_val = zcl_abapgit_ui_factory=>get_popups( )->popup_search_help( 'TADIR-OBJECT' ) ).
|
||||
|
||||
IF mo_form_data->get( 'object_type' ) IS NOT INITIAL.
|
||||
IF mo_form_data->get( c_id-object_type ) IS NOT INITIAL.
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
ELSE.
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||
|
|
167
src/ui/zcl_abapgit_gui_page_ex_pckage.clas.abap
Normal file
167
src/ui/zcl_abapgit_gui_page_ex_pckage.clas.abap
Normal file
|
@ -0,0 +1,167 @@
|
|||
CLASS zcl_abapgit_gui_page_ex_pckage DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_gui_component
|
||||
FINAL
|
||||
CREATE PRIVATE.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES zif_abapgit_gui_event_handler.
|
||||
INTERFACES zif_abapgit_gui_renderable.
|
||||
|
||||
CLASS-METHODS create
|
||||
RETURNING
|
||||
VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS constructor
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_id,
|
||||
package TYPE string VALUE 'package',
|
||||
folder_logic TYPE string VALUE 'folder_logic',
|
||||
main_lang_only TYPE string VALUE 'main_lang_only',
|
||||
END OF c_id.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_event,
|
||||
go_back TYPE string VALUE 'go-back',
|
||||
export_package TYPE string VALUE 'export-package',
|
||||
choose_package TYPE string VALUE 'choose-object-type',
|
||||
END OF c_event.
|
||||
|
||||
|
||||
DATA mo_form TYPE REF TO zcl_abapgit_html_form.
|
||||
DATA mo_form_data TYPE REF TO zcl_abapgit_string_map.
|
||||
DATA mo_validation_log TYPE REF TO zcl_abapgit_string_map.
|
||||
DATA mo_form_util TYPE REF TO zcl_abapgit_html_form_utils.
|
||||
|
||||
METHODS get_form_schema
|
||||
RETURNING
|
||||
VALUE(ro_form) TYPE REF TO zcl_abapgit_html_form.
|
||||
|
||||
METHODS export_package
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS zcl_abapgit_gui_page_ex_pckage IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( ).
|
||||
CREATE OBJECT mo_validation_log.
|
||||
CREATE OBJECT mo_form_data.
|
||||
mo_form = get_form_schema( ).
|
||||
mo_form_util = zcl_abapgit_html_form_utils=>create( mo_form ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD create.
|
||||
DATA lo_component TYPE REF TO zcl_abapgit_gui_page_ex_pckage.
|
||||
CREATE OBJECT lo_component.
|
||||
|
||||
ri_page = zcl_abapgit_gui_page_hoc=>create(
|
||||
iv_page_title = 'Export Package to ZIP'
|
||||
ii_child_component = lo_component ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_form_schema.
|
||||
ro_form = zcl_abapgit_html_form=>create( iv_form_id = 'export-object-to-files' ).
|
||||
|
||||
ro_form->text(
|
||||
iv_name = c_id-package
|
||||
iv_label = 'Package'
|
||||
iv_required = abap_true
|
||||
iv_upper_case = abap_true
|
||||
iv_side_action = c_event-choose_package
|
||||
)->radio(
|
||||
iv_name = c_id-folder_logic
|
||||
iv_label = 'Folder Logic'
|
||||
iv_default_value = zif_abapgit_dot_abapgit=>c_folder_logic-prefix
|
||||
iv_hint = 'Define how package folders are named in repository'
|
||||
)->option(
|
||||
iv_label = 'Prefix'
|
||||
iv_value = zif_abapgit_dot_abapgit=>c_folder_logic-prefix
|
||||
)->option(
|
||||
iv_label = 'Full'
|
||||
iv_value = zif_abapgit_dot_abapgit=>c_folder_logic-full
|
||||
)->checkbox(
|
||||
iv_name = c_id-main_lang_only
|
||||
iv_label = 'Serialize Main Language Only'
|
||||
iv_hint = 'Ignore translations, serialize just main language'
|
||||
)->command(
|
||||
iv_label = 'Export Package to ZIP'
|
||||
iv_action = c_event-export_package
|
||||
iv_cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main
|
||||
)->command(
|
||||
iv_label = 'Back'
|
||||
iv_action = c_event-go_back ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_renderable~render.
|
||||
gui_services( )->register_event_handler( me ).
|
||||
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
ri_html->add( mo_form->render(
|
||||
io_values = mo_form_data
|
||||
io_validation_log = mo_validation_log ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_gui_event_handler~on_event.
|
||||
mo_form_data = mo_form_util->normalize( ii_event->form_data( ) ).
|
||||
|
||||
CASE ii_event->mv_action.
|
||||
WHEN c_event-go_back.
|
||||
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back.
|
||||
|
||||
WHEN c_event-export_package.
|
||||
|
||||
mo_validation_log = mo_form_util->validate( mo_form_data ).
|
||||
IF mo_validation_log->is_empty( ) = abap_false.
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
ELSE.
|
||||
export_package( ).
|
||||
MESSAGE 'Package successfully exported' TYPE 'S'.
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-go_back.
|
||||
ENDIF.
|
||||
|
||||
WHEN c_event-choose_package.
|
||||
|
||||
mo_form_data->set(
|
||||
iv_key = c_id-package
|
||||
iv_val = zcl_abapgit_ui_factory=>get_popups( )->popup_search_help( 'TDEVC-DEVCLASS' ) ).
|
||||
|
||||
IF mo_form_data->get( c_id-package ) IS NOT INITIAL.
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render.
|
||||
ELSE.
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||
ENDIF.
|
||||
ENDCASE.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD export_package.
|
||||
DATA lv_package TYPE devclass.
|
||||
DATA lv_folder_logic TYPE string.
|
||||
DATA lv_main_lang_only TYPE abap_bool.
|
||||
|
||||
lv_package = mo_form_data->get( c_id-package ).
|
||||
lv_folder_logic = mo_form_data->get( c_id-folder_logic ).
|
||||
lv_main_lang_only = mo_form_data->get( c_id-main_lang_only ).
|
||||
|
||||
zcl_abapgit_zip=>export_package(
|
||||
iv_package = lv_package
|
||||
iv_folder_logic = lv_folder_logic
|
||||
iv_main_lang_only = lv_main_lang_only ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/ui/zcl_abapgit_gui_page_ex_pckage.clas.xml
Normal file
16
src/ui/zcl_abapgit_gui_page_ex_pckage.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_GUI_PAGE_EX_PCKAGE</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Export Package to ZIP</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -141,7 +141,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_gui_router IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD abapgit_services_actions.
|
||||
|
@ -744,7 +744,6 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
|||
|
||||
DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key,
|
||||
lo_repo TYPE REF TO zcl_abapgit_repo,
|
||||
lv_package TYPE devclass,
|
||||
lv_path TYPE string,
|
||||
lv_xstr TYPE xstring.
|
||||
|
||||
|
@ -785,12 +784,8 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
|||
iv_xstr = lv_xstr ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||
WHEN zif_abapgit_definitions=>c_action-zip_package. " Export package as ZIP
|
||||
zcl_abapgit_zip=>export_package( IMPORTING
|
||||
ev_xstr = lv_xstr
|
||||
ev_package = lv_package ).
|
||||
file_download( iv_package = lv_package
|
||||
iv_xstr = lv_xstr ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||
rs_handled-page = zcl_abapgit_gui_page_ex_pckage=>create( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page.
|
||||
WHEN zif_abapgit_definitions=>c_action-zip_transport. " Export transports as ZIP
|
||||
zcl_abapgit_transport_mass=>run( ).
|
||||
rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||
|
|
|
@ -50,9 +50,6 @@ CLASS ltcl_popups_mock IMPLEMENTATION.
|
|||
METHOD zif_abapgit_popups~popup_folder_logic.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_popups~popup_package_export.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_popups~popup_search_help.
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -700,49 +700,6 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_popups~popup_package_export.
|
||||
|
||||
DATA: lt_fields TYPE TABLE OF sval.
|
||||
DATA: lv_package TYPE spo_value.
|
||||
DATA: lv_folder_logic TYPE spo_value.
|
||||
DATA: lv_serialize_master_lang_only TYPE spo_value.
|
||||
|
||||
add_field( EXPORTING iv_tabname = 'TDEVC'
|
||||
iv_fieldname = 'DEVCLASS'
|
||||
iv_fieldtext = 'Package'
|
||||
CHANGING ct_fields = lt_fields ).
|
||||
|
||||
add_field( EXPORTING iv_tabname = 'TDEVC'
|
||||
iv_fieldname = 'INTSYS'
|
||||
iv_fieldtext = 'Folder logic'
|
||||
iv_value = 'PREFIX'
|
||||
CHANGING ct_fields = lt_fields ).
|
||||
|
||||
add_field( EXPORTING iv_tabname = 'TVDIR'
|
||||
iv_fieldname = 'FLAG'
|
||||
iv_fieldtext = 'Main language only'
|
||||
CHANGING ct_fields = lt_fields ).
|
||||
|
||||
TRY.
|
||||
|
||||
_popup_3_get_values( EXPORTING iv_popup_title = 'Export package'
|
||||
iv_no_value_check = abap_true
|
||||
IMPORTING ev_value_1 = lv_package
|
||||
ev_value_2 = lv_folder_logic
|
||||
ev_value_3 = lv_serialize_master_lang_only
|
||||
CHANGING ct_fields = lt_fields ).
|
||||
|
||||
ev_package = to_upper( lv_package ).
|
||||
ev_folder_logic = to_upper( lv_folder_logic ).
|
||||
ev_serialize_master_lang_only = boolc( lv_serialize_master_lang_only IS NOT INITIAL ).
|
||||
|
||||
CATCH zcx_abapgit_cancel.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_popups~popup_search_help.
|
||||
|
||||
DATA lt_ret TYPE TABLE OF ddshretval.
|
||||
|
|
|
@ -350,10 +350,6 @@ CLASS ltcl_popups_mock IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_popups~popup_package_export.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_popups~popup_search_help.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -44,10 +44,6 @@ CLASS ltcl_abapgit_popups_mock IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_popups~popup_package_export.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_popups~popup_to_confirm.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -25,13 +25,6 @@ INTERFACE zif_abapgit_popups
|
|||
VALUE(rv_value) TYPE ddshretval-fieldval
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS popup_package_export
|
||||
EXPORTING
|
||||
!ev_package TYPE devclass
|
||||
!ev_folder_logic TYPE string
|
||||
!ev_serialize_master_lang_only TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS popup_folder_logic
|
||||
RETURNING
|
||||
VALUE(rv_folder_logic) TYPE string
|
||||
|
|
|
@ -29,11 +29,12 @@ CLASS zcl_abapgit_zip DEFINITION
|
|||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS export_package
|
||||
EXPORTING
|
||||
!ev_xstr TYPE xstring
|
||||
!ev_package TYPE devclass
|
||||
IMPORTING
|
||||
VALUE(iv_package) TYPE devclass
|
||||
iv_folder_logic TYPE string
|
||||
iv_main_lang_only TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
zcx_abapgit_exception.
|
||||
CLASS-METHODS load
|
||||
IMPORTING
|
||||
!iv_xstr TYPE xstring
|
||||
|
@ -193,34 +194,34 @@ CLASS zcl_abapgit_zip IMPLEMENTATION.
|
|||
|
||||
DATA: ls_local_settings TYPE zif_abapgit_persistence=>ty_repo-local_settings,
|
||||
lo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit,
|
||||
li_popups TYPE REF TO zif_abapgit_popups,
|
||||
lv_folder_logic TYPE string,
|
||||
lv_package TYPE devclass,
|
||||
lv_serialize_master_lang_only TYPE abap_bool.
|
||||
lo_frontend_serv TYPE REF TO zif_abapgit_frontend_services,
|
||||
lv_default TYPE string,
|
||||
lv_path TYPE string,
|
||||
lv_zip_xstring TYPE xstring.
|
||||
|
||||
|
||||
li_popups = zcl_abapgit_ui_factory=>get_popups( ).
|
||||
li_popups->popup_package_export(
|
||||
IMPORTING
|
||||
ev_package = lv_package
|
||||
ev_folder_logic = lv_folder_logic
|
||||
ev_serialize_master_lang_only = lv_serialize_master_lang_only ).
|
||||
IF lv_package IS INITIAL.
|
||||
RAISE EXCEPTION TYPE zcx_abapgit_cancel.
|
||||
ENDIF.
|
||||
|
||||
ls_local_settings-serialize_master_lang_only = lv_serialize_master_lang_only.
|
||||
ls_local_settings-serialize_master_lang_only = iv_main_lang_only.
|
||||
|
||||
lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ).
|
||||
lo_dot_abapgit->set_folder_logic( lv_folder_logic ).
|
||||
lo_dot_abapgit->set_folder_logic( iv_folder_logic ).
|
||||
|
||||
ev_xstr = export(
|
||||
lo_frontend_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
|
||||
|
||||
REPLACE ALL OCCURRENCES OF '/' IN iv_package WITH '#'.
|
||||
lv_default = |{ iv_package }_{ sy-datlo }_{ sy-timlo }|.
|
||||
|
||||
lv_zip_xstring = export(
|
||||
is_local_settings = ls_local_settings
|
||||
iv_package = lv_package
|
||||
iv_package = iv_package
|
||||
io_dot_abapgit = lo_dot_abapgit ).
|
||||
|
||||
ev_package = lv_package.
|
||||
lv_path = lo_frontend_serv->show_file_save_dialog(
|
||||
iv_title = 'Package Export'
|
||||
iv_extension = 'zip'
|
||||
iv_default_filename = lv_default ).
|
||||
|
||||
lo_frontend_serv->file_download(
|
||||
iv_path = lv_path
|
||||
iv_xstr = lv_zip_xstring ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user