Merge pull request #526 from sbcgua/master

html refactoring, render sequence refactoring
This commit is contained in:
Lars Hvam 2017-01-07 11:22:05 +01:00 committed by GitHub
commit 33bb7d52bf
22 changed files with 745 additions and 517 deletions

View File

@ -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;

View File

@ -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.

View File

@ -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.

View File

@ -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( |<a{ lv_id }{ lv_class }{ lv_href }{ lv_style }>{ iv_txt }</a>| ).
rv_str = |<a{ lv_id }{ lv_class }{ lv_href }{ lv_style }>{ iv_txt }</a>|.
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 = |<img src="img/{ iv_name }"{ lv_alt }{ lv_class }{ lv_hint }> |.
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( |<a class="{ lv_class }">{ iv_as_droplist_with_label }</a>| ).
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( '<tr>' ).
ro_html->add( |<td class="icon">{ <ls_item>-ico }</td>| ).
ro_html->add( '<td width="100%">' ).
ro_html->add( |<td class="icon">{ lcl_html=>icon( <ls_item>-ico ) }</td>| ).
ro_html->add( '<td class="text">' ).
ENDIF.
ro_html->add_anchor( iv_txt = <ls_item>-txt
iv_act = <ls_item>-act
iv_opt = <ls_item>-opt
iv_typ = <ls_item>-typ
iv_class = lv_class ).
ro_html->add_a( iv_txt = <ls_item>-txt
iv_act = <ls_item>-act
iv_opt = <ls_item>-opt
iv_typ = <ls_item>-typ
iv_class = lv_class ).
IF iv_with_icons = abap_true.
ro_html->add( '</td>' ).

View File

