diff --git a/src/zabapgit_css_common.w3mi.data.css b/src/zabapgit_css_common.w3mi.data.css index 924b1d664..26a3de560 100644 --- a/src/zabapgit_css_common.w3mi.data.css +++ b/src/zabapgit_css_common.w3mi.data.css @@ -33,15 +33,21 @@ form input:focus, textarea:focus { border: 1px solid #8cadd9; } -/* MODIFIERS */ +/* COLOR PALETTE */ .grey { color: lightgrey !important; } -.emphasis { font-weight: bold !important; } .attention { color: red !important; } +.blue { color: #5e8dc9; !important; } +.red { color: red !important; } + +/* MODIFIERS */ +.emphasis { font-weight: bold !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; } +.w100 { width: 100%; } +.w40 { width: 40%; } /* STRUCTURE DIVS, HEADER & FOOTER */ td.headpad { padding-top: 11px; } @@ -172,6 +178,7 @@ div.menu_vertical a { .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 td.text { width: 100%; } .dropdown_content a:hover { background-color: #f1f1f1 } .dropdown:hover .dropbtn { color: #79a0d2; } @@ -248,11 +255,12 @@ div.repo { div.repo_container { position: relative; } -.repo_tab { +table.repo_tab { border: 1px solid #DDD; border-radius: 3px; background: #fff; margin-top: 0.5em; + width: 100%; } .repo_tab td { border-top: 1px solid #eee; @@ -463,6 +471,7 @@ div.diff_head span.state-block span.none { table.diff_tab { font-family: Consolas, Courier, monospace; font-size: 10pt; + width: 100%; } table.diff_tab td,th { color: #444; diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 925053ea8..e8612e1b6 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -159,7 +159,7 @@ CONSTANTS: BEGIN OF gc_event_state, END OF gc_event_state. CONSTANTS: BEGIN OF gc_html_opt, - emphas TYPE c VALUE 'E', + strong TYPE c VALUE 'E', cancel TYPE c VALUE 'C', crossout TYPE c VALUE 'X', END OF gc_html_opt. diff --git a/src/zabapgit_gui_pages.prog.abap b/src/zabapgit_gui_pages.prog.abap index 910211fd0..2d5b77f67 100644 --- a/src/zabapgit_gui_pages.prog.abap +++ b/src/zabapgit_gui_pages.prog.abap @@ -4,17 +4,18 @@ * All UI pages -* Super class +* Super class & common html chunks +INCLUDE zabapgit_html_chunks. INCLUDE zabapgit_page. * Utils and helpers INCLUDE zabapgit_html_action_utils. INCLUDE zabapgit_repo_browser_util. +INCLUDE zabapgit_syntax_highlighter. * Components and templates INCLUDE zabapgit_view_repo. INCLUDE zabapgit_view_tutorial. -INCLUDE zabapgit_syntax_highlighter. * Pages INCLUDE zabapgit_page_commit. diff --git a/src/zabapgit_html.prog.abap b/src/zabapgit_html.prog.abap index 96009519e..5b0f065a5 100644 --- a/src/zabapgit_html.prog.abap +++ b/src/zabapgit_html.prog.abap @@ -7,9 +7,9 @@ DEFINE _add. END-OF-DEFINITION. *----------------------------------------------------------------------* -* CLASS lcl_html_helper DEFINITION +* CLASS lcl_html DEFINITION *----------------------------------------------------------------------* -CLASS lcl_html_helper DEFINITION FINAL. +CLASS lcl_html DEFINITION FINAL. PUBLIC SECTION. CONSTANTS: c_indent_size TYPE i VALUE 2. @@ -21,27 +21,49 @@ CLASS lcl_html_helper DEFINITION FINAL. METHODS add IMPORTING iv_chunk TYPE any. METHODS reset. - METHODS add_anchor IMPORTING iv_txt TYPE string - iv_act TYPE string - iv_opt TYPE clike OPTIONAL - iv_typ TYPE char1 DEFAULT gc_action_type-sapevent + METHODS add_a IMPORTING iv_txt TYPE string + iv_act TYPE string + iv_typ TYPE char1 DEFAULT gc_action_type-sapevent + iv_opt TYPE clike OPTIONAL + iv_class TYPE string OPTIONAL + iv_id TYPE string OPTIONAL + iv_style TYPE string OPTIONAL. + + METHODS add_icon IMPORTING iv_name TYPE string + iv_hint TYPE string OPTIONAL + iv_alt TYPE string OPTIONAL + iv_class TYPE string OPTIONAL. + + CLASS-METHODS a IMPORTING iv_txt TYPE string + iv_act TYPE string + iv_typ TYPE char1 DEFAULT gc_action_type-sapevent + iv_opt TYPE clike OPTIONAL + iv_class TYPE string OPTIONAL + iv_id TYPE string OPTIONAL + iv_style TYPE string OPTIONAL + RETURNING VALUE(rv_str) TYPE string. + + CLASS-METHODS icon IMPORTING iv_name TYPE string + iv_hint TYPE string OPTIONAL + iv_alt TYPE string OPTIONAL iv_class TYPE string OPTIONAL - iv_id TYPE string OPTIONAL - iv_style TYPE string OPTIONAL. + RETURNING VALUE(rv_str) TYPE string. PRIVATE SECTION. METHODS _add_str IMPORTING iv_str TYPE csequence. - METHODS _add_htm IMPORTING io_html TYPE REF TO lcl_html_helper. + METHODS _add_htm IMPORTING io_html TYPE REF TO lcl_html. -ENDCLASS. "lcl_html_helper DEFINITION +ENDCLASS. "lcl_html DEFINITION *----------------------------------------------------------------------* -* CLASS lcl_html_helper IMPLEMENTATION +* CLASS lcl_html IMPLEMENTATION *----------------------------------------------------------------------* -CLASS lcl_html_helper IMPLEMENTATION. +CLASS lcl_html IMPLEMENTATION. + METHOD add. + DATA lo_type TYPE REF TO cl_abap_typedescr. - DATA lo_html TYPE REF TO lcl_html_helper. + DATA lo_html TYPE REF TO lcl_html. lo_type = cl_abap_typedescr=>describe_by_data( iv_chunk ). @@ -71,6 +93,7 @@ CLASS lcl_html_helper IMPLEMENTATION. ENDMETHOD. "reset METHOD _add_str. + CONSTANTS lc_single_tags_re TYPE string " HTML5 singleton tags VALUE '<(area|base|br|col|command|embed|hr|img|input|link|meta|param|source|!)'. @@ -145,7 +168,20 @@ CLASS lcl_html_helper IMPLEMENTATION. ENDMETHOD. "_add_htm - METHOD add_anchor. + METHOD add_a. + + _add_str( a( iv_txt = iv_txt + iv_act = iv_act + iv_typ = iv_typ + iv_opt = iv_opt + iv_class = iv_class + iv_id = iv_id + iv_style = iv_style ) ). + + ENDMETHOD. "add_a + + METHOD a. + DATA: lv_class TYPE string, lv_href TYPE string, lv_id TYPE string, @@ -153,7 +189,7 @@ CLASS lcl_html_helper IMPLEMENTATION. lv_class = iv_class. - IF iv_opt CA gc_html_opt-emphas. + IF iv_opt CA gc_html_opt-strong. lv_class = lv_class && ' emphasis' ##NO_TEXT. ENDIF. IF iv_opt CA gc_html_opt-cancel. @@ -186,11 +222,42 @@ CLASS lcl_html_helper IMPLEMENTATION. lv_style = | style="{ iv_style }"|. ENDIF. - _add_str( |{ iv_txt }| ). + rv_str = |{ iv_txt }|. - ENDMETHOD. "add_action + ENDMETHOD. "a -ENDCLASS. "lcl_html_helper IMPLEMENTATION + METHOD add_icon. + + _add_str( icon( iv_name = iv_name + iv_class = iv_class + iv_alt = iv_alt + iv_hint = iv_hint ) ). + + ENDMETHOD. "add_icon + + METHOD icon. + + DATA: lv_hint TYPE string, + lv_alt TYPE string, + lv_class TYPE string. + + IF iv_hint IS NOT INITIAL. + lv_hint = | title="{ iv_hint }"|. + ENDIF. + IF iv_class IS NOT INITIAL. + lv_class = | class="{ iv_class }"|. + ENDIF. + IF iv_alt IS INITIAL. + lv_alt = | alt|. " To pass html validation + ELSE. + lv_alt = | alt="{ iv_alt }"|. + ENDIF. + + rv_str = | |. + + ENDMETHOD. "icon + +ENDCLASS. "lcl_html IMPLEMENTATION *----------------------------------------------------------------------* * CLASS lcl_html_toolbar DEFINITION @@ -219,7 +286,7 @@ CLASS lcl_html_toolbar DEFINITION FINAL. iv_with_icons TYPE abap_bool OPTIONAL iv_add_minizone TYPE abap_bool OPTIONAL RETURNING - VALUE(ro_html) TYPE REF TO lcl_html_helper. + VALUE(ro_html) TYPE REF TO lcl_html. PRIVATE SECTION. TYPES: BEGIN OF ty_item, @@ -295,7 +362,10 @@ CLASS lcl_html_toolbar IMPLEMENTATION. IF iv_no_separator = abap_true. lv_class = lv_class && ' menu_end' ##NO_TEXT. ENDIF. - ro_html->add( |{ iv_as_droplist_with_label }| ). + + ro_html->add_a( iv_txt = iv_as_droplist_with_label + iv_class = lv_class + iv_act = '' ). ENDIF. IF iv_add_minizone = abap_true. @@ -327,15 +397,15 @@ CLASS lcl_html_toolbar IMPLEMENTATION. IF iv_with_icons = abap_true. ro_html->add( '' ). - ro_html->add( |{ -ico }| ). - ro_html->add( '' ). + ro_html->add( |{ lcl_html=>icon( -ico ) }| ). + ro_html->add( '' ). ENDIF. - ro_html->add_anchor( iv_txt = -txt - iv_act = -act - iv_opt = -opt - iv_typ = -typ - iv_class = lv_class ). + ro_html->add_a( iv_txt = -txt + iv_act = -act + iv_opt = -opt + iv_typ = -typ + iv_class = lv_class ). IF iv_with_icons = abap_true. ro_html->add( '' ). diff --git a/src/zabapgit_html_chunks.prog.abap b/src/zabapgit_html_chunks.prog.abap new file mode 100644 index 000000000..ed387db81 --- /dev/null +++ b/src/zabapgit_html_chunks.prog.abap @@ -0,0 +1,200 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_HTML_CHUNKS +*&---------------------------------------------------------------------* + +CLASS lcl_gui_chunk_lib DEFINITION FINAL. + + PUBLIC SECTION. + + CLASS-METHODS render_error + IMPORTING ix_error TYPE REF TO lcx_exception OPTIONAL + iv_error TYPE string OPTIONAL + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. + + CLASS-METHODS render_repo_top + IMPORTING io_repo TYPE REF TO lcl_repo + iv_show_package TYPE abap_bool DEFAULT abap_true + iv_show_branch TYPE abap_bool DEFAULT abap_true + iv_interactive_branch TYPE abap_bool DEFAULT abap_false + iv_branch TYPE string OPTIONAL + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + + CLASS-METHODS render_item_state + IMPORTING iv1 TYPE char1 + iv2 TYPE char1 + RETURNING VALUE(rv_html) TYPE string. + + CLASS-METHODS render_branch_span + IMPORTING iv_branch TYPE string + io_repo TYPE REF TO lcl_repo_online + iv_interactive TYPE abap_bool + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. + +ENDCLASS. "lcl_gui_chunk_lib + +CLASS lcl_gui_chunk_lib IMPLEMENTATION. + + METHOD render_repo_top. + + DATA: lo_repo_online TYPE REF TO lcl_repo_online, + lo_pback TYPE REF TO lcl_persistence_background, + lv_hint TYPE string, + lv_icon TYPE string. + + + CREATE OBJECT ro_html. + CREATE OBJECT lo_pback. + + IF io_repo->is_offline( ) = abap_true. + lv_icon = 'repo_offline' ##NO_TEXT. + lv_hint = 'Offline repository' ##NO_TEXT. + ELSE. + lv_icon = 'repo_online' ##NO_TEXT. + lv_hint = 'On-line repository' ##NO_TEXT. + ENDIF. + + ro_html->add( '' ). + + ro_html->add( '' ). + + ro_html->add( '' ). + ro_html->add( '
' ). + ro_html->add_icon( iv_name = lv_icon iv_hint = lv_hint ). + ro_html->add( |{ io_repo->get_name( ) }| ). + IF io_repo->is_offline( ) = abap_false. + lo_repo_online ?= io_repo. + ro_html->add( |{ lo_repo_online->get_url( ) }| ). + ENDIF. + ro_html->add( '' ). + + IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ). + lv_icon = 'star' ##NO_TEXT. + ELSE. + lv_icon = 'star-grey' ##NO_TEXT. + ENDIF. + ro_html->add_a( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }| + iv_txt = lcl_html=>icon( iv_name = lv_icon + iv_class = 'pad-sides' + iv_hint = 'Click to toggle favorite' ) ). + + IF lo_pback->exists( io_repo->get_key( ) ) = abap_true. + ro_html->add( 'BG' ). + ENDIF. + + IF io_repo->is_write_protected( ) = abap_true. + ro_html->add_icon( iv_name = 'lock' iv_hint = 'Locked from pulls' ). + ENDIF. + + IF io_repo->is_offline( ) = abap_false. + lo_repo_online ?= io_repo. + IF iv_show_branch = abap_true. + IF iv_branch IS INITIAL. + ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( ) + io_repo = lo_repo_online + iv_interactive = iv_interactive_branch ) ). + ELSE. + ro_html->add( render_branch_span( iv_branch = iv_branch + io_repo = lo_repo_online + iv_interactive = iv_interactive_branch ) ). + ENDIF. + ENDIF. + ENDIF. + + IF iv_show_package = abap_true. + ro_html->add_icon( iv_name = 'pkg' iv_hint = 'SAP package' ). + ro_html->add( '' ). + ro_html->add_a( iv_txt = io_repo->get_package( ) + iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ). + ro_html->add( '' ). + ENDIF. + + ro_html->add( '
' ). + + ENDMETHOD. + + METHOD render_item_state. + + DATA: lv_system TYPE string. + + FIELD-SYMBOLS TYPE char1. + + + rv_html = ''. + + DO 2 TIMES. + CASE sy-index. + WHEN 1. + ASSIGN iv1 TO . + lv_system = 'Local:'. + WHEN 2. + ASSIGN iv2 TO . + lv_system = 'Remote:'. + ENDCASE. + + CASE . + WHEN gc_state-unchanged. "None or unchanged + IF iv1 = gc_state-added OR iv2 = gc_state-added. + rv_html = rv_html && |X|. + ELSE. + rv_html = rv_html && | |. + ENDIF. + WHEN gc_state-modified. "Changed + rv_html = rv_html && |M|. + WHEN gc_state-added. "Added new + rv_html = rv_html && |A|. + WHEN gc_state-mixed. "Multiple changes (multifile) + rv_html = rv_html && ||. + WHEN gc_state-deleted. "Deleted + rv_html = rv_html && |D|. + ENDCASE. + ENDDO. + + rv_html = rv_html && ''. + + ENDMETHOD. "render_item_state + + METHOD render_branch_span. + + DATA: lv_text TYPE string, + lv_class TYPE string. + + lv_text = lcl_git_branch_list=>get_display_name( iv_branch ). + + IF iv_branch = io_repo->get_head_branch_name( ) OR iv_branch = lcl_git_branch_list=>head_name. + lv_class = 'branch branch_head'. + ELSEIF lcl_git_branch_list=>get_type( iv_branch ) = lcl_git_branch_list=>c_type-branch. + lv_class = 'branch branch_branch'. + ELSE. + lv_class = 'branch'. + ENDIF. + + CREATE OBJECT ro_html. + ro_html->add( || ). + ro_html->add_icon( iv_name = 'branch' iv_hint = 'Current branch' ). + IF iv_interactive = abap_true. + ro_html->add_a( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }| + iv_txt = lv_text ). + ELSE. + ro_html->add( lv_text ). + ENDIF. + ro_html->add( '' ). + + ENDMETHOD. "render_branch_span + + METHOD render_error. + + CREATE OBJECT ro_html. + + ro_html->add( '
' ). + IF ix_error IS BOUND. + ro_html->add( |Error: { ix_error->mv_text }| ). + ELSE. + ro_html->add( |Error: { iv_error }| ). + ENDIF. + ro_html->add( '
' ). + + ENDMETHOD. "render_error + +ENDCLASS. "lcl_gui_chunk_lib \ No newline at end of file diff --git a/src/zabapgit_html_chunks.prog.xml b/src/zabapgit_html_chunks.prog.xml new file mode 100644 index 000000000..e668d34ba --- /dev/null +++ b/src/zabapgit_html_chunks.prog.xml @@ -0,0 +1,48 @@ + + + + + + ZABAPGIT_HTML_CHUNKS + A + + + X + + + + + + I + + + + 0000-00-00 + + 0000-00-00 + + + + + E + + + 0000-00-00 + + 0000-00-00 + + + X + + + + R + + Include ZABAPGIT_HTML_CHUNKS + 28 + + + + + + diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index f4491616b..dc3791308 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -17,240 +17,88 @@ INTERFACE lif_gui_page. RAISING lcx_exception lcx_cancel. METHODS render - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. ENDINTERFACE. -CLASS lcl_gui_page_super DEFINITION ABSTRACT. +CLASS lcl_gui_page DEFINITION ABSTRACT. PUBLIC SECTION. - INTERFACES lif_gui_page ABSTRACT METHODS render. - - CLASS-METHODS render_error - IMPORTING ix_error TYPE REF TO lcx_exception - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + INTERFACES lif_gui_page. PROTECTED SECTION. - METHODS render_repo_top - IMPORTING io_repo TYPE REF TO lcl_repo - iv_show_package TYPE abap_bool DEFAULT abap_true - iv_show_branch TYPE abap_bool DEFAULT abap_true - iv_interactive_branch TYPE abap_bool DEFAULT abap_false - iv_branch TYPE string OPTIONAL - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + + TYPES: BEGIN OF ty_control, + redirect_url TYPE string, + page_title TYPE string, + page_menu TYPE REF TO lcl_html_toolbar, + END OF ty_control. + + DATA: ms_control TYPE ty_control. + + METHODS render_content ABSTRACT + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. - METHODS render_item_state - IMPORTING iv1 TYPE char1 - iv2 TYPE char1 - RETURNING VALUE(rv_html) TYPE string. - - METHODS render_branch_span - IMPORTING iv_branch TYPE string - io_repo TYPE REF TO lcl_repo_online - iv_interactive TYPE abap_bool - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + METHODS scripts + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. - METHODS header - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + PRIVATE SECTION. - METHODS footer - IMPORTING io_include_script TYPE REF TO lcl_html_helper OPTIONAL - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + METHODS html_head + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS title - IMPORTING iv_title TYPE string - io_menu TYPE REF TO lcl_html_toolbar OPTIONAL - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. + + + METHODS footer + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS redirect - IMPORTING iv_url TYPE string - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. -ENDCLASS. +ENDCLASS. "lcl_gui_page -CLASS lcl_gui_page_super IMPLEMENTATION. +CLASS lcl_gui_page IMPLEMENTATION. - METHOD render_repo_top. - - DATA: lo_repo_online TYPE REF TO lcl_repo_online, - lo_pback TYPE REF TO lcl_persistence_background, - lv_icon TYPE string. - - - CREATE OBJECT ro_html. - CREATE OBJECT lo_pback. - - IF io_repo->is_offline( ) = abap_true. - lv_icon = 'img/repo_offline' ##NO_TEXT. - ELSE. - lv_icon = 'img/repo_online' ##NO_TEXT. - ENDIF. - - ro_html->add( '' ). - - ro_html->add( '' ). - - ro_html->add( '' ). - ro_html->add( '
' ). - ro_html->add( || ). - ro_html->add( |{ io_repo->get_name( ) }| ). - IF io_repo->is_offline( ) = abap_false. - lo_repo_online ?= io_repo. - ro_html->add( |{ lo_repo_online->get_url( ) }| ). - ENDIF. - ro_html->add( '' ). - - IF abap_true = lcl_app=>user( )->is_favorite_repo( io_repo->get_key( ) ). - lv_icon = 'img/star' ##NO_TEXT. - ELSE. - lv_icon = 'img/star-grey' ##NO_TEXT. - ENDIF. - lv_icon = ||. - ro_html->add_anchor( iv_act = |{ gc_action-repo_toggle_fav }?{ io_repo->get_key( ) }| - iv_txt = lv_icon ). - - IF lo_pback->exists( io_repo->get_key( ) ) = abap_true. - ro_html->add( 'BG' ). - ENDIF. - - IF io_repo->is_write_protected( ) = abap_true. - ro_html->add( '' ). - ENDIF. - - IF io_repo->is_offline( ) = abap_false. - lo_repo_online ?= io_repo. - IF iv_show_branch = abap_true. - IF iv_branch IS INITIAL. - ro_html->add( render_branch_span( iv_branch = lo_repo_online->get_branch_name( ) - io_repo = lo_repo_online - iv_interactive = iv_interactive_branch ) ). - ELSE. - ro_html->add( render_branch_span( iv_branch = iv_branch - io_repo = lo_repo_online - iv_interactive = iv_interactive_branch ) ). - ENDIF. - ENDIF. - ENDIF. - - IF iv_show_package = abap_true. - ro_html->add( '' ). - ro_html->add( '' ). - ro_html->add_anchor( iv_txt = io_repo->get_package( ) - iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ). - ro_html->add( '' ). - ENDIF. - - ro_html->add( '
' ). - - ENDMETHOD. - - METHOD render_item_state. - - DATA: lv_system TYPE string. - - FIELD-SYMBOLS TYPE char1. - - - rv_html = ''. - - DO 2 TIMES. - CASE sy-index. - WHEN 1. - ASSIGN iv1 TO . - lv_system = 'Local:'. - WHEN 2. - ASSIGN iv2 TO . - lv_system = 'Remote:'. - ENDCASE. - - CASE . - WHEN gc_state-unchanged. "None or unchanged - IF iv1 = gc_state-added OR iv2 = gc_state-added. - rv_html = rv_html && |X|. - ELSE. - rv_html = rv_html && | |. - ENDIF. - WHEN gc_state-modified. "Changed - rv_html = rv_html && |M|. - WHEN gc_state-added. "Added new - rv_html = rv_html && |A|. - WHEN gc_state-mixed. "Multiple changes (multifile) - rv_html = rv_html && ||. - WHEN gc_state-deleted. "Deleted - rv_html = rv_html && |D|. - ENDCASE. - ENDDO. - - rv_html = rv_html && ''. - - ENDMETHOD. "render_item_state - - METHOD render_branch_span. - DATA: lv_text TYPE string, - lv_class TYPE string. - - lv_text = lcl_git_branch_list=>get_display_name( iv_branch ). - - IF iv_branch = io_repo->get_head_branch_name( ) OR iv_branch = lcl_git_branch_list=>head_name. - lv_class = 'branch branch_head'. - ELSEIF lcl_git_branch_list=>get_type( iv_branch ) = lcl_git_branch_list=>c_type-branch. - lv_class = 'branch branch_branch'. - ELSE. - lv_class = 'branch'. - ENDIF. - - CREATE OBJECT ro_html. - ro_html->add( || ). - ro_html->add( '' ). - IF iv_interactive = abap_true. - ro_html->add_anchor( iv_act = |{ gc_action-git_branch_switch }?{ io_repo->get_key( ) }| - iv_txt = lv_text ). - ELSE. - ro_html->add( lv_text ). - ENDIF. - ro_html->add( '' ). - - ENDMETHOD. "render_branch_span - - METHOD header. + METHOD html_head. CREATE OBJECT ro_html. - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT ro_html->add( '' ). "#EC NOTEXT - 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 - ro_html->add( '' ). "#EC NOTEXT - ENDMETHOD. "render html header + ro_html->add( 'abapGit' ). "#EC NOTEXT + ro_html->add( '' ). + ro_html->add( '' ). "#EC NOTEXT + + ro_html->add( '' ). "#EC NOTEXT + + ENDMETHOD. "html_head METHOD title. CREATE OBJECT ro_html. ro_html->add( '' ). "#EC NOTEXT + + ENDMETHOD. "footer + + METHOD redirect. + + CREATE OBJECT ro_html. + + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( || ). "#EC NOTEXT + ro_html->add( ''). "#EC NOTEXT + ro_html->add( ''). "#EC NOTEXT + + ENDMETHOD. + + METHOD scripts. + ASSERT 1 = 1. " Dummy + ENDMETHOD. "scripts + + METHOD lif_gui_page~on_event. + ev_state = gc_event_state-not_handled. + ENDMETHOD. "lif_gui_page~on_event + + METHOD lif_gui_page~render. + + DATA lo_script TYPE REF TO lcl_html. + + " Redirect + IF ms_control-redirect_url IS NOT INITIAL. + ro_html = redirect( ). + RETURN. + ENDIF. + + " Real page + CREATE OBJECT ro_html. + + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( html_head( ) ). + ro_html->add( '' ). "#EC NOTEXT + ro_html->add( title( ) ). + ro_html->add( render_content( ) ). + ro_html->add( footer( ) ). ro_html->add( '' ). "#EC NOTEXT - IF io_include_script IS BOUND. + lo_script = scripts( ). + + IF lo_script IS BOUND AND lo_script->mv_html IS NOT INITIAL. ro_html->add( '' ). ENDIF. ro_html->add( ''). "#EC NOTEXT - ENDMETHOD. "render html footer & logo + ENDMETHOD. " lif_gui_page~render. - METHOD render_error. - - CREATE OBJECT ro_html. - - ro_html->add( '
' ). - ro_html->add( |Error: { ix_error->mv_text }| ). - ro_html->add( '
' ). - - ENDMETHOD. "render_error - - METHOD redirect. - - CREATE OBJECT ro_html. - - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT - ro_html->add( || ). "#EC NOTEXT - ro_html->add( ''). "#EC NOTEXT - - ENDMETHOD. - - METHOD lif_gui_page~on_event. - ev_state = gc_event_state-not_handled. - ENDMETHOD. "lif_gui_page~on_event - -ENDCLASS. \ No newline at end of file +ENDCLASS. "lcl_gui_page \ No newline at end of file diff --git a/src/zabapgit_page_background.prog.abap b/src/zabapgit_page_background.prog.abap index 56e9fd0c0..691bcbf1b 100644 --- a/src/zabapgit_page_background.prog.abap +++ b/src/zabapgit_page_background.prog.abap @@ -3,12 +3,14 @@ *&---------------------------------------------------------------------* CLASS lcl_gui_page_background_run DEFINITION FINAL - INHERITING FROM lcl_gui_page_super. + INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS: - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + METHODS constructor. + METHODS lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mt_text TYPE TABLE OF string. @@ -19,6 +21,11 @@ ENDCLASS. CLASS lcl_gui_page_background_run IMPLEMENTATION. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'BACKGROUND_RUN'. + ENDMETHOD. " constructor. + METHOD lif_gui_page~on_event. RETURN. ENDMETHOD. @@ -47,46 +54,44 @@ CLASS lcl_gui_page_background_run IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DATA: lv_text LIKE LINE OF mt_text. - run( ). CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'BACKGROUND_RUN' ) ). ro_html->add( '
' ). LOOP AT mt_text INTO lv_text. ro_html->add( '
' && lv_text && '

' ). ENDLOOP. ro_html->add( '
' ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. CLASS lcl_gui_page_background DEFINITION FINAL - INHERITING FROM lcl_gui_page_super. + INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: - constructor - IMPORTING - iv_key TYPE lcl_persistence_repo=>ty_repo-key, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + constructor IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key, + lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mv_key TYPE lcl_persistence_repo=>ty_repo-key. METHODS: + build_menu + RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar, render_data - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. ENDCLASS. @@ -94,10 +99,21 @@ ENDCLASS. CLASS lcl_gui_page_background IMPLEMENTATION. METHOD constructor. + super->constructor( ). + mv_key = iv_key. + ms_control-page_title = 'BACKGROUND'. + ms_control-page_menu = build_menu( ). + ENDMETHOD. + METHOD build_menu. + CREATE OBJECT ro_menu. + ro_menu->add( iv_txt = 'Run background logic' + iv_act = gc_action-go_background_run ) ##NO_TEXT. + ENDMETHOD. "build_menu + METHOD lif_gui_page~on_event. DATA ls_bg_task TYPE lcl_persistence_background=>ty_background. @@ -162,7 +178,7 @@ CLASS lcl_gui_page_background IMPLEMENTATION. lv_afixed = ' checked' ##NO_TEXT. ENDCASE. - ro_html->add( render_repo_top( lo_repo ) ). + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( lo_repo ) ). ro_html->add( '
' ). ro_html->add( 'Method
' ) ##NO_TEXT. @@ -222,22 +238,12 @@ CLASS lcl_gui_page_background IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. - DATA lo_toolbar TYPE REF TO lcl_html_toolbar. - - - CREATE OBJECT lo_toolbar. CREATE OBJECT ro_html. - lo_toolbar->add( iv_txt = 'Run background logic' - iv_act = gc_action-go_background_run ) ##NO_TEXT. - - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'BACKGROUND' io_menu = lo_toolbar ) ). ro_html->add( render_data( ) ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_branch_overview.prog.abap b/src/zabapgit_page_branch_overview.prog.abap index 0873eea5c..297dc2990 100644 --- a/src/zabapgit_page_branch_overview.prog.abap +++ b/src/zabapgit_page_branch_overview.prog.abap @@ -302,15 +302,17 @@ ENDCLASS. *********************** -CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: constructor IMPORTING io_repo TYPE REF TO lcl_repo_online RAISING lcx_exception, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, @@ -333,13 +335,13 @@ CLASS lcl_gui_page_branch_overview DEFINITION FINAL INHERITING FROM lcl_gui_page refresh RAISING lcx_exception, body - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, form_select IMPORTING iv_name TYPE string - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_merge - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, decode_merge IMPORTING it_postdata TYPE cnht_post_data_tab @@ -360,6 +362,8 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'BRANCH_OVERVIEW'. + ms_control-page_menu = build_menu( ). mo_repo = io_repo. refresh( ). ENDMETHOD. @@ -416,7 +420,7 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( render_repo_top( + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_package = abap_false iv_show_branch = abap_false ) ). @@ -577,17 +581,14 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'BRANCH_OVERVIEW' io_menu = build_menu( ) ) ). ro_html->add( '
' ). ro_html->add( body( ) ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_commit.prog.abap b/src/zabapgit_page_commit.prog.abap index 434b154c1..4914b6d7d 100644 --- a/src/zabapgit_page_commit.prog.abap +++ b/src/zabapgit_page_commit.prog.abap @@ -2,7 +2,7 @@ *& Include ZABAPGIT_PAGE_COMMIT *&---------------------------------------------------------------------* -CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. @@ -16,24 +16,26 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. IMPORTING io_repo TYPE REF TO lcl_repo_online io_stage TYPE REF TO lcl_stage RAISING lcx_exception, - lif_gui_page~render REDEFINITION, lif_gui_page~on_event REDEFINITION. + PROTECTED SECTION. + METHODS: + render_content REDEFINITION, + scripts REDEFINITION. + PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, mo_stage TYPE REF TO lcl_stage. METHODS: render_menu - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_stage - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_form - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper - RAISING lcx_exception, - scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html + RAISING lcx_exception. ENDCLASS. @@ -44,6 +46,8 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. mo_repo = io_repo. mo_stage = io_stage. + + ms_control-page_title = 'COMMIT'. ENDMETHOD. METHOD lif_gui_page~on_event. @@ -68,15 +72,12 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'COMMIT' ) ). - ro_html->add( '
' ). - ro_html->add( render_repo_top( + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_package = abap_false iv_branch = mo_stage->get_branch_name( ) ) ). @@ -86,9 +87,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. ro_html->add( render_stage( ) ). ro_html->add( '
' ). - ro_html->add( footer( io_include_script = scripts( ) ) ). - - ENDMETHOD. "lif_gui_page~render + ENDMETHOD. "render_content METHOD render_stage. @@ -201,7 +200,7 @@ CLASS lcl_gui_page_commit IMPLEMENTATION. lo_toolbar->add( iv_act = 'submitFormById(''commit_form'');' iv_txt = 'Commit' iv_typ = gc_action_type-onclick - iv_opt = gc_html_opt-emphas ) ##NO_TEXT. + iv_opt = gc_html_opt-strong ) ##NO_TEXT. lo_toolbar->add( iv_act = 'commit_cancel' iv_txt = 'Cancel' diff --git a/src/zabapgit_page_db.prog.abap b/src/zabapgit_page_db.prog.abap index 6f8ccf02c..bb637d5a9 100644 --- a/src/zabapgit_page_db.prog.abap +++ b/src/zabapgit_page_db.prog.abap @@ -2,14 +2,15 @@ *& Include ZABAPGIT_PAGE_DB *&---------------------------------------------------------------------* -CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. - METHODS: constructor IMPORTING is_key TYPE lcl_persistence_db=>ty_content. + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. @@ -20,9 +21,10 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_key = is_key. + ms_control-page_title = 'CONFIG DISPLAY'. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, ls_action TYPE lcl_persistence_db=>ty_content, @@ -44,8 +46,6 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. format = cl_abap_format=>e_html_attr ). CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'CONFIG DISPLAY' ) ). ro_html->add( '
' ). ro_html->add( '
' ). @@ -56,26 +56,25 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION. | { ms_key-value }
| ). ro_html->add( '' ). - ro_html->add_anchor( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ). + ro_html->add_a( iv_txt = 'Edit' iv_act = |{ gc_action-db_edit }?{ lv_action }| ). ro_html->add( '' ). ro_html->add( |
{ lv_data }
| ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. -CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. - METHODS: constructor IMPORTING is_key TYPE lcl_persistence_db=>ty_content. + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. DATA: ms_key TYPE lcl_persistence_db=>ty_content. @@ -86,9 +85,10 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. METHOD constructor. super->constructor( ). ms_key = is_key. + ms_control-page_title = 'CONFIG EDIT'. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DATA: lv_data TYPE lcl_persistence_db=>ty_content-data_str, lo_toolbar TYPE REF TO lcl_html_toolbar. @@ -112,9 +112,6 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. CREATE OBJECT ro_html. CREATE OBJECT lo_toolbar. - ro_html->add( header( ) ). - ro_html->add( title( 'CONFIG EDIT' ) ). - ro_html->add( '
' ). " Banners @@ -135,7 +132,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. lo_toolbar->add( iv_act = 'submitFormById(''db_form'');' iv_txt = 'Save' iv_typ = gc_action_type-onclick - iv_opt = gc_html_opt-emphas ) ##NO_TEXT. + iv_opt = gc_html_opt-strong ) ##NO_TEXT. ro_html->add( '
' ). ro_html->add( lo_toolbar->render( ) ). @@ -143,16 +140,17 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION. ro_html->add( '
' ). "db_entry - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. -CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + METHODS constructor. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. METHODS explain_content @@ -160,12 +158,16 @@ CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super. RETURNING VALUE(rv_text) TYPE string RAISING lcx_exception. - ENDCLASS. CLASS lcl_gui_page_db IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'DATABASE PERSISTENCY'. + ENDMETHOD. " constructor. + + METHOD render_content. DATA: lt_data TYPE lcl_persistence_db=>tt_content, lv_action TYPE string, @@ -179,9 +181,6 @@ CLASS lcl_gui_page_db IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'DATABASE PERSISTENCY' ) ). - ro_html->add( '
' ). ro_html->add( '' ). @@ -220,9 +219,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - - ENDMETHOD. "lif_gui_page~render + ENDMETHOD. "render_content METHOD explain_content. DATA: lv_result TYPE match_result, @@ -241,9 +238,10 @@ CLASS lcl_gui_page_db IMPLEMENTATION. FIND FIRST OCCURRENCE OF REGEX '' IN is_data-data_str IGNORING CASE MATCH COUNT lv_cnt. IF lv_cnt > 0. - rv_text = |On-line, Name: { lcl_url=>name( rv_text ) }|. + rv_text = |On-line, Name: { + lcl_url=>name( rv_text ) }|. ELSE. - rv_text = |Off-line, Name: { rv_text }|. + rv_text = |Off-line, Name: { rv_text }|. ENDIF. WHEN 'BACKGROUND'. diff --git a/src/zabapgit_page_debug.prog.abap b/src/zabapgit_page_debug.prog.abap index 9900f333a..6d2dfa9f3 100644 --- a/src/zabapgit_page_debug.prog.abap +++ b/src/zabapgit_page_debug.prog.abap @@ -2,15 +2,18 @@ *& Include ZABAPGIT_PAGE_DEBUG *&---------------------------------------------------------------------* -CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + METHODS constructor. + + PROTECTED SECTION. + METHODS: + render_content REDEFINITION, + scripts REDEFINITION. PRIVATE SECTION. - METHODS scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. METHODS render_debug_info - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_supported_object_types RETURNING VALUE(rv_html) TYPE string. @@ -18,21 +21,21 @@ ENDCLASS. "lcl_gui_page_debuginfo CLASS lcl_gui_page_debuginfo IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'DEBUG INFO'. + ENDMETHOD. " constructor. + + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'DEBUG INFO' ) ). - ro_html->add( '
' ). ro_html->add( render_debug_info( ) ). ro_html->add( render_supported_object_types( ) ). ro_html->add( '
' ). - ro_html->add( footer( io_include_script = scripts( ) ) ). - - ENDMETHOD. + ENDMETHOD. "render_content METHOD render_debug_info. diff --git a/src/zabapgit_page_diff.prog.abap b/src/zabapgit_page_diff.prog.abap index 1d3715ac7..c67ed6523 100644 --- a/src/zabapgit_page_diff.prog.abap +++ b/src/zabapgit_page_diff.prog.abap @@ -2,7 +2,7 @@ *& Include ZABAPGIT_PAGE_DIFF *&---------------------------------------------------------------------* -CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. @@ -28,26 +28,27 @@ CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super. is_object TYPE ty_item OPTIONAL RAISING lcx_exception. - METHODS lif_gui_page~render REDEFINITION. + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mt_diff_files TYPE tt_file_diff. METHODS render_diff IMPORTING is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_diff_head IMPORTING is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_table_head - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_lines IMPORTING is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_beacon IMPORTING is_diff_line TYPE lcl_diff=>ty_diff is_diff TYPE ty_file_diff - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS get_line_hl IMPORTING iv_mod TYPE char1 iv_result TYPE lcl_diff=>ty_diff-result @@ -73,6 +74,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_status. super->constructor( ). + ms_control-page_title = 'DIFF'. ASSERT is_file IS INITIAL OR is_object IS INITIAL. " just one passed @@ -174,7 +176,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ENDMETHOD. "append_diff METHOD render_diff_head. - DATA: lo_html TYPE REF TO lcl_html_helper, + DATA: lo_html TYPE REF TO lcl_html, ls_stats TYPE lcl_diff=>ty_count. CREATE OBJECT lo_html. @@ -191,7 +193,8 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. lo_html->add( |- { ls_stats-delete }| ). lo_html->add( |~ { ls_stats-update }| ). lo_html->add( |{ is_diff-filename }| ). "#EC NOTEXT - lo_html->add( render_item_state( iv1 = is_diff-lstate iv2 = is_diff-rstate ) ). + lo_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_diff-lstate + iv2 = is_diff-rstate ) ). lo_html->add( '
' ). "#EC NOTEXT ro_html = lo_html. @@ -221,7 +224,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. " Content ro_html->add( '
' ). "#EC NOTEXT - ro_html->add( '' ). "#EC NOTEXT + ro_html->add( '
' ). "#EC NOTEXT ro_html->add( render_table_head( ) ). ro_html->add( render_lines( is_diff ) ). ro_html->add( '
' ). "#EC NOTEXT @@ -342,15 +345,12 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ENDMETHOD. " get_line_hl. - METHOD lif_gui_page~render. + METHOD render_content. DATA ls_diff_file LIKE LINE OF mt_diff_files. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'DIFF' ) ). - LOOP AT mt_diff_files INTO ls_diff_file. lcl_progress=>show( iv_key = 'Diff' iv_current = sy-tabix @@ -360,8 +360,6 @@ CLASS lcl_gui_page_diff IMPLEMENTATION. ro_html->add( render_diff( ls_diff_file ) ). ENDLOOP. - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. "lcl_gui_page_diff \ No newline at end of file diff --git a/src/zabapgit_page_explore.prog.abap b/src/zabapgit_page_explore.prog.abap index eab5b0c95..e46baba68 100644 --- a/src/zabapgit_page_explore.prog.abap +++ b/src/zabapgit_page_explore.prog.abap @@ -2,19 +2,28 @@ *& Include ZABAPGIT_PAGE_EXPLORE *&---------------------------------------------------------------------* -CLASS lcl_gui_page_explore DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_explore DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + + CONSTANTS c_explore_url TYPE string + VALUE 'http://larshp.github.io/abapGit/explore.html'. + + METHODS constructor. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. ENDCLASS. "lcl_gui_page_explore DEFINITION CLASS lcl_gui_page_explore IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-redirect_url = c_explore_url. + ENDMETHOD. "constructor - CREATE OBJECT ro_html. - ro_html->add( redirect( 'http://larshp.github.io/abapGit/explore.html' ) ). - - ENDMETHOD. + METHOD render_content. + ASSERT 1 = 1. " Dummy + ENDMETHOD. "render_content. ENDCLASS. "lcl_gui_page_explore IMPLEMENTATION \ No newline at end of file diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index f7bf81023..032348029 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -2,15 +2,17 @@ *& Include ZABAPGIT_PAGE_MAIN *&---------------------------------------------------------------------* -CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: constructor RAISING lcx_exception, - lif_gui_page~render REDEFINITION, lif_gui_page~on_event REDEFINITION. + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. CONSTANTS: BEGIN OF c_actions, show TYPE string VALUE 'show' ##NO_TEXT, @@ -27,16 +29,16 @@ CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super. RAISING lcx_exception, render_toc IMPORTING it_repo_list TYPE lcl_repo_srv=>ty_repo_tt - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, build_main_menu RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar, render_explore - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_repo IMPORTING io_repo TYPE REF TO lcl_repo - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. ENDCLASS. @@ -46,6 +48,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'HOME'. + ms_control-page_menu = build_main_menu( ). ENDMETHOD. " constructor METHOD lif_gui_page~on_event. @@ -112,7 +116,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. * RENDERING ********************************************************************** - METHOD lif_gui_page~render. + METHOD render_content. DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt, lx_error TYPE REF TO lcx_exception, @@ -123,14 +127,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'HOME' - io_menu = build_main_menu( ) ) ). - TRY. lt_repos = lcl_app=>repo_srv( )->list( ). CATCH lcx_exception INTO lx_error. - ro_html->add( render_error( lx_error ) ). + ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ). ENDTRY. ro_html->add( render_toc( lt_repos ) ). @@ -139,15 +139,13 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ro_html->add( render_explore( ) ). ELSEIF mv_show IS INITIAL. CREATE OBJECT lo_tutorial. - ro_html->add( lo_tutorial->lif_gui_page~render( ) ). + ro_html->add( lo_tutorial->render( ) ). ELSE. lo_repo = lcl_app=>repo_srv( )->get( mv_show ). ro_html->add( render_repo( lo_repo ) ). ENDIF. - ro_html->add( footer( ) ). - - ENDMETHOD. "render + ENDMETHOD. "render_content METHOD retrieve_active_repo. @@ -235,7 +233,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. LOOP AT it_repo_list INTO lo_repo. lv_key = lo_repo->get_key( ). IF lv_key = mv_show. - lv_opt = gc_html_opt-emphas. + lv_opt = gc_html_opt-strong. ELSE. CLEAR lv_opt. ENDIF. @@ -256,9 +254,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ENDIF. IF lo_repo->is_offline( ) = abap_true. - lv_icon = ''. + lv_icon = 'repo_offline'. ELSE. - lv_icon = ''. + lv_icon = 'repo_online'. ENDIF. lo_allbar->add( iv_txt = lv_repo_title @@ -279,22 +277,24 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ********************************************************************** - ro_html->add( '' ). - ro_html->add( '' ). + ro_html->add( '
' ). + ro_html->add( || ). - ro_html->add( '' ). ro_html->add( ''). ro_html->add(''). ro_html->add(''). @@ -200,7 +203,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ig_file = is_file ). ro_html->add( '' ). ro_html->add( '' ). WHEN 'remote'. ro_html->add( '' ). @@ -211,38 +214,33 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ENDMETHOD. "render_file - METHOD lif_gui_page~render. + METHOD render_content. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( 'STAGE' ) ). - ro_html->add( '
' ). - ro_html->add( render_repo_top( mo_repo ) ). + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( mo_repo ) ). ro_html->add( render_menu( ) ). ro_html->add( render_list( ) ). ro_html->add( '
' ). - ro_html->add( footer( scripts( ) ) ). - - ENDMETHOD. "lif_gui_page~render + ENDMETHOD. "render_content METHOD render_menu. CREATE OBJECT ro_html. ro_html->add( '
' ). - ro_html->add_anchor( iv_act = 'gHelper.submit();' - iv_typ = gc_action_type-onclick - iv_id = 'act_commit' - iv_style = 'display: none' - iv_txt = 'Commit' - iv_opt = gc_html_opt-emphas ) ##NO_TEXT. + ro_html->add_a( iv_act = 'gHelper.submit();' + iv_typ = gc_action_type-onclick + iv_id = 'act_commit' + iv_style = 'display: none' + iv_txt = 'Commit' + iv_opt = gc_html_opt-strong ) ##NO_TEXT. IF lines( ms_files-local ) > 0. - ro_html->add_anchor( iv_act = |{ c_action-stage_all }| - iv_id = 'act_commit_all' - iv_txt = 'Add all and commit') ##NO_TEXT. + ro_html->add_a( iv_act = |{ c_action-stage_all }| + iv_id = 'act_commit_all' + iv_txt = 'Add all and commit') ##NO_TEXT. ENDIF. ro_html->add( '
' ). diff --git a/src/zabapgit_unit_test.prog.abap b/src/zabapgit_unit_test.prog.abap index 2d63e98a7..8fb06bc0c 100644 --- a/src/zabapgit_unit_test.prog.abap +++ b/src/zabapgit_unit_test.prog.abap @@ -1237,7 +1237,7 @@ ENDCLASS. "lcl_abap_unit IMPLEMENTATION CLASS ltcl_html_helper DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. PRIVATE SECTION. - DATA: mo_html TYPE REF TO lcl_html_helper. + DATA: mo_html TYPE REF TO lcl_html. METHODS: indent1 FOR TESTING RAISING lcx_exception, diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 7ae234ff9..20478551d 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -1043,7 +1043,7 @@ CLASS lcl_log DEFINITION FINAL. count RETURNING VALUE(rv_count) TYPE i, to_html - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, clear, has_rc "For unit tests mainly IMPORTING iv_rc TYPE balsort diff --git a/src/zabapgit_view_repo.prog.abap b/src/zabapgit_view_repo.prog.abap index da446e9ba..cf2cbdd8c 100644 --- a/src/zabapgit_view_repo.prog.abap +++ b/src/zabapgit_view_repo.prog.abap @@ -2,8 +2,10 @@ *& Include ZABAPGIT_VIEW_REPO *&---------------------------------------------------------------------* -CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_view_repo_content DEFINITION FINAL. PUBLIC SECTION. + INTERFACES lif_gui_page. + ALIASES render FOR lif_gui_page~render. CONSTANTS: BEGIN OF c_actions, change_dir TYPE string VALUE 'change_dir' ##NO_TEXT, @@ -12,9 +14,6 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su toggle_changes TYPE string VALUE 'toggle_changes' ##NO_TEXT, END OF c_actions. - METHODS: lif_gui_page~render REDEFINITION, - lif_gui_page~on_event REDEFINITION. - METHODS constructor IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key RAISING lcx_exception. @@ -31,21 +30,21 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su render_head_menu IMPORTING iv_lstate TYPE char1 iv_rstate TYPE char1 - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_grid_menu - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_item IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception, render_item_files IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_item_command IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, get_item_class IMPORTING is_item TYPE lcl_repo_content_browser=>ty_repo_item RETURNING VALUE(rv_html) TYPE string, @@ -55,7 +54,7 @@ CLASS lcl_gui_view_repo_content DEFINITION FINAL INHERITING FROM lcl_gui_page_su render_empty_package RETURNING VALUE(rv_html) TYPE string, render_parent_dir - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper + RETURNING VALUE(ro_html) TYPE REF TO lcl_html RAISING lcx_exception. METHODS: @@ -150,7 +149,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ro_html->add( render_grid_menu( ) ). " Repo content table - ro_html->add( '
{ + lcl_html=>icon( iv_name = 'star' iv_alt = 'Favs' iv_hint = 'Favorites' ) + }' ). " Maximize width + ro_html->add( '' ). " Maximize width IF lo_favbar->count( ) > 0. ro_html->add( lo_favbar->render( iv_sort = abap_true ) ). ELSE. - ro_html->add( `No favorites so far. For more info please check ` ). - ro_html->add_anchor( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial ). - ro_html->add( '' ). + ro_html->add( |No favorites so far. For more info please check { + lcl_html=>a( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial ) + }| ). ENDIF. ro_html->add( '' ). ro_html->add( lo_allbar->render( - iv_as_droplist_with_label = '' + iv_as_droplist_with_label = lcl_html=>icon( iv_name = 'burger' iv_class = 'pad4px' ) iv_sort = abap_true iv_with_icons = abap_true iv_add_minizone = abap_true ) ). @@ -330,8 +330,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( |
| ). - ro_html->add( render_repo_top( io_repo = io_repo iv_interactive_branch = abap_true ) ). - ro_html->add( mo_repo_content->lif_gui_page~render( ) ). + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = io_repo + iv_interactive_branch = abap_true ) ). + ro_html->add( mo_repo_content->render( ) ). ro_html->add( '
' ). ENDMETHOD. "render_repo diff --git a/src/zabapgit_page_merge.prog.abap b/src/zabapgit_page_merge.prog.abap index c415d02eb..e51157d7a 100644 --- a/src/zabapgit_page_merge.prog.abap +++ b/src/zabapgit_page_merge.prog.abap @@ -315,7 +315,7 @@ ENDCLASS. ********************************* -CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. METHODS: @@ -324,8 +324,10 @@ CLASS lcl_gui_page_merge DEFINITION FINAL INHERITING FROM lcl_gui_page_super. iv_source TYPE string iv_target TYPE string RAISING lcx_exception, - lif_gui_page~on_event REDEFINITION, - lif_gui_page~render REDEFINITION. + lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, @@ -346,6 +348,8 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'MERGE'. + ms_control-page_menu = build_menu( ). mo_repo = io_repo. @@ -381,7 +385,7 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. ENDMETHOD. - METHOD lif_gui_page~render. + METHOD render_content. DEFINE _show_file. READ TABLE &1 ASSIGNING @@ -410,10 +414,8 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. CREATE OBJECT ro_html. - ro_html->add( header( ) ). - ro_html->add( title( iv_title = 'MERGE' io_menu = build_menu( ) ) ). ro_html->add( '
' ). - ro_html->add( render_repo_top( + ro_html->add( lcl_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_package = abap_false iv_show_branch = abap_false ) ). @@ -473,8 +475,7 @@ CLASS lcl_gui_page_merge IMPLEMENTATION. ro_html->add( ms_merge-conflict ). ro_html->add( '' ). ro_html->add( '
' ). - ro_html->add( footer( ) ). - ENDMETHOD. + ENDMETHOD. "render_content ENDCLASS. \ No newline at end of file diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap index 4f11a9d5c..fecba3154 100644 --- a/src/zabapgit_page_settings.prog.abap +++ b/src/zabapgit_page_settings.prog.abap @@ -2,17 +2,20 @@ *& Include ZABAPGIT_PAGE_SETTINGS *&---------------------------------------------------------------------* -CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. - - METHODS lif_gui_page~render REDEFINITION. - METHODS lif_gui_page~on_event REDEFINITION. CONSTANTS: BEGIN OF c_action, save_settings TYPE string VALUE 'save_settings', END OF c_action. + METHODS constructor. + METHODS lif_gui_page~on_event REDEFINITION. + + PROTECTED SECTION. + METHODS render_content REDEFINITION. + PRIVATE SECTION. DATA: @@ -20,13 +23,13 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super. mv_error TYPE abap_bool. METHODS render_proxy - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_development_internals - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_form_begin - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS render_form_end - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS build_settings IMPORTING it_post_fields TYPE tihttpnvp. @@ -45,24 +48,24 @@ ENDCLASS. CLASS lcl_gui_page_settings IMPLEMENTATION. - METHOD lif_gui_page~render. + METHOD constructor. + super->constructor( ). + ms_control-page_title = 'SETTINGS'. + ENDMETHOD. " constructor. + + METHOD render_content. CREATE OBJECT ro_html. read_settings( ). - ro_html->add( header( ) ). - ro_html->add( title( 'Settings' ) ). - ro_html->add( render_form_begin( ) ). ro_html->add( render_proxy( ) ). ro_html->add( |
| ). ro_html->add( render_development_internals( ) ). ro_html->add( render_form_end( ) ). - ro_html->add( footer( ) ). - - ENDMETHOD. + ENDMETHOD. "render_content METHOD render_proxy. diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index 9c1893be2..e460b7c1b 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -2,7 +2,7 @@ *& Include ZABAPGIT_PAGE_STAGE *&---------------------------------------------------------------------* -CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page. PUBLIC SECTION. CONSTANTS: BEGIN OF c_action, @@ -14,9 +14,13 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. constructor IMPORTING io_repo TYPE REF TO lcl_repo_online RAISING lcx_exception, - lif_gui_page~render REDEFINITION, lif_gui_page~on_event REDEFINITION. + PROTECTED SECTION. + METHODS: + render_content REDEFINITION, + scripts REDEFINITION. + PRIVATE SECTION. DATA: mo_repo TYPE REF TO lcl_repo_online, ms_files TYPE ty_stage_files, @@ -25,15 +29,13 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super. METHODS: render_list - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_file IMPORTING is_file TYPE ty_file iv_context TYPE string - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, + RETURNING VALUE(ro_html) TYPE REF TO lcl_html, render_menu - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper, - scripts - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. METHODS process_stage_list IMPORTING it_postdata TYPE cnht_post_data_tab @@ -46,6 +48,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. METHOD constructor. super->constructor( ). + ms_control-page_title = 'STAGE'. mo_repo = io_repo. ms_files = lcl_stage_logic=>get( mo_repo ). @@ -150,8 +153,8 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. ro_html->add('
LOCAL' ). IF lines( ms_files-local ) > 1. - ro_html->add_anchor( iv_txt = |{ lines( ms_files-local ) } diffs| - iv_act = |{ gc_action-go_diff }?key={ mo_repo->get_key( ) }| ). + ro_html->add_a( iv_txt = |{ lines( ms_files-local ) } diffs| + iv_act = |{ gc_action-go_diff }?key={ mo_repo->get_key( ) }| ). ENDIF. ro_html->add('
add' ). - ro_html->add_anchor( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ). + ro_html->add_a( iv_txt = 'diff' iv_act = |{ gc_action-go_diff }?{ lv_param }| ). ro_html->add( 'ignoreremove
' ). + ro_html->add( '
' ). IF lcl_path=>is_root( mv_cur_dir ) = abap_false. ro_html->add( render_parent_dir( ) ). @@ -169,7 +168,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CATCH lcx_exception INTO lx_error. ro_html->add( render_head_menu( iv_lstate = lv_lstate iv_rstate = lv_rstate ) ). - ro_html->add( lcl_gui_page_super=>render_error( lx_error ) ). + ro_html->add( lcl_gui_chunk_lib=>render_error( ix_error = lx_error ) ). ENDTRY. ENDMETHOD. "lif_gui_page~render @@ -233,7 +232,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. lv_wp_opt = gc_html_opt-crossout. lv_pull_opt = gc_html_opt-crossout. ELSE. - lv_pull_opt = gc_html_opt-emphas. + lv_pull_opt = gc_html_opt-strong. ENDIF. " Build branch drop-down ======================== @@ -283,12 +282,12 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. IF iv_lstate IS NOT INITIAL. " Something new at local lo_toolbar->add( iv_txt = 'Stage' iv_act = |{ gc_action-go_stage }?{ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). ENDIF. IF iv_rstate IS NOT INITIAL OR iv_lstate IS NOT INITIAL. " Any changes lo_toolbar->add( iv_txt = 'Show diff' iv_act = |{ gc_action-go_diff }?key={ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). ENDIF. CATCH lcx_exception ##NO_HANDLER. " authorization error or repository does not exist @@ -299,10 +298,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ELSE. lo_toolbar->add( iv_txt = 'Import ZIP' iv_act = |{ gc_action-zip_import }?{ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). lo_toolbar->add( iv_txt = 'Export ZIP' iv_act = |{ gc_action-zip_export }?{ lv_key }| - iv_opt = gc_html_opt-emphas ). + iv_opt = gc_html_opt-strong ). ENDIF. lo_toolbar->add( iv_txt = 'Advanced' @@ -312,7 +311,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. " Render ========================================== ro_html->add( '
' ). - ro_html->add( '
' ). + ro_html->add( '
' ). IF mv_show_folders = abap_true. ro_html->add( || ). @@ -349,17 +348,17 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CASE is_item-obj_type. WHEN 'PROG' OR 'CLAS' OR 'FUGR'. - rv_html = ||. + rv_html = lcl_html=>icon( 'code' ). WHEN 'W3MI' OR 'W3HT'. - rv_html = ||. + rv_html = lcl_html=>icon( 'bin' ). WHEN ''. rv_html = space. " no icon WHEN OTHERS. - rv_html = ||. + rv_html = lcl_html=>icon( 'obj' ). ENDCASE. IF is_item-is_dir = abap_true. - rv_html = ||. + rv_html = lcl_html=>icon( 'dir' ). ENDIF. ENDMETHOD. "get_item_icon @@ -436,7 +435,8 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ro_html->add( '
' ). ro_html->add( |{ is_item-changes } changes| ). - ro_html->add( render_item_state( iv1 = is_item-lstate iv2 = is_item-rstate ) ). + ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_item-lstate + iv2 = is_item-rstate ) ). ro_html->add( '
' ). ELSEIF is_item-changes > 0. @@ -448,9 +448,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. ig_object = is_item ). ro_html->add( '
' ). - ro_html->add_anchor( iv_txt = |view diff ({ is_item-changes })| - iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). - ro_html->add( render_item_state( iv1 = is_item-lstate iv2 = is_item-rstate ) ). + ro_html->add_a( iv_txt = |view diff ({ is_item-changes })| + iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). + ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = is_item-lstate + iv2 = is_item-rstate ) ). ro_html->add( '
' ). ELSE. @@ -461,10 +462,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. lv_difflink = lcl_html_action_utils=>file_encode( iv_key = mo_repo->get_key( ) ig_file = ls_file ). - ro_html->add_anchor( - iv_txt = 'view diff' - iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). - ro_html->add( render_item_state( iv1 = ls_file-lstate iv2 = ls_file-rstate ) ). + ro_html->add_a( iv_txt = 'view diff' + iv_act = |{ gc_action-go_diff }?{ lv_difflink }| ). + ro_html->add( lcl_gui_chunk_lib=>render_item_state( iv1 = ls_file-lstate + iv2 = ls_file-rstate ) ). ELSE. ro_html->add( ' ' ). ENDIF. @@ -490,7 +491,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. CREATE OBJECT ro_html. ro_html->add( '' ). - ro_html->add( || ). + ro_html->add( || ). ro_html->add( || ). IF mo_repo->is_offline( ) = abap_false. ro_html->add( || ). " Dummy for online @@ -503,14 +504,14 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. DATA: lv_path TYPE string, lv_encode TYPE string, - lo_html TYPE REF TO lcl_html_helper. + lo_html TYPE REF TO lcl_html. lv_path = iv_path. REPLACE FIRST OCCURRENCE OF mv_cur_dir IN lv_path WITH ''. lv_encode = lcl_html_action_utils=>dir_encode( lv_path ). CREATE OBJECT lo_html. - lo_html->add_anchor( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ). + lo_html->add_a( iv_txt = lv_path iv_act = |{ c_actions-change_dir }?{ lv_encode }| ). rv_html = lo_html->mv_html. ENDMETHOD. "build_dir_jump_link @@ -518,14 +519,14 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION. METHOD build_obj_jump_link. DATA: lv_encode TYPE string, - lo_html TYPE REF TO lcl_html_helper. + lo_html TYPE REF TO lcl_html. lv_encode = lcl_html_action_utils=>jump_encode( iv_obj_type = is_item-obj_type iv_obj_name = is_item-obj_name ). CREATE OBJECT lo_html. - lo_html->add_anchor( iv_txt = |{ is_item-obj_name }| - iv_act = |{ gc_action-jump }?{ lv_encode }| ). + lo_html->add_a( iv_txt = |{ is_item-obj_name }| + iv_act = |{ gc_action-jump }?{ lv_encode }| ). rv_html = lo_html->mv_html. ENDMETHOD. "build_obj_jump_link diff --git a/src/zabapgit_view_tutorial.prog.abap b/src/zabapgit_view_tutorial.prog.abap index d7ea7f729..1cc2c0105 100644 --- a/src/zabapgit_view_tutorial.prog.abap +++ b/src/zabapgit_view_tutorial.prog.abap @@ -2,18 +2,23 @@ *& Include ZABAPGIT_PAGE_TUTORIAL *&---------------------------------------------------------------------* -CLASS lcl_gui_view_tutorial DEFINITION FINAL INHERITING FROM lcl_gui_page_super. +CLASS lcl_gui_view_tutorial DEFINITION FINAL. PUBLIC SECTION. - METHODS lif_gui_page~render REDEFINITION. + INTERFACES lif_gui_page. + ALIASES render FOR lif_gui_page~render. PRIVATE SECTION. METHODS render_content - RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper. + RETURNING VALUE(ro_html) TYPE REF TO lcl_html. ENDCLASS. "lcl_gui_view_tutorial CLASS lcl_gui_view_tutorial IMPLEMENTATION. + METHOD lif_gui_page~on_event. + ev_state = gc_event_state-not_handled. + ENDMETHOD. " lif_gui_page~on_event. + METHOD lif_gui_page~render. CREATE OBJECT ro_html. @@ -34,10 +39,10 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION. _add '

