diff --git a/src/ui/lib/zcl_abapgit_html_form.clas.abap b/src/ui/lib/zcl_abapgit_html_form.clas.abap index 06dc26cd5..82a7ef7f5 100644 --- a/src/ui/lib/zcl_abapgit_html_form.clas.abap +++ b/src/ui/lib/zcl_abapgit_html_form.clas.abap @@ -137,6 +137,7 @@ CLASS zcl_abapgit_html_form DEFINITION autofocus TYPE string, END OF ty_attr . + DATA mv_webgui TYPE abap_bool. DATA mt_fields TYPE zif_abapgit_html_form=>ty_fields . DATA: mt_commands TYPE STANDARD TABLE OF zif_abapgit_html_form=>ty_command . @@ -180,6 +181,10 @@ CLASS zcl_abapgit_html_form DEFINITION IMPORTING !ii_html TYPE REF TO zif_abapgit_html !is_cmd TYPE zif_abapgit_html_form=>ty_command . + METHODS render_command_link + IMPORTING + !ii_html TYPE REF TO zif_abapgit_html + !is_cmd TYPE zif_abapgit_html_form=>ty_command . METHODS render_field_hidden IMPORTING !ii_html TYPE REF TO zif_abapgit_html @@ -189,7 +194,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_HTML_FORM IMPLEMENTATION. +CLASS zcl_abapgit_html_form IMPLEMENTATION. METHOD checkbox. @@ -262,6 +267,8 @@ CLASS ZCL_ABAPGIT_HTML_FORM IMPLEMENTATION. ro_form->mv_form_id = |form_{ lv_ts }|. ENDIF. + ro_form->mv_webgui = zcl_abapgit_ui_factory=>get_frontend_services( )->is_webgui( ). + ENDMETHOD. @@ -451,13 +458,20 @@ CLASS ZCL_ABAPGIT_HTML_FORM IMPLEMENTATION. METHOD render_command. + " HTML GUI supports only links for submitting forms + IF mv_webgui = abap_true. + render_command_link( + is_cmd = is_cmd + ii_html = ii_html ). + RETURN. + ENDIF. + CASE is_cmd-cmd_type. WHEN zif_abapgit_html_form=>c_cmd_type-link. - ii_html->add_a( - iv_txt = is_cmd-label - iv_act = is_cmd-action - iv_class = 'dialog-commands' ). + render_command_link( + is_cmd = is_cmd + ii_html = ii_html ). WHEN zif_abapgit_html_form=>c_cmd_type-button. @@ -480,6 +494,22 @@ CLASS ZCL_ABAPGIT_HTML_FORM IMPLEMENTATION. ENDMETHOD. + METHOD render_command_link. + + DATA lv_class TYPE string VALUE 'dialog-commands'. + + IF is_cmd-cmd_type = zif_abapgit_html_form=>c_cmd_type-input_main. + lv_class = lv_class && ' main'. + ENDIF. + + ii_html->add_a( + iv_txt = is_cmd-label + iv_act = is_cmd-action + iv_class = lv_class ). + + ENDMETHOD. + + METHOD render_field. DATA: diff --git a/src/ui/lib/zcl_abapgit_html_form_utils.clas.testclasses.abap b/src/ui/lib/zcl_abapgit_html_form_utils.clas.testclasses.abap index f56401690..1f322ad42 100644 --- a/src/ui/lib/zcl_abapgit_html_form_utils.clas.testclasses.abap +++ b/src/ui/lib/zcl_abapgit_html_form_utils.clas.testclasses.abap @@ -105,6 +105,57 @@ CLASS ltcl_popups_mock IMPLEMENTATION. ENDCLASS. +CLASS ltcl_sapgui_mock DEFINITION FINAL FOR TESTING + DURATION SHORT + RISK LEVEL HARMLESS. + + PUBLIC SECTION. + + INTERFACES: + zif_abapgit_frontend_services. + +ENDCLASS. + +CLASS ltcl_sapgui_mock IMPLEMENTATION. + + METHOD zif_abapgit_frontend_services~clipboard_export. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~directory_browse. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~directory_create. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~directory_exist. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~execute. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~file_download. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~file_upload. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~get_file_separator. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~get_gui_version. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~get_system_directory. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~gui_is_available. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~is_sapgui_for_java. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~is_sapgui_for_windows. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~is_webgui. + rv_is_webgui = abap_false. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~open_ie_devtools. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~show_file_open_dialog. + ENDMETHOD. + METHOD zif_abapgit_frontend_services~show_file_save_dialog. + ENDMETHOD. + +ENDCLASS. + CLASS ltcl_test_form DEFINITION FOR TESTING RISK LEVEL HARMLESS @@ -113,7 +164,8 @@ CLASS ltcl_test_form DEFINITION PRIVATE SECTION. DATA: - mo_popups_mock TYPE REF TO ltcl_popups_mock. + mo_popups_mock TYPE REF TO ltcl_popups_mock, + mo_sapgui_mock TYPE REF TO ltcl_sapgui_mock. METHODS setup. METHODS validate1 FOR TESTING RAISING zcx_abapgit_exception. @@ -134,6 +186,9 @@ CLASS ltcl_test_form IMPLEMENTATION. CREATE OBJECT mo_popups_mock TYPE ltcl_popups_mock. zcl_abapgit_ui_injector=>set_popups( mo_popups_mock ). + CREATE OBJECT mo_sapgui_mock TYPE ltcl_sapgui_mock. + zcl_abapgit_ui_injector=>set_frontend_services( mo_sapgui_mock ). + ENDMETHOD. METHOD validate1. diff --git a/src/ui/zabapgit_css_common.w3mi.data.css b/src/ui/zabapgit_css_common.w3mi.data.css index 189156ed1..de06df247 100644 --- a/src/ui/zabapgit_css_common.w3mi.data.css +++ b/src/ui/zabapgit_css_common.w3mi.data.css @@ -1323,7 +1323,6 @@ table.unit_tests { text-decoration: none; padding: 6px 12px; border-radius: 3px; - font-size: smaller; } .dialog li.dialog-commands input[type="button"], .dialog li.dialog-commands input[type="submit"] { @@ -1332,6 +1331,7 @@ table.unit_tests { border-radius: 3px; cursor: pointer; } +.dialog li.dialog-commands a.main, .dialog li.dialog-commands input[type="submit"].main { border: 1px solid transparent; } diff --git a/src/ui/zabapgit_css_theme_dark.w3mi.data.css b/src/ui/zabapgit_css_theme_dark.w3mi.data.css index 97a82c4ee..e6e867b36 100644 --- a/src/ui/zabapgit_css_theme_dark.w3mi.data.css +++ b/src/ui/zabapgit_css_theme_dark.w3mi.data.css @@ -209,15 +209,13 @@ div.log { color: var(--theme-greyscale-dark); } color: var(--theme-primary-font-color-reduced); background-color: var(--theme-container-background-color); } -.dialog li.dialog-commands a { - border-color: #ccc; - background-color: var(--theme-greyscale-dark); -} +.dialog li.dialog-commands a, .dialog li.dialog-commands input[type="submit"] { border-color: #ccc; background-color: var(--theme-greyscale-dark); color: #fff; } +.dialog li.dialog-commands a.main, .dialog li.dialog-commands input[type="submit"].main { background-color: #64a8ff; color: #fff; diff --git a/src/ui/zabapgit_css_theme_default.w3mi.data.css b/src/ui/zabapgit_css_theme_default.w3mi.data.css index 29018216f..3e90bf48c 100644 --- a/src/ui/zabapgit_css_theme_default.w3mi.data.css +++ b/src/ui/zabapgit_css_theme_default.w3mi.data.css @@ -459,14 +459,13 @@ table.settings_tab input:focus { border-color: #ccc; background-color: #f0f0f0; } -.dialog li.dialog-commands a { - border-color: #ccc; - background-color: #ddd; -} +.dialog li.dialog-commands a, .dialog li.dialog-commands input[type="submit"] { border-color: #ccc; background-color: #ddd; + color: #000; } +.dialog li.dialog-commands a.main, .dialog li.dialog-commands input[type="submit"].main { background-color: #64a8ff; color: #fff;