@ -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( '<table class="w100"><tr>' ).
ro_html->add( '<td class="repo_name">' ).
ro_html->add_icon( iv_name = lv_icon iv_hint = lv_hint ).
ro_html->add( |<span class="name">{ io_repo->get_name( ) }</span>| ).
IF io_repo->is_offline( ) = abap_false.
lo_repo_online ?= io_repo.
ro_html->add( |<span class="url">{ lo_repo_online->get_url( ) }</span>| ).
ENDIF.
ro_html->add( '</td>' ).
ro_html->add( '<td class="repo_attr right">' ).
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( '<span class="bg_marker" title="background">BG</span>' ).
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( '<span>' ).
ro_html->add_a( iv_txt = io_repo->get_package( )
iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ).
ro_html->add( '</span>' ).
ENDIF.
ro_html->add( '</td>' ).
ro_html->add( '</tr></table>' ).
ENDMETHOD.
METHOD render_item_state.
DATA: lv_system TYPE string.
FIELD-SYMBOLS <state> TYPE char1.
rv_html = '<span class="state-block">'.
DO 2 TIMES.
CASE sy-index.
WHEN 1.
ASSIGN iv1 TO <state>.
lv_system = 'Local:'.
WHEN 2.
ASSIGN iv2 TO <state>.
lv_system = 'Remote:'.
ENDCASE.
CASE <state>.
WHEN gc_state-unchanged. "None or unchanged
IF iv1 = gc_state-added OR iv2 = gc_state-added.
rv_html = rv_html && |<span class="none" title="{ lv_system } Not exists">X</span>|.
ELSE.
rv_html = rv_html && |<span class="none" title="{ lv_system } No changes">&nbsp;</span>|.
ENDIF.
WHEN gc_state-modified. "Changed
rv_html = rv_html && |<span class="changed" title="{ lv_system } Modified">M</span>|.
WHEN gc_state-added. "Added new
rv_html = rv_html && |<span class="added" title="{ lv_system } Added new">A</span>|.
WHEN gc_state-mixed. "Multiple changes (multifile)
rv_html = rv_html && |<span class="mixed" title="{ lv_system } Multiple changes">&#x25A0;</span>|.
WHEN gc_state-deleted. "Deleted
rv_html = rv_html && |<span class="deleted" title="{ lv_system } Deleted">D</span>|.
ENDCASE.
ENDDO.
rv_html = rv_html && '</span>'.
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( |<span class="{ lv_class }">| ).
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( '</span>' ).
ENDMETHOD. "render_branch_span
METHOD render_error.
CREATE OBJECT ro_html.
ro_html->add( '<div class="dummydiv attention">' ).
IF ix_error IS BOUND.
ro_html->add( |Error: { ix_error->mv_text }| ).
ELSE.
ro_html->add( |Error: { iv_error }| ).
ENDIF.
ro_html->add( '</div>' ).
ENDMETHOD. "render_error
ENDCLASS. "lcl_gui_chunk_lib

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<PROGDIR>
<NAME>ZABAPGIT_HTML_CHUNKS</NAME>
<STATE>A</STATE>
<SQLX/>
<EDTX/>
<VARCL>X</VARCL>
<DBAPL/>
<DBNA/>
<CLAS/>
<TYPE/>
<OCCURS/>
<SUBC>I</SUBC>
<APPL/>
<SECU/>
<CNAM/>
<CDAT>0000-00-00</CDAT>
<UNAM/>
<UDAT>0000-00-00</UDAT>
<VERN/>
<LEVL/>
<RSTAT/>
<RMAND/>
<RLOAD>E</RLOAD>
<FIXPT/>
<SSET/>
<SDATE>0000-00-00</SDATE>
<STIME/>
<IDATE>0000-00-00</IDATE>
<ITIME/>
<LDBNAME/>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<KEY/>
<ENTRY>Include ZABAPGIT_HTML_CHUNKS</ENTRY>
<LENGTH>28</LENGTH>
<SPLIT/>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -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( '<table width="100%"><tr>' ).
ro_html->add( '<td class="repo_name">' ).
ro_html->add( |<img src="{ lv_icon }">| ).
ro_html->add( |<span class="name">{ io_repo->get_name( ) }</span>| ).
IF io_repo->is_offline( ) = abap_false.
lo_repo_online ?= io_repo.
ro_html->add( |<span class="url">{ lo_repo_online->get_url( ) }</span>| ).
ENDIF.
ro_html->add( '</td>' ).
ro_html->add( '<td class="repo_attr right">' ).
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 = |<img class="pad-sides" src="{ lv_icon }" title="Click to toggle favorite">|.
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( '<span class="bg_marker" title="background">BG</span>' ).
ENDIF.
IF io_repo->is_write_protected( ) = abap_true.
ro_html->add( '<img src="img/lock" title="locked">' ).
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( '<img src="img/pkg">' ).
ro_html->add( '<span>' ).
ro_html->add_anchor( iv_txt = io_repo->get_package( )
iv_act = |{ gc_action-jump_pkg }?{ io_repo->get_package( ) }| ).
ro_html->add( '</span>' ).
ENDIF.
ro_html->add( '</td>' ).
ro_html->add( '</tr></table>' ).
ENDMETHOD.
METHOD render_item_state.
DATA: lv_system TYPE string.
FIELD-SYMBOLS <state> TYPE char1.
rv_html = '<span class="state-block">'.
DO 2 TIMES.
CASE sy-index.
WHEN 1.
ASSIGN iv1 TO <state>.
lv_system = 'Local:'.
WHEN 2.
ASSIGN iv2 TO <state>.
lv_system = 'Remote:'.
ENDCASE.
CASE <state>.
WHEN gc_state-unchanged. "None or unchanged
IF iv1 = gc_state-added OR iv2 = gc_state-added.
rv_html = rv_html && |<span class="none" title="{ lv_system } Not exists">X</span>|.
ELSE.
rv_html = rv_html && |<span class="none" title="{ lv_system } No changes">&nbsp;</span>|.
ENDIF.
WHEN gc_state-modified. "Changed
rv_html = rv_html && |<span class="changed" title="{ lv_system } Modified">M</span>|.
WHEN gc_state-added. "Added new
rv_html = rv_html && |<span class="added" title="{ lv_system } Added new">A</span>|.
WHEN gc_state-mixed. "Multiple changes (multifile)
rv_html = rv_html && |<span class="mixed" title="{ lv_system } Multiple changes">&#x25A0;</span>|.
WHEN gc_state-deleted. "Deleted
rv_html = rv_html && |<span class="deleted" title="{ lv_system } Deleted">D</span>|.
ENDCASE.
ENDDO.
rv_html = rv_html && '</span>'.
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( |<span class="{ lv_class }">| ).
ro_html->add( '<img src="img/branch">' ).
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( '</span>' ).
ENDMETHOD. "render_branch_span
METHOD header.
METHOD html_head.
CREATE OBJECT ro_html.
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
ro_html->add( '<html>' ). "#EC NOTEXT
ro_html->add( '<head>' ). "#EC NOTEXT
ro_html->add( '<title>abapGit</title>' ). "#EC NOTEXT
ro_html->add( '<link rel="stylesheet" type="text/css" href="css/common.css">' ).
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ). "#EC NOTEXT
ro_html->add( '<meta http-equiv="X-UA-Compatible" content="IE=11,10,9,8" />' ). "#EC NOTEXT
ro_html->add( '<script type="text/javascript" src="js/common.js"></script>' ). "#EC NOTEXT
ro_html->add( '</head>' ). "#EC NOTEXT
ro_html->add( '<body>' ). "#EC NOTEXT
ENDMETHOD. "render html header
ro_html->add( '<title>abapGit</title>' ). "#EC NOTEXT
ro_html->add( '<link rel="stylesheet" type="text/css" href="css/common.css">' ).
ro_html->add( '<script type="text/javascript" src="js/common.js"></script>' ). "#EC NOTEXT
ro_html->add( '</head>' ). "#EC NOTEXT
ENDMETHOD. "html_head
METHOD title.
CREATE OBJECT ro_html.
ro_html->add( '<div id="header">' ). "#EC NOTEXT
ro_html->add( '<table width="100%"><tr>' ). "#EC NOTEXT
ro_html->add( '<table class="w100"><tr>' ). "#EC NOTEXT
ro_html->add( '<td class="logo">' ). "#EC NOTEXT
ro_html->add( |<a href="sapevent:{ gc_action-abapgit_home }">| ). "#EC NOTEXT
ro_html->add( '<img src="img/logo">' ). "#EC NOTEXT
ro_html->add( '</a>' ). "#EC NOTEXT
ro_html->add( '</td>' ). "#EC NOTEXT
ro_html->add( |<td class="logo">{
lcl_html=>a( iv_txt = '<img src="img/logo" alt="logo">'
iv_act = gc_action-abapgit_home )
}</td>| ). "#EC NOTEXT
ro_html->add( '<td class="headpad"><span class="page_title">' ). "#EC NOTEXT
ro_html->add( |&#x25BA; { iv_title }| ). "#EC NOTEXT
ro_html->add( '</span></td>' ). "#EC NOTEXT
ro_html->add( |<td class="headpad"><span class="page_title"> &#x25BA; {
ms_control-page_title
}</span></td>| ). "#EC NOTEXT
IF io_menu IS BOUND.
IF ms_control-page_menu IS BOUND.
ro_html->add( '<td class="headpad right">' ). "#EC NOTEXT
ro_html->add( io_menu->render( ) ).
ro_html->add( ms_control-page_menu->render( ) ).
ro_html->add( '</td>' ). "#EC NOTEXT
ENDIF.
@ -264,47 +112,74 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
CREATE OBJECT ro_html.
ro_html->add( '<div id="footer">' ). "#EC NOTEXT
ro_html->add( '<img src="img/logo" >' ). "#EC NOTEXT
ro_html->add( '<table width="100%"><tr><td width="40%"></td><td>' ). "#EC NOTEXT
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ). "#EC NOTEXT
ro_html->add( '</td><td id="debug-output" width="40%"></td></tr></table>' ). "#EC NOTEXT
ro_html->add( '<img src="img/logo" alt="logo">' ). "#EC NOTEXT
ro_html->add( '<table class="w100"><tr>' ). "#EC NOTEXT
ro_html->add( '<td class="w40"></td>' ). "#EC NOTEXT
ro_html->add( |<td><span class="version">{ gc_abap_version }</span></td>| ). "#EC NOTEXT
ro_html->add( '<td id="debug-output" class="w40"></td>' ). "#EC NOTEXT
ro_html->add( '</tr></table>' ). "#EC NOTEXT
ro_html->add( '</div>' ). "#EC NOTEXT
ENDMETHOD. "footer
METHOD redirect.
CREATE OBJECT ro_html.
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
ro_html->add( '<html>' ). "#EC NOTEXT
ro_html->add( '<head>' ). "#EC NOTEXT
ro_html->add( |<meta http-equiv="refresh" content="0; url={
ms_control-redirect_url }">| ). "#EC NOTEXT
ro_html->add( '</head>'). "#EC NOTEXT
ro_html->add( '</html>'). "#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( '<!DOCTYPE html>' ). "#EC NOTEXT
ro_html->add( '<html>' ). "#EC NOTEXT
ro_html->add( html_head( ) ).
ro_html->add( '<body>' ). "#EC NOTEXT
ro_html->add( title( ) ).
ro_html->add( render_content( ) ).
ro_html->add( footer( ) ).
ro_html->add( '</body>' ). "#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( '<script type="text/javascript">' ).
ro_html->add( io_include_script ).
ro_html->add( lo_script ).
ro_html->add( 'debugOutput("js: OK");' ).
ro_html->add( '</script>' ).
ENDIF.
ro_html->add( '</html>'). "#EC NOTEXT
ENDMETHOD. "render html footer & logo
ENDMETHOD. " lif_gui_page~render.
METHOD render_error.
CREATE OBJECT ro_html.
ro_html->add( '<div class="dummydiv attention">' ).
ro_html->add( |Error: { ix_error->mv_text }| ).
ro_html->add( '</div>' ).
ENDMETHOD. "render_error
METHOD redirect.
CREATE OBJECT ro_html.
ro_html->add( '<!DOCTYPE html>' ). "#EC NOTEXT
ro_html->add( '<html><head>' ). "#EC NOTEXT
ro_html->add( |<meta http-equiv="refresh" content="0; url={ iv_url }">| ). "#EC NOTEXT
ro_html->add( '</head></html>'). "#EC NOTEXT
ENDMETHOD.
METHOD lif_gui_page~on_event.
ev_state = gc_event_state-not_handled.
ENDMETHOD. "lif_gui_page~on_event
ENDCLASS.
ENDCLASS. "lcl_gui_page