Adding and cloning repos

'. _add '

    '. _add `
  • To clone a remote repo (e.g. from github) click `. - ro_html->add_anchor( iv_txt = '+ Clone' iv_act = gc_action-repo_clone ). + ro_html->add_a( iv_txt = '+ Clone' iv_act = gc_action-repo_clone ). _add ' from the top menu. This will copy a remote repo to your system.
  • '. _add `
  • To add a local package as a repo click `. - ro_html->add_anchor( iv_txt = '+ Offline' iv_act = gc_action-repo_newoffline ). + ro_html->add_a( iv_txt = '+ Offline' iv_act = gc_action-repo_newoffline ). _add ' from the top menu. This will track a repo which already exist in'. _add ' the system with abapGit. You''ll be able to attach it to remote origin'. _add ' or just serialize as a zip file
  • '. @@ -45,18 +50,20 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION. _add '

    Repository list and favorites

    '. _add '

      '. - _add '
    • To choose a repo press at the favorite bar.
    • '. - _add '
    • To favorite a repo click icon at repo toolbar.
    • '. + ro_html->add( |
    • To choose a repo press { + lcl_html=>icon( 'burger' ) } at the favorite bar.
    • | ). + ro_html->add( |
    • To favorite a repo click { + lcl_html=>icon( 'star-grey' ) } icon at repo toolbar.
    • | ). _add '

    '. _add '

    abapGit related repositories

    '. _add '

      '. _add '
    • '. - ro_html->add_anchor( iv_txt = 'install abapGit repo' iv_act = gc_action-abapgit_install ). + ro_html->add_a( iv_txt = 'install abapGit repo' iv_act = gc_action-abapgit_install ). _add ' - To keep abapGit up-to-date (or also to contribute) you need to'. _add 'install it as a repository.
    • '. _add '
    • '. - ro_html->add_anchor( iv_txt = 'install abapGit plugins' iv_act = gc_action-abapgit_install_pi ). + ro_html->add_a( iv_txt = 'install abapGit plugins' iv_act = gc_action-abapgit_install_pi ). _add ' - you can also install plugins to extend supported object types
    • '. _add '

    '.
{ mv_cur_dir }
{ lcl_html=>icon( 'dir' ) }{ build_dir_jump_link( '..' ) }