diff --git a/src/repo/zcl_abapgit_object_filter_tran.clas.abap b/src/repo/zcl_abapgit_object_filter_tran.clas.abap index d561e5000..b313032e3 100644 --- a/src/repo/zcl_abapgit_object_filter_tran.clas.abap +++ b/src/repo/zcl_abapgit_object_filter_tran.clas.abap @@ -6,7 +6,6 @@ CLASS zcl_abapgit_object_filter_tran DEFINITION PUBLIC SECTION. INTERFACES zif_abapgit_object_filter. - TYPES ty_trrngtrkor_tt TYPE RANGE OF trkorr. TYPES: BEGIN OF ty_e071_filter, pgmid TYPE tadir-pgmid, object TYPE tadir-object, @@ -17,14 +16,14 @@ CLASS zcl_abapgit_object_filter_tran DEFINITION METHODS set_filter_values IMPORTING iv_package TYPE tadir-devclass - it_r_trkorr TYPE ty_trrngtrkor_tt + it_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt RAISING zcx_abapgit_exception . METHODS get_filter_values EXPORTING ev_package TYPE tadir-devclass - et_r_trkorr TYPE ty_trrngtrkor_tt. + et_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt. PROTECTED SECTION. METHODS adjust_local_filter @@ -38,13 +37,13 @@ CLASS zcl_abapgit_object_filter_tran DEFINITION PRIVATE SECTION. DATA mt_filter TYPE zif_abapgit_definitions=>ty_tadir_tt . - DATA mt_r_trkorr TYPE ty_trrngtrkor_tt . + DATA mt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt . DATA mv_package TYPE tadir-devclass. METHODS generate_local_filter IMPORTING iv_package TYPE tadir-devclass - it_r_trkorr TYPE ty_trrngtrkor_tt + it_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt RETURNING VALUE(rt_filter) TYPE zif_abapgit_definitions=>ty_tadir_tt RAISING diff --git a/src/ui/zabapgit_css_common.w3mi.data.css b/src/ui/zabapgit_css_common.w3mi.data.css index 6164f10e8..3789c8c7d 100644 --- a/src/ui/zabapgit_css_common.w3mi.data.css +++ b/src/ui/zabapgit_css_common.w3mi.data.css @@ -628,14 +628,16 @@ table.db_tab td.data { font-style: italic; } -span.action_link.enabled{ +li.action_link.enabled{ visibility: visible; position: relative; + display: block; } -span.action_link:not(enabled){ +li.action_link:not(enabled){ visibility: hidden; position: fixed; /* so it does not take up space when hidden */ + display: none; } diff --git a/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap index f32c5a819..4888810df 100644 --- a/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_repo_over.clas.abap @@ -29,6 +29,7 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION iv_only_favorites TYPE abap_bool. METHODS get_only_favorites RETURNING VALUE(rv_result) TYPE abap_bool. + PROTECTED SECTION. @@ -134,9 +135,8 @@ CLASS zcl_abapgit_gui_page_repo_over DEFINITION iv_css_class TYPE string OPTIONAL RETURNING VALUE(rv_html) TYPE string. - METHODS action_link - IMPORTING iv_content TYPE string - RETURNING VALUE(rv_html) TYPE string. + + ENDCLASS. @@ -477,83 +477,76 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. METHOD render_actions. CONSTANTS: - lc_separator TYPE string VALUE `|`, lc_dummy_key TYPE string VALUE `?key=#`, lc_offline_class TYPE string VALUE `action_offline_repo`, lc_online_class TYPE string VALUE `action_online_repo`, lc_action_class TYPE string VALUE `action_link`. - DATA: - lv_settings_link TYPE string, - lv_check_link TYPE string, - lv_stage_link TYPE string, - lv_patch_link TYPE string, - lv_diff_link TYPE string, - lv_pull_link TYPE string. + DATA lo_toolbar TYPE REF TO zcl_abapgit_html_toolbar. + DATA lo_toolbar_more_sub TYPE REF TO zcl_abapgit_html_toolbar. - DATA: - lv_zip_import_link TYPE string, - lv_zip_export_link TYPE string. + CREATE OBJECT lo_toolbar EXPORTING iv_id = 'toolbar-ovp'. - ii_html->add( |
| ). + lo_toolbar->add( iv_txt = |Pull| + iv_act = |{ zif_abapgit_definitions=>c_action-git_reset }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_online_class }| + iv_li_class = |{ lc_action_class }| ). - lv_pull_link = ii_html->a( - iv_txt = |Pull| - iv_act = |{ zif_abapgit_definitions=>c_action-git_reset }{ lc_dummy_key }| - iv_class = |{ lc_action_class } { lc_online_class }| ). + lo_toolbar->add( iv_txt = |Stage| + iv_act = |{ zif_abapgit_definitions=>c_action-go_stage }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_online_class }| + iv_li_class = |{ lc_action_class }| ). - ii_html->add( action_link( lv_pull_link && lc_separator ) ). + lo_toolbar->add( iv_txt = |Patch| + iv_act = |{ zif_abapgit_definitions=>c_action-go_patch }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_online_class }| + iv_li_class = |{ lc_action_class }| ). - lv_stage_link = ii_html->a( - iv_txt = |Stage| - iv_act = |{ zif_abapgit_definitions=>c_action-go_stage }{ lc_dummy_key }| - iv_class = |{ lc_action_class } { lc_online_class } | ). + lo_toolbar->add( iv_txt = |Diff| + iv_act = |{ zif_abapgit_definitions=>c_action-go_repo_diff }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_online_class }| + iv_li_class = |{ lc_action_class }| ). - ii_html->add( action_link( lv_stage_link && lc_separator ) ). + lo_toolbar->add( iv_txt = |Check| + iv_act = |{ zif_abapgit_definitions=>c_action-repo_code_inspector }{ lc_dummy_key }| + iv_class = |{ lc_action_class }| + iv_li_class = |{ lc_action_class }| ). - lv_patch_link = ii_html->a( - iv_txt = |Patch| - iv_act = |{ zif_abapgit_definitions=>c_action-go_patch }{ lc_dummy_key }| - iv_class = |{ lc_action_class } { lc_online_class } | ). - ii_html->add( action_link( lv_patch_link && lc_separator ) ). + lo_toolbar->add( iv_txt = |Import| + iv_act = |{ zif_abapgit_definitions=>c_action-zip_import }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_offline_class }| + iv_li_class = |{ lc_action_class }| ). - lv_diff_link = ii_html->a( - iv_txt = |Diff| - iv_act = |{ zif_abapgit_definitions=>c_action-go_repo_diff }{ lc_dummy_key }| - iv_class = |{ lc_action_class } { lc_online_class }| ). + lo_toolbar->add( iv_txt = |Export| + iv_act = |{ zif_abapgit_definitions=>c_action-zip_export }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_offline_class }| + iv_li_class = |{ lc_action_class }| ). - ii_html->add( action_link( lv_diff_link && lc_separator ) ). + lo_toolbar->add( iv_txt = |Settings| + iv_act = |{ zif_abapgit_definitions=>c_action-repo_settings }{ lc_dummy_key }| + iv_class = |{ lc_action_class }| + iv_li_class = |{ lc_action_class }| ). - lv_check_link = ii_html->a( - iv_txt = |Check| - iv_act = |{ zif_abapgit_definitions=>c_action-repo_code_inspector }{ lc_dummy_key }| - iv_class = |{ lc_action_class }| ). + CREATE OBJECT lo_toolbar_more_sub EXPORTING iv_id = 'toolbar-ovp-more_sub'. - ii_html->add( action_link( lv_check_link && lc_separator ) ). + lo_toolbar_more_sub->add( iv_txt = |Stage by Transport| + iv_act = |{ zif_abapgit_definitions=>c_action-go_stage_transport }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_online_class }| + iv_li_class = |{ lc_action_class }| ). - lv_zip_import_link = ii_html->a( - iv_txt = |Import| - iv_act = |{ zif_abapgit_definitions=>c_action-zip_import }{ lc_dummy_key }| - iv_class = |{ lc_action_class } { lc_offline_class }| ). + lo_toolbar_more_sub->add( iv_txt = |Export by Transport| + iv_act = |{ zif_abapgit_definitions=>c_action-zip_export_transport }{ lc_dummy_key }| + iv_class = |{ lc_action_class } { lc_offline_class }| + iv_li_class = |{ lc_action_class }| ). - ii_html->add( action_link( lv_zip_import_link && lc_separator ) ). + lo_toolbar->add( iv_txt = |More| + io_sub = lo_toolbar_more_sub + iv_class = |{ lc_action_class }| + iv_li_class = |{ lc_action_class }| ). - lv_zip_export_link = ii_html->a( - iv_txt = |Export| - iv_act = |{ zif_abapgit_definitions=>c_action-zip_export }{ lc_dummy_key }| - iv_class = |{ lc_action_class } { lc_offline_class }| ). + ii_html->add( lo_toolbar->render( iv_right = abap_true ) ). - ii_html->add( action_link( lv_zip_export_link && lc_separator ) ). - - lv_settings_link = ii_html->a( - iv_txt = |Settings| - iv_act = |{ zif_abapgit_definitions=>c_action-repo_settings }{ lc_dummy_key }| - iv_class = |{ lc_action_class }| ). - - ii_html->add( action_link( lv_settings_link ) ). - - ii_html->add( |
| ). ENDMETHOD. METHOD shorten_repo_url. @@ -751,11 +744,6 @@ CLASS zcl_abapgit_gui_page_repo_over IMPLEMENTATION. ENDIF. ENDMETHOD. - METHOD action_link. - rv_html = || && iv_content && ||. - ENDMETHOD. - - METHOD set_only_favorites. mv_only_favorites = iv_only_favorites. ENDMETHOD. diff --git a/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap index e467415dd..3ad65e13f 100644 --- a/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_repo_view.clas.abap @@ -174,6 +174,7 @@ CLASS zcl_abapgit_gui_page_repo_view DEFINITION VALUE(ri_html) TYPE REF TO zif_abapgit_html RAISING zcx_abapgit_exception. + METHODS order_files CHANGING ct_files TYPE zif_abapgit_definitions=>ty_repo_file_tt. @@ -286,10 +287,16 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. IF mv_are_changes_recorded_in_tr = abap_true. ro_advanced_dropdown->add( - iv_txt = 'Add All Objects to Transport' - iv_act = |{ zif_abapgit_definitions=>c_action-repo_add_all_obj_to_trans_req }?key={ mv_key }| ). + iv_txt = 'Add All Objects to Transport' + iv_act = |{ zif_abapgit_definitions=>c_action-repo_add_all_obj_to_trans_req }?key={ mv_key }| ). + ENDIF. + IF mo_repo->is_offline( ) = abap_true. + ro_advanced_dropdown->add( iv_txt = 'Export by Transport' + iv_act = |{ zif_abapgit_definitions=>c_action-zip_export_transport }?key={ mv_key }| ). + ELSE. + ro_advanced_dropdown->add( iv_txt = 'Stage by Transport' + iv_act = |{ zif_abapgit_definitions=>c_action-go_stage_transport }?key={ mv_key }| ). ENDIF. - ro_advanced_dropdown->add( iv_txt = 'Syntax Check' iv_act = |{ zif_abapgit_definitions=>c_action-repo_syntax_check }?key={ mv_key }| ). ro_advanced_dropdown->add( iv_txt = 'Run Code Inspector' @@ -313,21 +320,21 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. iv_act = |{ zif_abapgit_definitions=>c_action-repo_open_in_master_lang }?key={ mv_key }| ). ENDIF. - ro_advanced_dropdown->add( iv_txt = 'Remove' + ro_advanced_dropdown->add( iv_txt = 'Remove' iv_title = `Remove abapGit's records of the repository (the system's ` - && `development objects will remain unaffected)` - iv_act = |{ zif_abapgit_definitions=>c_action-repo_remove }?key={ mv_key }| ). + && `development objects will remain unaffected)` + iv_act = |{ zif_abapgit_definitions=>c_action-repo_remove }?key={ mv_key }| ). CLEAR lv_crossout. IF mo_repo->get_local_settings( )-write_protected = abap_true OR zcl_abapgit_auth=>is_allowed( zif_abapgit_auth=>c_authorization-uninstall ) = abap_false. lv_crossout = zif_abapgit_html=>c_html_opt-crossout. ENDIF. - ro_advanced_dropdown->add( iv_txt = 'Uninstall' + ro_advanced_dropdown->add( iv_txt = 'Uninstall' iv_title = `Delete all development objects belonging to this package ` - && `(and subpackages) from the system` - iv_act = |{ zif_abapgit_definitions=>c_action-repo_purge }?key={ mv_key }| - iv_opt = lv_crossout ). + && `(and subpackages) from the system` + iv_act = |{ zif_abapgit_definitions=>c_action-repo_purge }?key={ mv_key }| + iv_opt = lv_crossout ). ENDMETHOD. @@ -432,10 +439,10 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. ro_menu->add( iv_txt = zcl_abapgit_gui_buttons=>repo_list( ) iv_act = zif_abapgit_definitions=>c_action-abapgit_home - )->add( - iv_txt = zcl_abapgit_gui_buttons=>help( ) - iv_title = 'Help' - io_sub = zcl_abapgit_gui_chunk_lib=>help_submenu( ) ). + )->add( + iv_txt = zcl_abapgit_gui_buttons=>help( ) + iv_title = 'Help' + io_sub = zcl_abapgit_gui_chunk_lib=>help_submenu( ) ). ENDMETHOD. @@ -563,9 +570,9 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. CREATE OBJECT ro_toolbar. ro_toolbar->add( - iv_txt = 'Changes First' - iv_chk = mv_diff_first - iv_act = c_actions-toggle_diff_first ). + iv_txt = 'Changes First' + iv_chk = mv_diff_first + iv_act = c_actions-toggle_diff_first ). ro_toolbar->add( iv_txt = 'Changes Only' @@ -1244,7 +1251,7 @@ CLASS zcl_abapgit_gui_page_repo_view IMPLEMENTATION. WHEN c_actions-change_dir. " Change dir lv_path = ii_event->query( )->get( 'PATH' ). - mv_cur_dir = zcl_abapgit_path=>change_dir( + mv_cur_dir = zcl_abapgit_path=>change_dir( iv_cur_dir = mv_cur_dir iv_cd = lv_path ). rs_handled-state = zcl_abapgit_gui=>c_event_state-re_render. diff --git a/src/ui/zcl_abapgit_gui_page_stage.clas.abap b/src/ui/zcl_abapgit_gui_page_stage.clas.abap index 4c416cd11..3ba107e9a 100644 --- a/src/ui/zcl_abapgit_gui_page_stage.clas.abap +++ b/src/ui/zcl_abapgit_gui_page_stage.clas.abap @@ -15,9 +15,10 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION METHODS constructor IMPORTING - io_repo TYPE REF TO zcl_abapgit_repo_online - iv_seed TYPE string OPTIONAL + io_repo TYPE REF TO zcl_abapgit_repo_online + iv_seed TYPE string OPTIONAL iv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result DEFAULT zif_abapgit_definitions=>c_sci_result-no_run + ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RAISING zcx_abapgit_exception. @@ -42,6 +43,7 @@ CLASS zcl_abapgit_gui_page_stage DEFINITION DATA mv_seed TYPE string . " Unique page id to bind JS sessionStorage DATA mv_filter_value TYPE string . DATA mv_sci_result TYPE zif_abapgit_definitions=>ty_sci_result. + DATA mi_obj_filter TYPE REF TO zif_abapgit_object_filter. METHODS check_selected IMPORTING @@ -197,6 +199,7 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. mo_repo = io_repo. mv_seed = iv_seed. mv_sci_result = iv_sci_result. + mi_obj_filter = ii_obj_filter. IF mv_seed IS INITIAL. " Generate based on time unless obtained from diff page GET TIME STAMP FIELD lv_ts. @@ -361,7 +364,9 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. METHOD init_files. - ms_files = zcl_abapgit_factory=>get_stage_logic( )->get( mo_repo ). + ms_files = zcl_abapgit_factory=>get_stage_logic( )->get( io_repo = mo_repo + ii_obj_filter = mi_obj_filter ). + IF lines( ms_files-local ) = 0 AND lines( ms_files-remote ) = 0. zcx_abapgit_exception=>raise( 'There are no changes that could be staged' ). ENDIF. @@ -549,7 +554,7 @@ CLASS zcl_abapgit_gui_page_stage IMPLEMENTATION. READ TABLE lt_changed_by INTO ls_changed_by WITH KEY item = -item. "#EC CI_SUBRC READ TABLE lt_transports INTO ls_transport WITH KEY obj_type = -item-obj_type - obj_name = -item-obj_name. "#EC CI_SUBRC + obj_name = -item-obj_name. "#EC CI_SUBRC READ TABLE ms_files-status ASSIGNING WITH TABLE KEY path = -file-path diff --git a/src/ui/zcl_abapgit_gui_router.clas.abap b/src/ui/zcl_abapgit_gui_router.clas.abap index 0c1ccedcf..ac02fbc16 100644 --- a/src/ui/zcl_abapgit_gui_router.clas.abap +++ b/src/ui/zcl_abapgit_gui_router.clas.abap @@ -89,6 +89,7 @@ CLASS zcl_abapgit_gui_router DEFINITION METHODS get_page_stage IMPORTING !ii_event TYPE REF TO zif_abapgit_gui_event + ii_obj_filter TYPE REF TO zif_abapgit_object_filter OPTIONAL RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING @@ -125,7 +126,7 @@ CLASS zcl_abapgit_gui_router DEFINITION VALUE(rv_state) TYPE i . METHODS main_page RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable - RAISING zcx_abapgit_exception. + RAISING zcx_abapgit_exception. ENDCLASS. @@ -204,8 +205,11 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. METHOD general_page_routing. - DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key, - lv_last_repo_key TYPE zif_abapgit_persistence=>ty_repo-key. + DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key, + lv_last_repo_key TYPE zif_abapgit_persistence=>ty_repo-key, + lo_obj_filter_trans TYPE REF TO zcl_abapgit_object_filter_tran, + lo_repo TYPE REF TO zcl_abapgit_repo, + lt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt. lv_key = ii_event->query( )->get( 'KEY' ). @@ -244,6 +248,19 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. WHEN zif_abapgit_definitions=>c_action-go_stage. " Go Staging page rs_handled-page = get_page_stage( ii_event ). rs_handled-state = get_state_diff( ii_event ). + WHEN zif_abapgit_definitions=>c_action-go_stage_transport. " Go Staging page by Transport + + lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ). + + lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ). + + CREATE OBJECT lo_obj_filter_trans. + lo_obj_filter_trans->set_filter_values( iv_package = lo_repo->get_package( ) + it_r_trkorr = lt_r_trkorr ). + + rs_handled-page = get_page_stage( ii_event = ii_event + ii_obj_filter = lo_obj_filter_trans ). + rs_handled-state = get_state_diff( ii_event ). WHEN zif_abapgit_definitions=>c_action-go_branch_overview. " Go repo branch overview rs_handled-page = get_page_branch_overview( lv_key ). rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page. @@ -362,9 +379,11 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. lo_repo->refresh( ). CREATE OBJECT lo_stage_page EXPORTING - io_repo = lo_repo - iv_seed = lv_seed - iv_sci_result = zif_abapgit_definitions=>c_sci_result-passed. + io_repo = lo_repo + iv_seed = lv_seed + iv_sci_result = zif_abapgit_definitions=>c_sci_result-passed + ii_obj_filter = ii_obj_filter. + ri_page = lo_stage_page. ELSE. ri_page = lo_code_inspector_page. @@ -389,8 +408,9 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. CREATE OBJECT lo_stage_page EXPORTING - io_repo = lo_repo - iv_seed = lv_seed. + io_repo = lo_repo + iv_seed = lv_seed + ii_obj_filter = ii_obj_filter. ri_page = lo_stage_page. @@ -724,15 +744,17 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. METHOD zip_services. - DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key, - lo_repo TYPE REF TO zcl_abapgit_repo, - lv_path TYPE string, - lv_dest TYPE rfcdest, - lv_msg TYPE c LENGTH 200, - lv_xstr TYPE xstring, - lv_package TYPE zif_abapgit_persistence=>ty_repo-package, - lv_folder_logic TYPE string, - lv_main_lang_only TYPE zif_abapgit_persistence=>ty_local_settings-main_language_only. + DATA: lv_key TYPE zif_abapgit_persistence=>ty_repo-key, + lo_repo TYPE REF TO zcl_abapgit_repo, + lv_path TYPE string, + lv_dest TYPE rfcdest, + lv_msg TYPE c LENGTH 200, + lv_xstr TYPE xstring, + lv_package TYPE zif_abapgit_persistence=>ty_repo-package, + lv_folder_logic TYPE string, + lv_main_lang_only TYPE zif_abapgit_persistence=>ty_local_settings-main_language_only, + lo_obj_filter_trans TYPE REF TO zcl_abapgit_object_filter_tran, + lt_r_trkorr TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt. CONSTANTS: BEGIN OF lc_page, @@ -803,6 +825,20 @@ CLASS zcl_abapgit_gui_router IMPLEMENTATION. file_download( iv_package = lo_repo->get_package( ) iv_xstr = lv_xstr ). rs_handled-state = zcl_abapgit_gui=>c_event_state-no_more_act. + WHEN zif_abapgit_definitions=>c_action-zip_export_transport. " Export repo as ZIP + + lt_r_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_select_wb_tc_tr_and_tsk( ). + lo_repo = zcl_abapgit_repo_srv=>get_instance( )->get( lv_key ). + lo_repo->refresh( ). + CREATE OBJECT lo_obj_filter_trans. + lo_obj_filter_trans->set_filter_values( iv_package = lo_repo->get_package( ) + it_r_trkorr = lt_r_trkorr ). + + lv_xstr = zcl_abapgit_zip=>encode_files( lo_repo->get_files_local( ii_obj_filter = lo_obj_filter_trans ) ). + lo_repo->refresh( ). + file_download( iv_package = lo_repo->get_package( ) + 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 rs_handled-page = zcl_abapgit_gui_page_ex_pckage=>create( ). rs_handled-state = zcl_abapgit_gui=>c_event_state-new_page. diff --git a/src/ui/zcl_abapgit_html_form_utils.clas.testclasses.abap b/src/ui/zcl_abapgit_html_form_utils.clas.testclasses.abap index 9d5c4338c..a1a01b6da 100644 --- a/src/ui/zcl_abapgit_html_form_utils.clas.testclasses.abap +++ b/src/ui/zcl_abapgit_html_form_utils.clas.testclasses.abap @@ -91,6 +91,12 @@ CLASS ltcl_popups_mock IMPLEMENTATION. mv_user_decision = iv_user_decision. ENDMETHOD. + METHOD zif_abapgit_popups~popup_select_tr_requests. + ENDMETHOD. + + METHOD zif_abapgit_popups~popup_select_wb_tc_tr_and_tsk. + ENDMETHOD. + ENDCLASS. CLASS ltcl_test_form DEFINITION diff --git a/src/ui/zcl_abapgit_html_toolbar.clas.abap b/src/ui/zcl_abapgit_html_toolbar.clas.abap index 3a5447357..01277aa02 100644 --- a/src/ui/zcl_abapgit_html_toolbar.clas.abap +++ b/src/ui/zcl_abapgit_html_toolbar.clas.abap @@ -20,6 +20,8 @@ CLASS zcl_abapgit_html_toolbar DEFINITION !iv_aux TYPE string OPTIONAL !iv_id TYPE string OPTIONAL !iv_title TYPE string OPTIONAL + !iv_class TYPE string OPTIONAL + !iv_li_class TYPE string OPTIONAL RETURNING VALUE(ro_self) TYPE REF TO zcl_abapgit_html_toolbar . METHODS count @@ -45,17 +47,19 @@ CLASS zcl_abapgit_html_toolbar DEFINITION TYPES: BEGIN OF ty_item, - txt TYPE string, - act TYPE string, - ico TYPE string, - sub TYPE REF TO zcl_abapgit_html_toolbar, - opt TYPE c LENGTH 1, - typ TYPE c LENGTH 1, - cur TYPE abap_bool, - chk TYPE abap_bool, - aux TYPE string, - id TYPE string, - title TYPE string, + txt TYPE string, + act TYPE string, + ico TYPE string, + sub TYPE REF TO zcl_abapgit_html_toolbar, + opt TYPE c LENGTH 1, + typ TYPE c LENGTH 1, + cur TYPE abap_bool, + chk TYPE abap_bool, + aux TYPE string, + id TYPE string, + title TYPE string, + class TYPE string, + li_class TYPE string, END OF ty_item . TYPES: ty_items TYPE STANDARD TABLE OF ty_item . @@ -72,7 +76,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_HTML_TOOLBAR IMPLEMENTATION. +CLASS zcl_abapgit_html_toolbar IMPLEMENTATION. METHOD add. @@ -97,6 +101,8 @@ CLASS ZCL_ABAPGIT_HTML_TOOLBAR IMPLEMENTATION. ls_item-aux = iv_aux. ls_item-id = iv_id. ls_item-title = iv_title. + ls_item-class = iv_class. + ls_item-li_class = iv_li_class. APPEND ls_item TO mt_items. @@ -162,12 +168,13 @@ CLASS ZCL_ABAPGIT_HTML_TOOLBAR IMPLEMENTATION. METHOD render_items. - DATA: lv_class TYPE string, - lv_icon TYPE string, - lv_id TYPE string, - lv_check TYPE string, - lv_aux TYPE string, - lv_has_icons TYPE abap_bool. + DATA: lv_class TYPE string, + lv_class_value TYPE string, + lv_icon TYPE string, + lv_id TYPE string, + lv_check TYPE string, + lv_aux TYPE string, + lv_has_icons TYPE abap_bool. FIELD-SYMBOLS LIKE LINE OF mt_items. @@ -193,7 +200,7 @@ CLASS ZCL_ABAPGIT_HTML_TOOLBAR IMPLEMENTATION. " Render items LOOP AT mt_items ASSIGNING . - CLEAR: lv_class, lv_icon. + CLEAR: lv_class, lv_class_value, lv_icon. IF -typ = zif_abapgit_html=>c_action_type-separator. ri_html->add( |
  • { -txt }
  • | ). @@ -212,29 +219,41 @@ CLASS ZCL_ABAPGIT_HTML_TOOLBAR IMPLEMENTATION. ENDIF. ENDIF. - IF -cur = abap_true. - lv_class = ' class="current-menu-item"'. - ENDIF. + IF -cur = abap_true. + IF -li_class IS INITIAL. + lv_class_value = 'current-menu-item'. + ELSE. + lv_class_value = |current-menu-item { -li_class }|. + ENDIF. + ELSE. + lv_class_value = -li_class. + ENDIF. + IF lv_class_value IS NOT INITIAL. + lv_class = | class="{ lv_class_value }"|. + ENDIF. IF -aux IS NOT INITIAL. lv_aux = | data-aux="{ -aux }"|. ENDIF. ri_html->add( || ). + IF -sub IS INITIAL. ri_html->add_a( iv_txt = lv_icon && -txt iv_typ = -typ iv_act = -act iv_id = -id iv_opt = -opt - iv_title = -title ). + iv_title = -title + iv_class = -class ). ELSE. ri_html->add_a( iv_txt = lv_icon && -txt iv_typ = zif_abapgit_html=>c_action_type-dummy iv_act = '' iv_id = -id iv_opt = -opt - iv_title = -title ). + iv_title = -title + iv_class = -class ). ri_html->add( -sub->render_items( iv_sort ) ). ENDIF. ri_html->add( '' ). diff --git a/src/ui/zcl_abapgit_popups.clas.abap b/src/ui/zcl_abapgit_popups.clas.abap index 8ffd2b221..5928e9bb8 100644 --- a/src/ui/zcl_abapgit_popups.clas.abap +++ b/src/ui/zcl_abapgit_popups.clas.abap @@ -45,16 +45,16 @@ CLASS zcl_abapgit_popups DEFINITION EXPORTING !et_list TYPE INDEX TABLE . METHODS on_select_list_link_click - FOR EVENT link_click OF cl_salv_events_table + FOR EVENT link_click OF cl_salv_events_table IMPORTING !row !column . METHODS on_select_list_function_click - FOR EVENT added_function OF cl_salv_events_table + FOR EVENT added_function OF cl_salv_events_table IMPORTING !e_salv_function . METHODS on_double_click - FOR EVENT double_click OF cl_salv_events_table + FOR EVENT double_click OF cl_salv_events_table IMPORTING !row !column . @@ -797,18 +797,18 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. iv_fieldname = 'LINE' iv_fieldtext = 'Branch name' iv_value = lv_transports_as_text - CHANGING ct_fields = lt_fields ). + CHANGING ct_fields = lt_fields ). add_field( EXPORTING iv_tabname = 'ABAPTXT255' iv_fieldname = 'LINE' iv_fieldtext = 'Commit text' iv_value = lv_desc_as_text - CHANGING ct_fields = lt_fields ). + CHANGING ct_fields = lt_fields ). - _popup_3_get_values( EXPORTING iv_popup_title = 'Transport to new Branch' - IMPORTING ev_value_1 = lv_branch_name - ev_value_2 = lv_commit_text - CHANGING ct_fields = lt_fields ). + _popup_3_get_values( EXPORTING iv_popup_title = 'Transport to new Branch' + IMPORTING ev_value_1 = lv_branch_name + ev_value_2 = lv_commit_text + CHANGING ct_fields = lt_fields ). rs_transport_branch-branch_name = lv_branch_name. rs_transport_branch-commit_text = lv_commit_text. @@ -842,7 +842,7 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. TRY. cl_salv_table=>factory( IMPORTING r_salv_table = mo_select_list_popup - CHANGING t_table = ). + CHANGING t_table = ). CASE iv_selection_mode. WHEN if_salv_c_selection_mode=>single. @@ -854,7 +854,7 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. ENDCASE. mo_select_list_popup->set_screen_status( pfstatus = lv_pfstatus - report = 'SAPMSVIM' ). + report = 'SAPMSVIM' ). mo_select_list_popup->set_screen_popup( start_column = ms_start_pos-col end_column = ms_start_pos-col + iv_end_column - iv_start_column @@ -1046,4 +1046,59 @@ CLASS zcl_abapgit_popups IMPLEMENTATION. ENDIF. ENDMETHOD. + METHOD zif_abapgit_popups~popup_select_tr_requests. + DATA ls_r_trkorr TYPE LINE OF zif_abapgit_definitions=>ty_trrngtrkor_tt. + DATA lr_request TYPE REF TO trwbo_request_header. + DATA lt_request TYPE trwbo_request_headers. + + CALL FUNCTION 'TRINT_SELECT_REQUESTS' + EXPORTING + iv_username_pattern = iv_username_pattern + is_selection = is_selection + iv_complete_projects = abap_false + iv_via_selscreen = 'X' + iv_title = iv_title + IMPORTING + et_requests = lt_request + EXCEPTIONS + action_aborted_by_user = 1 + OTHERS = 2. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Selection Canceled' ). + ENDIF. + + IF lt_request IS INITIAL. + zcx_abapgit_exception=>raise( 'No Request Found' ). + ENDIF. + + LOOP AT lt_request REFERENCE INTO lr_request. + ls_r_trkorr-sign = 'I'. + ls_r_trkorr-option = 'EQ'. + ls_r_trkorr-low = lr_request->trkorr. + INSERT ls_r_trkorr INTO TABLE rt_r_trkorr. + ENDLOOP. + + ENDMETHOD. + + METHOD zif_abapgit_popups~popup_select_wb_tc_tr_and_tsk. + DATA ls_selection TYPE trwbo_selection. + DATA lv_title TYPE trwbo_title. + + ls_selection-trkorrpattern = space. + ls_selection-connect_req_task_conditions = 'X'. + ls_selection-reqfunctions = 'KTRXS'. + ls_selection-reqstatus = 'RNODL'. + ls_selection-taskstatus = 'RNODL'. + CONDENSE ls_selection-reqfunctions NO-GAPS. + ls_selection-taskfunctions = 'QRSX'. + CONCATENATE sy-sysid '*' INTO ls_selection-trkorrpattern. + + lv_title = 'Select Transports / Tasks'. + + rt_r_trkorr = zif_abapgit_popups~popup_select_tr_requests( + is_selection = ls_selection + iv_title = lv_title + iv_username_pattern = '*' ). + ENDMETHOD. + ENDCLASS. diff --git a/src/ui/zcl_abapgit_services_basis.clas.testclasses.abap b/src/ui/zcl_abapgit_services_basis.clas.testclasses.abap index ca15e1e46..41dfb76ab 100644 --- a/src/ui/zcl_abapgit_services_basis.clas.testclasses.abap +++ b/src/ui/zcl_abapgit_services_basis.clas.testclasses.abap @@ -407,4 +407,12 @@ CLASS ltcl_popups_mock IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_popups~popup_select_tr_requests. + + ENDMETHOD. + + METHOD zif_abapgit_popups~popup_select_wb_tc_tr_and_tsk. + + ENDMETHOD. + ENDCLASS. diff --git a/src/ui/zcl_abapgit_ui_injector.clas.testclasses.abap b/src/ui/zcl_abapgit_ui_injector.clas.testclasses.abap index 53734c148..94f60a040 100644 --- a/src/ui/zcl_abapgit_ui_injector.clas.testclasses.abap +++ b/src/ui/zcl_abapgit_ui_injector.clas.testclasses.abap @@ -76,6 +76,14 @@ CLASS ltcl_abapgit_popups_mock IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_popups~popup_select_tr_requests. + + ENDMETHOD. + + METHOD zif_abapgit_popups~popup_select_wb_tc_tr_and_tsk. + + ENDMETHOD. + ENDCLASS. CLASS ltcl_no_dependency_injection IMPLEMENTATION. diff --git a/src/ui/zif_abapgit_popups.intf.abap b/src/ui/zif_abapgit_popups.intf.abap index 4e7d65881..34ef22019 100644 --- a/src/ui/zif_abapgit_popups.intf.abap +++ b/src/ui/zif_abapgit_popups.intf.abap @@ -109,4 +109,13 @@ INTERFACE zif_abapgit_popups VALUE(rs_pull) TYPE zif_abapgit_pr_enum_provider=>ty_pull_request RAISING zcx_abapgit_exception . + METHODS popup_select_tr_requests + IMPORTING is_selection TYPE trwbo_selection + iv_title TYPE trwbo_title + iv_username_pattern TYPE any DEFAULT sy-uname + RETURNING VALUE(rt_r_trkorr) TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt + RAISING zcx_abapgit_exception. + METHODS popup_select_wb_tc_tr_and_tsk + RETURNING VALUE(rt_r_trkorr) TYPE zif_abapgit_definitions=>ty_trrngtrkor_tt + RAISING zcx_abapgit_exception. ENDINTERFACE. diff --git a/src/zif_abapgit_definitions.intf.abap b/src/zif_abapgit_definitions.intf.abap index debb7af3f..716e1a4e4 100644 --- a/src/zif_abapgit_definitions.intf.abap +++ b/src/zif_abapgit_definitions.intf.abap @@ -448,6 +448,7 @@ INTERFACE zif_abapgit_definitions abapgit_home TYPE string VALUE 'abapgit_home', zip_import TYPE string VALUE 'zip_import', zip_export TYPE string VALUE 'zip_export', + zip_export_transport TYPE string VALUE 'zip_export_transport', zip_package TYPE string VALUE 'zip_package', zip_transport TYPE string VALUE 'zip_transport', zip_object TYPE string VALUE 'zip_object', @@ -475,6 +476,7 @@ INTERFACE zif_abapgit_definitions go_repo_diff TYPE string VALUE 'go_repo_diff', go_file_diff TYPE string VALUE 'go_fill_diff', go_stage TYPE string VALUE 'go_stage', + go_stage_transport TYPE string VALUE 'go_stage_transport', go_commit TYPE string VALUE 'go_commit', go_branch_overview TYPE string VALUE 'go_branch_overview', go_tag_overview TYPE string VALUE 'go_tag_overview', @@ -531,5 +533,5 @@ INTERFACE zif_abapgit_definitions main_language_only TYPE abap_bool, translation_languages TYPE ty_languages, END OF ty_i18n_params . - + TYPES ty_trrngtrkor_tt TYPE RANGE OF trkorr. ENDINTERFACE.