View File

@ -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( '<div id="toc">' ).
LOOP AT mt_text INTO lv_text.
ro_html->add( '<pre>' && lv_text && '</pre><br>' ).
ENDLOOP.
ro_html->add( '</div>' ).
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( '<br>' ).
ro_html->add( '<u>Method</u><br>' ) ##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.

View File

@ -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( '<div id="toc">' ).
ro_html->add( body( ) ).
ro_html->add( '</div>' ).
ro_html->add( footer( ) ).
ENDMETHOD.
ENDMETHOD. "render_content
ENDCLASS.

View File

@ -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( '<div class="repo">' ).
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( '</div>' ).
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'

View File

@ -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( '<div class="db_entry">' ).
ro_html->add( '<table class="toolbar"><tr><td>' ).
@ -56,26 +56,25 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
| <td>{ ms_key-value }</td></tr></table>| ).
ro_html->add( '</td><td class="right">' ).
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( '</td></tr></table>' ).
ro_html->add( |<pre>{ lv_data }</pre>| ).
ro_html->add( '</div>' ).
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( '<div class="db_entry">' ).
" 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( '<div class="paddings">' ).
ro_html->add( lo_toolbar->render( ) ).
@ -143,16 +140,17 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
ro_html->add( '</div>' ). "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( '<div class="db_list">' ).
ro_html->add( '<table class="db_tab">' ).
@ -220,9 +219,7 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
ro_html->add( '</table>' ).
ro_html->add( '</div>' ).
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 '<OFFLINE/>'
IN is_data-data_str IGNORING CASE MATCH COUNT lv_cnt.
IF lv_cnt > 0.
rv_text = |<b>On-line</b>, Name: <b>{ lcl_url=>name( rv_text ) }</b>|.
rv_text = |<strong>On-line</strong>, Name: <strong>{
lcl_url=>name( rv_text ) }</strong>|.
ELSE.
rv_text = |Off-line, Name: <b>{ rv_text }</b>|.
rv_text = |Off-line, Name: <strong>{ rv_text }</strong>|.
ENDIF.
WHEN 'BACKGROUND'.

