diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap
index 4ecc74b25..a9cee3b0b 100644
--- a/src/zabapgit_definitions.prog.abap
+++ b/src/zabapgit_definitions.prog.abap
@@ -171,6 +171,7 @@ CONSTANTS: BEGIN OF gc_action,
repo_toggle_fav TYPE string VALUE 'repo_toggle_fav',
abapgit_home TYPE string VALUE 'abapgit_home',
+ abapgit_wiki TYPE string VALUE 'abapgit_wiki',
abapgit_install TYPE string VALUE 'abapgit_install',
zip_import TYPE string VALUE 'zip_import',
@@ -203,6 +204,8 @@ CONSTANTS: BEGIN OF gc_action,
go_branch_overview TYPE string VALUE 'go_branch_overview',
go_playground TYPE string VALUE 'go_playground',
go_debuginfo TYPE string VALUE 'go_debuginfo',
- go_settings type string value 'go_settings',
+ go_settings TYPE STRING VALUE 'go_settings',
+ go_tutorial TYPE STRING VALUE 'go_tutorial',
jump TYPE string VALUE 'jump',
+ jump_pkg TYPE string VALUE 'jump_pkg',
END OF gc_action.
\ No newline at end of file
diff --git a/src/zabapgit_gui_pages.prog.abap b/src/zabapgit_gui_pages.prog.abap
index 255a32c09..24423c52d 100644
--- a/src/zabapgit_gui_pages.prog.abap
+++ b/src/zabapgit_gui_pages.prog.abap
@@ -13,6 +13,7 @@ INCLUDE zabapgit_repo_browser_util.
* Components and templates
INCLUDE zabapgit_view_repo.
+INCLUDE zabapgit_view_tutorial.
* Pages
INCLUDE zabapgit_page_commit.
diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap
index e148953cb..8f8f05fdb 100644
--- a/src/zabapgit_gui_router.prog.abap
+++ b/src/zabapgit_gui_router.prog.abap
@@ -96,15 +96,22 @@ CLASS lcl_gui_router IMPLEMENTATION.
WHEN gc_action-go_playground. " Create playground page
ei_page = get_page_playground( ).
ev_state = gc_event_state-new_page.
+ WHEN gc_action-go_tutorial. " Go to tutorial
+ lcl_app=>user( )->set_repo_show( '' ). " Clear show_id
+ ev_state = gc_event_state-re_render. " Assume we are on main page
" SAP GUI actions
- WHEN gc_action-jump.
+ WHEN gc_action-jump. " Open object editor
lcl_html_action_utils=>jump_decode( EXPORTING iv_string = iv_getdata
IMPORTING ev_obj_type = ls_item-obj_type
ev_obj_name = ls_item-obj_name ).
lcl_objects=>jump( ls_item ).
ev_state = gc_event_state-no_more_act.
+ WHEN gc_action-jump_pkg. " Open SE80
+ lcl_services_repo=>open_se80( |{ iv_getdata }| ).
+ ev_state = gc_event_state-no_more_act.
+
" DB actions
WHEN gc_action-db_display OR gc_action-db_edit. " DB Display/Edit
ei_page = get_page_db_by_name( iv_name = iv_action iv_getdata = iv_getdata ).
@@ -125,6 +132,9 @@ CLASS lcl_gui_router IMPLEMENTATION.
WHEN gc_action-abapgit_home. " Go abapGit homepage
lcl_services_abapgit=>open_abapgit_homepage( ).
ev_state = gc_event_state-no_more_act.
+ WHEN gc_action-abapgit_wiki. " Go abapGit wikipage
+ lcl_services_abapgit=>open_abapgit_wikipage( ).
+ ev_state = gc_event_state-no_more_act.
WHEN gc_action-abapgit_install. " Install abapGit
lcl_services_abapgit=>install_abapgit( ).
ev_state = gc_event_state-re_render.
diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap
index 8d99436c1..0f5d31f6f 100644
--- a/src/zabapgit_page.prog.abap
+++ b/src/zabapgit_page.prog.abap
@@ -137,7 +137,10 @@ CLASS lcl_gui_page_super IMPLEMENTATION.
IF iv_show_package = abap_true.
ro_html->add( '' ).
- ro_html->add( |{ io_repo->get_package( ) }| ).
+ 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( '' ).
diff --git a/src/zabapgit_page_debug.prog.abap b/src/zabapgit_page_debug.prog.abap
index 151ca4017..e7bd0446a 100644
--- a/src/zabapgit_page_debug.prog.abap
+++ b/src/zabapgit_page_debug.prog.abap
@@ -6,10 +6,9 @@ CLASS lcl_gui_page_debuginfo DEFINITION FINAL INHERITING FROM lcl_gui_page_super
PUBLIC SECTION.
METHODS lif_gui_page~render REDEFINITION.
+ PRIVATE SECTION.
METHODS scripts
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
-
- PRIVATE SECTION.
METHODS render_debug_info
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_supported_object_types
diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap
index a294c53a8..934a69cb1 100644
--- a/src/zabapgit_page_main.prog.abap
+++ b/src/zabapgit_page_main.prog.abap
@@ -114,9 +114,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
METHOD lif_gui_page~render.
- DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
- lx_error TYPE REF TO lcx_exception,
- lo_repo LIKE LINE OF lt_repos.
+ DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt,
+ lx_error TYPE REF TO lcx_exception,
+ lo_tutorial TYPE REF TO lcl_gui_view_tutorial,
+ lo_repo LIKE LINE OF lt_repos.
retrieve_active_repo( ). " Get and validate key of user default repo
@@ -137,8 +138,13 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
IF lines( lt_repos ) = 0 AND lx_error IS INITIAL.
ro_html->add( render_explore( ) ).
ELSE.
- lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
- ro_html->add( render_repo( lo_repo ) ).
+ IF mv_show IS INITIAL.
+ CREATE OBJECT lo_tutorial.
+ ro_html->add( lo_tutorial->lif_gui_page~render( ) ).
+ ELSE.
+ lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
+ ro_html->add( render_repo( lo_repo ) ).
+ ENDIF.
ENDIF.
ro_html->add( footer( ) ).
@@ -165,17 +171,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
lo_repo = lcl_app=>repo_srv( )->get( mv_show ).
CATCH lcx_exception.
CLEAR mv_show.
+ lcl_app=>user( )->set_repo_show( mv_show ).
ENDTRY.
ENDIF.
- IF mv_show IS INITIAL. " Fall back to first available repo
- READ TABLE lt_repos INTO lo_repo INDEX 1.
- IF sy-subrc = 0.
- mv_show = lo_repo->get_key( ).
- lcl_app=>user( )->set_repo_show( mv_show ).
- ENDIF.
- ENDIF.
-
IF lv_show_old <> mv_show AND NOT mv_show IS INITIAL.
CREATE OBJECT mo_repo_content
EXPORTING
@@ -186,20 +185,25 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
METHOD build_main_menu.
- DATA lo_betasub TYPE REF TO lcl_html_toolbar.
+ DATA: lo_advsub TYPE REF TO lcl_html_toolbar,
+ lo_helpsub TYPE REF TO lcl_html_toolbar.
CREATE OBJECT ro_menu.
- CREATE OBJECT lo_betasub.
+ CREATE OBJECT lo_advsub.
+ CREATE OBJECT lo_helpsub.
- lo_betasub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Object to files' iv_act = gc_action-zip_object ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Test changed by' iv_act = c_actions-changed_by ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT.
- lo_betasub->add( iv_txt = 'Settings' iv_act = gc_action-go_settings ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Object to files' iv_act = gc_action-zip_object ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Test changed by' iv_act = c_actions-changed_by ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT.
+ lo_advsub->add( iv_txt = 'Settings' iv_act = gc_action-go_settings ) ##NO_TEXT.
+
+ lo_helpsub->add( iv_txt = 'Tutorial' iv_act = gc_action-go_tutorial ) ##NO_TEXT.
+ lo_helpsub->add( iv_txt = 'abapGit wiki' iv_act = gc_action-abapgit_wiki ) ##NO_TEXT.
ro_menu->add( iv_txt = 'Clone' iv_act = gc_action-repo_clone ) ##NO_TEXT.
ro_menu->add( iv_txt = 'Explore' iv_act = gc_action-go_explore ) ##NO_TEXT.
@@ -207,7 +211,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
IF lcl_services_abapgit=>needs_installation( ) = abap_true.
ro_menu->add( iv_txt = 'Get abapGit' iv_act = gc_action-abapgit_install ) ##NO_TEXT.
ENDIF.
- ro_menu->add( iv_txt = 'Advanced' io_sub = lo_betasub ) ##NO_TEXT.
+ ro_menu->add( iv_txt = 'Advanced' io_sub = lo_advsub ) ##NO_TEXT.
+ ro_menu->add( iv_txt = 'Help' io_sub = lo_helpsub ) ##NO_TEXT.
ENDMETHOD. "build main_menu
@@ -285,9 +290,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
IF lo_favbar->count( ) > 0.
ro_html->add( lo_favbar->render( iv_sort = abap_true ) ).
ELSE.
- ro_html->add( 'No favorites found. Please'
- && ' click
icon repo toolbar to add'
- && ' it as favourite. Choose a repo there →' ).
+ 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( '' ).
ENDIF.
ro_html->add( '' ).
diff --git a/src/zabapgit_page_settings.prog.abap b/src/zabapgit_page_settings.prog.abap
index a81637801..4f11a9d5c 100644
--- a/src/zabapgit_page_settings.prog.abap
+++ b/src/zabapgit_page_settings.prog.abap
@@ -3,14 +3,22 @@
*&---------------------------------------------------------------------*
CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
+
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.
+
PRIVATE SECTION.
+
+ DATA:
+ mo_settings TYPE REF TO lcl_settings,
+ mv_error TYPE abap_bool.
+
METHODS render_proxy
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS render_development_internals
@@ -32,14 +40,13 @@ CLASS lcl_gui_page_settings DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
RAISING
lcx_exception.
METHODS read_settings.
- DATA:
- mo_settings TYPE REF TO lcl_settings,
- mv_error TYPE abap_bool.
+
ENDCLASS.
CLASS lcl_gui_page_settings IMPLEMENTATION.
METHOD lif_gui_page~render.
+
CREATE OBJECT ro_html.
read_settings( ).
@@ -52,10 +59,15 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
ro_html->add( |