View File

@ -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( '<div id="debug_info" class="debug_container">' ).
ro_html->add( render_debug_info( ) ).
ro_html->add( render_supported_object_types( ) ).
ro_html->add( '</div>' ).
ro_html->add( footer( io_include_script = scripts( ) ) ).
ENDMETHOD.
ENDMETHOD. "render_content
METHOD render_debug_info.

View File

@ -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: <ls_status> 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( |<span class="diff_banner diff_del">- { ls_stats-delete }</span>| ).
lo_html->add( |<span class="diff_banner diff_upd">~ { ls_stats-update }</span>| ).
lo_html->add( |<span class="diff_name">{ is_diff-filename }</span>| ). "#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( '</div>' ). "#EC NOTEXT
ro_html = lo_html.
@ -221,7 +224,7 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
" Content
ro_html->add( '<div class="diff_content">' ). "#EC NOTEXT
ro_html->add( '<table width="100%" class="diff_tab">' ). "#EC NOTEXT
ro_html->add( '<table class="diff_tab">' ). "#EC NOTEXT
ro_html->add( render_table_head( ) ).
ro_html->add( render_lines( is_diff ) ).
ro_html->add( '</table>' ). "#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

View File

@ -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

View File

@ -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 = '<img src="img/repo_offline">'.
lv_icon = 'repo_offline'.
ELSE.
lv_icon = '<img src="img/repo_online">'.
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( '<table width="100%"><tr>' ).
ro_html->add( '<td class="pad-sides"><img src="img/star"></td>' ).
ro_html->add( '<table class="w100"><tr>' ).
ro_html->add( |<td class="pad-sides">{
lcl_html=>icon( iv_name = 'star' iv_alt = 'Favs' iv_hint = 'Favorites' )
}</td>| ).
ro_html->add( '<td class="pad-sides" width="100%">' ). " Maximize width
ro_html->add( '<td class="pad-sides w100">' ). " Maximize width
IF lo_favbar->count( ) > 0.
ro_html->add( lo_favbar->render( iv_sort = abap_true ) ).
ELSE.
ro_html->add( `<span class="grey">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( '</span>' ).
ro_html->add( |<span class="grey">No favorites so far. For more info please check {
lcl_html=>a( iv_txt = 'tutorial' iv_act = gc_action-go_tutorial )
}</span>| ).
ENDIF.
ro_html->add( '</td>' ).
ro_html->add( '<td class="right">' ).
ro_html->add( lo_allbar->render(
iv_as_droplist_with_label = '<img class="pad4px" src="img/burger">'
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( |<div class="repo" id="repo{ io_repo->get_key( ) }">| ).
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( '</div>' ).
ENDMETHOD. "render_repo

View File

@ -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 <ls_show>
@ -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( '<div id="toc">' ).
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( '</b>' ).
ro_html->add( '</div>' ).
ro_html->add( footer( ) ).
ENDMETHOD.
ENDMETHOD. "render_content
ENDCLASS.

View File

@ -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( |<hr>| ).
ro_html->add( render_development_internals( ) ).
ro_html->add( render_form_end( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
ENDMETHOD. "render_content
METHOD render_proxy.

View File

@ -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('<thead><tr>').
ro_html->add('<th></th><th colspan="2">LOCAL</th><th>' ).
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('</th></tr></thead>').
ro_html->add('<tbody class="local">').
@ -200,7 +203,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
ig_file = is_file ).
ro_html->add( '<td class="cmd"><a>add</a></td>' ).
ro_html->add( '<td>' ).
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( '</td>' ).
WHEN 'remote'.
ro_html->add( '<td class="cmd"><a>ignore</a><a>remove</a></td>' ).
@ -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( '<div class="repo">' ).
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( '</div>' ).
ro_html->add( footer( scripts( ) ) ).
ENDMETHOD. "lif_gui_page~render
ENDMETHOD. "render_content
METHOD render_menu.
CREATE OBJECT ro_html.
ro_html->add( '<div class="paddings">' ).
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( '</div>' ).

View File

@ -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,

View File

@ -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

View File

@ -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( '<table width="100%" class="repo_tab">' ).
ro_html->add( '<table class="repo_tab">' ).
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( '<div class="paddings">' ).
ro_html->add( '<table width="100%"><tr>' ).
ro_html->add( '<table class="w100"><tr>' ).
IF mv_show_folders = abap_true.
ro_html->add( |<td class="current_dir">{ mv_cur_dir }</td>| ).
@ -349,17 +348,17 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
CASE is_item-obj_type.
WHEN 'PROG' OR 'CLAS' OR 'FUGR'.
rv_html = |<img src="img/code">|.
rv_html = lcl_html=>icon( 'code' ).
WHEN 'W3MI' OR 'W3HT'.
rv_html = |<img src="img/bin">|.
rv_html = lcl_html=>icon( 'bin' ).
WHEN ''.
rv_html = space. " no icon
WHEN OTHERS.
rv_html = |<img src="img/obj">|.
rv_html = lcl_html=>icon( 'obj' ).
ENDCASE.
IF is_item-is_dir = abap_true.
rv_html = |<img src="img/dir">|.
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( '<div>' ).
ro_html->add( |<span class="grey">{ is_item-changes } changes</span>| ).
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( '</div>' ).
ELSEIF is_item-changes > 0.
@ -448,9 +448,10 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
ig_object = is_item ).
ro_html->add( '<div>' ).
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( '</div>' ).
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( '&nbsp;' ).
ENDIF.
@ -490,7 +491,7 @@ CLASS lcl_gui_view_repo_content IMPLEMENTATION.
CREATE OBJECT ro_html.
ro_html->add( '<tr class="folder">' ).
ro_html->add( |<td class="icon"><img src="img/dir"></td>| ).
ro_html->add( |<td class="icon">{ lcl_html=>icon( 'dir' ) }</td>| ).
ro_html->add( |<td class="object" colspan="2">{ build_dir_jump_link( '..' ) }</td>| ).
IF mo_repo->is_offline( ) = abap_false.
ro_html->add( |<td colspan="2"></td>| ). " 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

View File

@ -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 '<h2>Adding and cloning repos</h2>'.
_add '<p><ul>'.
_add `<li>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.</li>'.
_add `<li>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</li>'.
@ -45,18 +50,20 @@ CLASS lcl_gui_view_tutorial IMPLEMENTATION.
_add '<h2>Repository list and favorites</h2>'.
_add '<p><ul>'.
_add '<li>To choose a repo press <img src="img/burger"> at the favorite bar.</li>'.
_add '<li>To favorite a repo click <img src="img/star-grey"> icon at repo toolbar.</li>'.
ro_html->add( |<li>To choose a repo press {
lcl_html=>icon( 'burger' ) } at the favorite bar.</li>| ).
ro_html->add( |<li>To favorite a repo click {
lcl_html=>icon( 'star-grey' ) } icon at repo toolbar.</li>| ).
_add '</ul></p>'.
_add '<h2>abapGit related repositories</h2>'.
_add '<p><ul>'.
_add '<li>'.
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.</li>'.
_add '<li>'.
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</li>'.
_add '</ul></p>'.