Refactor gui_page logic, part1

# Conflicts:
#	zabapgit.prog.abap
This commit is contained in:
atsy 2016-05-21 12:33:30 +02:00
commit c7904ba87a

View File

@ -15534,14 +15534,6 @@ CLASS lcl_gui DEFINITION FINAL.
CLASS-METHODS show_url
IMPORTING iv_url TYPE clike.
CLASS-METHODS header
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
CLASS-METHODS footer
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
CLASS-METHODS get_logo_src
RETURNING VALUE(rv_src) TYPE string.
PRIVATE SECTION.
CLASS-DATA: gi_page TYPE REF TO lif_gui_page,
@ -15554,9 +15546,6 @@ CLASS lcl_gui DEFINITION FINAL.
CLASS-METHODS view
IMPORTING iv_html TYPE string.
CLASS-METHODS: css
RETURNING VALUE(rv_html) TYPE string.
ENDCLASS. "lcl_gui DEFINITION
*----------------------------------------------------------------------*
@ -17501,258 +17490,6 @@ CLASS lcl_gui IMPLEMENTATION.
ENDMETHOD.
METHOD css.
rv_html = '<style type="text/css">' && gc_newline &&
'body {' && gc_newline && "#EC NOTEXT
' font-family: Arial,Helvetica,sans-serif;' && gc_newline && "#EC NOTEXT
' background: #E8E8E8;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'div#header {' && gc_newline &&
' display: block;' && gc_newline &&
' margin-top: 0.5em;' && gc_newline &&
' padding-bottom: 0.5em;' && gc_newline &&
' border-bottom: 3px double lightgrey;' && gc_newline &&
'}' && gc_newline &&
'div#toc {' && gc_newline &&
' display: block;' && gc_newline &&
' background-color: #f2f2f2;' && gc_newline &&
' padding: 1em;' && gc_newline &&
'}' && gc_newline &&
'div.repo {' && gc_newline &&
' display: block;' && gc_newline &&
' margin-top: 3px;' && gc_newline &&
' background-color: #f2f2f2;' && gc_newline &&
' padding: 0.7em ' && gc_newline &&
'}' && gc_newline &&
'div#footer {' && gc_newline &&
' display: block;' && gc_newline &&
' margin-bottom: 1em;' && gc_newline &&
' padding-top: 0.5em;' && gc_newline &&
' border-top: 3px double lightgrey;' && gc_newline &&
' color: grey;' && gc_newline &&
' text-align: center;' && gc_newline &&
'}' && gc_newline &&
'.mixedbar {' && gc_newline &&
' width: 98%; /*IE7 compat5 mode workaround, OMG it so sucks!*/' && gc_newline &&
'}' && gc_newline &&
'.logobar tr {' && gc_newline &&
' vertical-align: middle;' && gc_newline &&
'}' && gc_newline &&
'.logobar td.menu {' && gc_newline &&
' padding-top: 1em;' && gc_newline &&
'}' && gc_newline &&
'.logobar img {' && gc_newline &&
' border: 0px;' && gc_newline &&
'}' && gc_newline &&
'.right {' && gc_newline &&
' text-align:right;' && gc_newline &&
'}' && gc_newline &&
'.menu a {' && gc_newline &&
' padding-left: 0.5em;' && gc_newline &&
' padding-right: 0.5em;' && gc_newline &&
' border-right: 1px solid lightgrey;' && gc_newline &&
'}' && gc_newline &&
'.menu_end {' && gc_newline &&
' border-right: 0px !important;' && gc_newline &&
'}' && gc_newline &&
'.repo_name span {' && gc_newline &&
' font-weight: bold;' && gc_newline &&
' font-size: x-large;' && gc_newline &&
'}' && gc_newline &&
'.repo_attr {' && gc_newline &&
' color: grey;' && gc_newline &&
' font-size: smaller;' && gc_newline &&
'}' && gc_newline &&
'.repo_attr span {' && gc_newline &&
' margin-right: 1em;' && gc_newline &&
'}' && gc_newline &&
'.repo_attr input {' && gc_newline &&
' background-color: transparent;' && gc_newline &&
' border-style: none;' && gc_newline &&
' text-overflow: ellipsis;' && gc_newline &&
' color: grey;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab {' && gc_newline &&
' border: 1px solid #DDD;' && gc_newline &&
' border-radius: 3px;' && gc_newline &&
' background: #ffffff;' && gc_newline &&
' margin-top: 1em;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab tr.unsupported {' && gc_newline &&
' color: lightgrey;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab td {' && gc_newline &&
' border-top: 1px solid #eee;' && gc_newline &&
' vertical-align: top;' && gc_newline &&
' padding-top: 2px;' && gc_newline &&
' padding-bottom: 2px;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab td.icon {' && gc_newline &&
' padding-left: 10px;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab td.type {' && gc_newline &&
' width: 3.5em;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab td.object {' && gc_newline &&
' padding-left: 0.5em;' && gc_newline &&
'}' && gc_newline &&
'.repo_tab td.files {' && gc_newline &&
' padding-left: 0.5em;' && gc_newline &&
' padding-right: 0.5em;' && gc_newline &&
'}' && gc_newline &&
'a, a:visited {' && gc_newline &&
' color: #4078c0;' && gc_newline &&
' text-decoration: none;' && gc_newline &&
'}' && gc_newline &&
'a:hover, a:active {' && gc_newline &&
' text-decoration: underline;' && gc_newline &&
'}' && gc_newline &&
'a.grey:link {' && gc_newline && "#EC NOTEXT
' color: grey;' && gc_newline && "#EC NOTEXT
' font-size: smaller;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'a.grey:visited {' && gc_newline && "#EC NOTEXT
' color: grey;' && gc_newline && "#EC NOTEXT
' font-size: smaller;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'a.plain:link {' && gc_newline && "#EC NOTEXT
' color: black;' && gc_newline && "#EC NOTEXT
' text-decoration: none;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'a.plain:visited {' && gc_newline && "#EC NOTEXT
' color: black;' && gc_newline && "#EC NOTEXT
' text-decoration: none;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'a.bkg:link {' && gc_newline && "#EC NOTEXT
' color: #E8E8E8;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'a.bkg:visited {' && gc_newline && "#EC NOTEXT
' color: #E8E8E8;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'h1 {' && gc_newline && "#EC NOTEXT
' display: inline;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'h2 {' && gc_newline && "#EC NOTEXT
' display: inline;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'h3 {' && gc_newline && "#EC NOTEXT
' display: inline;' && gc_newline && "#EC NOTEXT
' color: grey;' && gc_newline && "#EC NOTEXT
' font-weight:normal;' && gc_newline && "#EC NOTEXT
' font-size: smaller;' && gc_newline && "#EC NOTEXT
'}' && gc_newline &&
'pre {' && gc_newline &&
' display: inline;' && gc_newline &&
'}' && gc_newline &&
'</style>' && gc_newline.
ENDMETHOD. "render_css
METHOD footer.
CREATE OBJECT ro_html.
ro_html->add( '<div id="footer">' ).
ro_html->add( |<img src="{ get_logo_src( ) }" ><br>| ).
ro_html->add( gc_abap_version ).
ro_html->add( '</div>' ).
ro_html->add( '</body>' ).
ro_html->add( '</html>').
ENDMETHOD. "render_footer
METHOD get_logo_src.
rv_src =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhk' &&
'iAAAAAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA8' &&
'VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQcEkDJWmTltLStGkoDC' &&
'kzwBAuCemUlksDNCkhJTTTljJpZhIuBQxxAWPvyuYiW7UkG8IlUByIsS1sLEu75+0fu5JXu9/et' &&
'AJz0TOzM/rOec85765+37m+3yczY8w0NU3qrwv9npfaHfx02pPPd469sgk+7misYnyjpWXy5IOG' &&
'7kd8ZjjNjEtr13TdOm7eTfCxwo2lUJAQASRu2dnRfMn4uDbBx42yxZhPiMNMCHKCsVK2GGuqqqo' &&
'QUwrZTAhygrFQshjfaGmZ/M7yxQtmxGL9/qDqzwLxQvYTgpygXEoS4/DQ7LE1O05atLBu1YZdE4' &&
'KcYLwpupoOmCO+5Z2dXPfExk07Tm2ZroGhBwX1wAygKqiOiVX2Rw9Jam/gyH0wuGGzvTEudRYSY' &&
'4HFyogghxN2n7SwIendvcCioLoOtCCXNeqohOf0oDwPq9f3Wt/77dOHlWhYzUj/BRybTnrGEnZO' &&
'5wv2m0rqDezJoOiqeZbzegzpk6TVPPWJTT39y5svMogF1ZcesjlQgkwYp4F+EJQXwv4E+MiLUZJ' &&
'aF7AIcRq4hWZ2mMRhQD/oZcErXv7FScaja3rt/wpU9E/sFyLACQq57wB/XIl/gWIstn2TxpHVre' &&
'7ZW71p8sFDeQscSEHKu3pTBadNH2Lq61VT57iwNazLgaNSqYaUaWXLDZCJIbBog3tK2A2xHns0o' &&
'Mrm3CRrqdTPnAVMiUIEmLlz2XGLMxNmH7YrifFcoUIHalHj8f8p6UfAO+932weStno1zghps6Q7' &&
'GBFiUYRxopkeaZ2vIwLyfxtQ4vV8lbWHNScacf+T/vwqn90oMZYhRADJ+bv725vmj6Q8tHWffPK' &&
'UD6IgO/tsfawneRHYd97Pdg8kSyJaZiGtBY4pYPYOkH84C0Cyv8tKSiK7OZ99EpYAJ2V8AhkRY5' &&
'lCHGaxhaq+BLCzY/EXd5y0aOG0td1vf1AFCWCw7/1u80DQEtahQvcB03MyjQfM7Hwnmxfv9dPiv' &&
'X5SssqOwuzPSqk71mN3ymw5ZtdKdmVIdly8xx7JZ29yy0qptwrGLMRRCA6T1w93nLTo5Lq13Zv6' &&
'25tOMRd6DLF4v0lWmQO8qPko45y7TWaHZyUnwa6M99mN2fYbuu1V4K5oxF1B4Z4UgFifrQHWFLN' &&
'bvkh1QheV5DNNTZMqFWIGs5zX48M95PTqGa3TZ4erzbvj8/WUErf0L2++uNyGJLn2Js1oDeuYlk' &&
'bNbmlRdeXup2hq0qS2es2VlHMDFaOlRdXL5uuwlnodG23QTEljCkbJV3d7WHOK+dXWqHqZnZebY' &&
'1fGe3OFOArRU5GTGbSHNWdwUL8Epo1qIQ9V/bXu3HES4jCznNfjb7e1zZ8Ri/UD1MLzu05s/huM' &&
'x4IKGNy4+8Tj/2Pqk8++Vaji86TQqxEuNNM5rWGtSCaokSDkgd0QjbidoPvN+5s7t9jz5TgdbdB' &&
'MvLsG2cop6FgLUdUaZk804jYKuyrWa6vzlT2+XrOqQnxd6KwQOj5RhULpL9Yaxkcj7g3QT6zK39' &&
'7ZbdtGtbtAZ+B0U3adkt0c67E7OyI6fFDuSpktC6HGpJjUGmZ3NOI2mdnVnX32eHZZ7903hGXfB' &&
'G8mp3J7sd/B0DPCTgUmBf9O7lmMybk56or3Jn8foLVB7Q5dZ9Iy4OBsw2jYbUUk96fwQrzHf955' &&
'iBZzsDA+aL9k1owZ20fNzaY/tfFXwK48ldQkSZ5YqJXmZk15JaJfmOmfgdOAmgCzWrCvyum5aIO' &&
'+Uor3AIbOx7QV2TeBMPu3vKYASw091hbWt4PKRhu0oDqkmND1wAnk3vkOmAN2lRLa2hrWMVm5Te' &&
'k2R3286YzWiK4eQltk9g1gMfsFMhVYKunR1obQddk+SXZqwLe8acMGe7fYb9HZk7wm3utrBmpsq' &&
'iXsyClHMHK60hLWoRjHBfmLbP9K3bPYjFPIFWLaQeZnlZ8H4JyFflrMwcK4wG63v3/ycZnXOzqa' &&
'lxE0mU7x9rvvVv93oVZqBtzNGGeU7Jbp9pZGzS7ReiVQVyDfmXRda4PaA9p5mBLmWGmmSronM0F' &&
'ytUGGgjPTAi8UIeVk9u1og5YOJ0QbNBOjIac+Y22JPgLQ1WV7Ol+w36xebYnhtGpjFjBYTj3l4K' &&
'Y9/dx6My4d74pN/Ki/Y9HpSG5HR/Nyh/1DHtO9OM6dvWFDwbtWslOykt6Us5VWZbOFnQtsyMqvc' &&
'56Ty3T7NeBhLGAfDZDpe5nX6V5uXpbZ43K2NGQ2V9glwLas/I62hfrE8EWsJ3mFsGYs+OQqze+A' &&
'1cBLgbmma4f/9AmOJGBe5vKVLYN1W6wnOWSHmdkVhexMPG6yC0x2AbmjoQ3njdh4uwrSw1Htmq5' &&
'bd3Y0I3FLpQ5n0GTSQ7s6Fva70RPYTPbi+Pz0J7ryboRC+m5PnRfsJjVEAfp5bLNflTb52dKIBj' &&
'36RWY5ZyX2WCLukvbX67ZYHFLHZtGw+1fD/jDL8qQljWpav9m6Uw3wKYzXgUNJTxsk+0Fssw0L6' &&
'x+j4dCx6eF/BEtwDBkbx7Fe29gWCa0yrC2rvXXO26WZfrWG3V2kji8zWbm0QUev67GX5ZgZ8A0H' &&
'121hXIIZNrxou9oW6m4b4m/z2aTP+fsAohF3PaNHROvssZ8ElRs5DnyPBAkovxDFF4oJESDeY9t' &&
'JD4Ur5umgPSFm1Uy23Zk2SaM7e43p5Y4uxUMzu2f4H56+tuZmff2gfTqHrGEy5DkW6Abo7LH7gf' &&
'sB2uo1LQGzBmoYFSwg57vNcjqqo4F1JXh2S7Zfx83TZZNqdD6MXkQkU369jONgcmfxe83MB7XQE' &&
'dEhg1B0HzDk2ZHpy3vBqLPpMQhyi/f2AIA3WyPZG6KkeVpKiE925awEi7H6JRsAcqJDfIi9oayf' &&
'W8ZB5dY/TFeX7YlGQg+RmgJkcnSQfWyr9QP92enmGcgeNCvx67mXbGdbxD1hjI5AklJ+ydgTUGz' &&
'6iiZNXd09+gYGGIRlQgXn6wDesZYSRFsJOYES5QjSw7fqnu7qBqh7uqu7f3nzdw3uKFJszEIcpq' &&
'VRs12SRuAYiTrJ1YXMzSGgS6iQnHmWyQWe70pySz/FMZagMWnMlaiTuTqTTih7s7IIHm1T1ncVI' &&
'37l3BAAA4McAYF7iAvG17uxExi1U6Igd9XNDj+UmZA8qPrf3MDQbeSPIN8Ldub0JzeWLcT2I3Sw' &&
'n8JFhr4VQnMze5uKnv0ugOHfUXa3ZhySedkR0eGDuMtbw/rTZCI1pA9PF0yWf4e3MnJ7YKXm0pO' &&
'r6H03QRIIZeYnUj1njhid8aaRscKX/VGWSRLsCjnK2rcdC3njGUsQ5PSdv92yqJaMk5WBoRMpJs' &&
'SnNgZufBdCkmsN60FgRbllK8PNzOlttT/qpz2sOUnpeWGHvq9ewcyc28/7XQCru213NOL+l6wgZ' &&
'0kXAjnDcazP7gXuTdu41rCyxbgr3mt/P16+F6LgUVXtmq5bC237yNsNu5YtPBZgx4kLFznZ1XlM' &&
'BzB/1liECBAN801yhfiq0HflbKXz1ojZ4qCylSBsbm6q/93wX0n0Q1Ir6UzWYXaZyZaFqqxeZn8' &&
'13n4ZlhPWJWXMo00P5OTDF5c0qmm8fRlPip6bFhHk6Ti3ddfy5i3OXBemJQE2A5g/c/qaTasC8k' &&
'rC0KdzE+3qWG/y6thmW7Vui/UkQ7w51vqDaGnRZFInPdlshNQ2C8oJh0oqaefF++zmzh5bu7bbX' &&
'rBxjp88bp5qgZzNdyfWD/9t+B+TO4GW8/p+R0SHcGBxLWEFjiQlHeIXEaRIPZAVRMVCTDcQCUh8' &&
'LfOyaqjgCcr+YpY7NRFa2VY/egsqtNtdw8ie5gjJoUTqicjofOYA2f/YgcR03s5MMBF4wlIa7rM' &&
'r5mnUyru6xl0LZAeFvDG3l83DF5199mukoJO1FUMoviSi8Nh9Kg+Ru7qvUvCqPO+cMZsxbPsM4H' &&
'XW9KcrEyKApTa7s9BVSyLaF3IkSbLSQros18RyInkkV2u5q+6zLaS+aCT0oJl/QVI78IWcsvDos' &&
'1vtLYCE551QKNuCKW63+157g36cMOYI9yWhC3K+j4KDEHKxC9+t0altDaFHwL/kvVZIBJw761/u' &&
'M5/MTJlU7S/ZN6hTBNlhZA0OPReNuGdM6nL4jR4G5ZnRusAtKmVHwg1Slcxe11nODZJKh1fJ6kw' &&
'M3dQaVgOw3omjkGuL9/o/L/vFTzs7mi8pQZBpIT4f9PxE2bRFQncY9pdjKDoExDH7ebzPbgFobQ' &&
'jdng48KBfvzZau77ORN61FI66PsW2N7ARiZnZTZ589BtAWCV1v5J1zF+JNVdui2CbLOcJsq1ejD' &&
'2lVgCDL4e14r58J0N6k+cmEu0HYIssdrbxgnaGeeG9yJEg32hC6GbOix81ytrTsWLtiixpgQNLZ' &&
'4yVEgCT++xSP0H7C0N1ZadVAh6SR3kRm2WfJO0H/XqTuQcn+IlOIAFjRVaZhus3g2az0WuA0wcI' &&
'i5QP3DDNIIPtakBABYltts7AO4OEi9eTFYGCksSRzwM4LECKAM1gG9tVR5UP+RkqZN5s7a0yBnw' &&
'UEOSDp7GlPPp83BH0srO+1PmQrDIIen9wOdnlnn31G5n9ZtDLL6ck2x3uTf6DUee8rASX6vNnyW' &&
'I/dmZ0R77O7LNXLBkWy9CE7Pd6XvNihQkEQeZHZl9PBFtsDstebtyWFwv0B4r32UrzXn+6xDtBd' &&
'wIslNL0N+JnMvravxiraFO/stm0y+xzQlcfkddCNCe/vGfP7GQH6lzdfbHAjqSCBHZK+PN5CzES' &&
'SlixgnhMLzXAeXp+3hWfuM0sWL10abQv1CdtHixzvmtiYPhcvSFOTJk1NEPEQkWdPUry4oc96y2' &&
'o3YJiWs5WxzbYq83THHHu9Y1N2kG45tDRqdsgzxxuznKPOGbsTsN2M7d6zfXhePJ5Ici1h6mUcA' &&
'cw08Zo5fp35NoqKxAjwTrRhZmLSpPY9ySmPzV27dm+lTn9cKSTGA+XT+03Jq+l8HBLv2Q7cX9K+' &&
'ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v/PogUvEwPUG' &&
'FiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2fcpUAAAAASUVORK5CYII='.
ENDMETHOD. "base64_logo
METHOD header.
CREATE OBJECT ro_html.
ro_html->add( '<html>' ).
ro_html->add( '<head>' ).
ro_html->add( '<title>abapGit</title>' ).
ro_html->add( css( ) ).
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ).
ro_html->add( '</head>' ).
ro_html->add( '<body>' ).
ENDMETHOD. "render_head
METHOD on_event.
DATA: lx_exception TYPE REF TO lcx_exception.
@ -17942,10 +17679,352 @@ CLASS lcl_persistence_user DEFINITION FINAL.
ENDCLASS.
CLASS lcl_gui_page_main DEFINITION FINAL.
CLASS lcl_gui_page_super DEFINITION ABSTRACT.
PUBLIC SECTION.
INTERFACES lif_gui_page ALL METHODS ABSTRACT.
PROTECTED SECTION.
METHODS header
IMPORTING io_include_style TYPE REF TO lcl_html_helper OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS footer
IMPORTING io_include_script TYPE REF TO lcl_html_helper OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS title
IMPORTING iv_page_title TYPE string
io_menu TYPE REF TO lcl_html_toolbar OPTIONAL
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS get_logo_src
RETURNING VALUE(rv_src) TYPE string.
PRIVATE SECTION.
METHODS: styles
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
ENDCLASS.
CLASS lcl_gui_page_super IMPLEMENTATION.
METHOD header.
CREATE OBJECT ro_html.
ro_html->add( '<html>' ).
ro_html->add( '<head>' ).
ro_html->add( '<title>abapGit</title>' ).
ro_html->add( styles( ) ).
IF io_include_style IS BOUND.
ro_html->add( io_include_style ).
ENDIF.
ro_html->add( '<meta http-equiv="content-type" content="text/html; charset=utf-8">' ).
ro_html->add( '</head>' ).
ro_html->add( '<body>' ).
ENDMETHOD. "render html header
METHOD title.
CREATE OBJECT ro_html.
ro_html->add( '<div id="header">' ).
ro_html->add( '<table class="mixedbar logobar"><tr>' ).
ro_html->add( '<td class="logo">' ).
ro_html->add( '<a href="sapevent:abapgithome">' ).
ro_html->add( |<img src="{ me->get_logo_src( ) }"></a>| ).
ro_html->add( |<span>::{ iv_page_title }</span>| ).
ro_html->add( '<a href="sapevent:db" class="bkg">d</a>' ). "TODO REFACTOR ->beta_menu ?
ro_html->add( '</td>' ).
IF io_menu IS BOUND.
ro_html->add( io_menu->render( iv_tag = 'td' ib_right = abap_true ) ).
ENDIF.
ro_html->add( '</tr></table>' ).
ro_html->add( '</div>' ).
ENDMETHOD. "render page title
METHOD footer.
CREATE OBJECT ro_html.
ro_html->add( '<div id="footer">' ).
ro_html->add( |<img src="{ get_logo_src( ) }" >| ).
ro_html->add( |<span class="version">{ gc_abap_version }</span>| ).
ro_html->add( '</div>' ).
ro_html->add( '</body>' ).
IF io_include_script IS BOUND.
ro_html->add( io_include_script ).
ENDIF.
ro_html->add( '</html>').
ENDMETHOD. "render html footer & logo
METHOD styles.
CREATE OBJECT ro_html.
ro_html->add('<style type="text/css">').
ro_html->add('/* GLOBALS */').
ro_html->add('body {').
ro_html->add(' font-family: Arial,Helvetica,sans-serif;').
ro_html->add(' background: #E8E8E8;').
ro_html->add('}').
ro_html->add('a, a:visited {').
ro_html->add(' color: #4078c0;').
ro_html->add(' text-decoration: none;').
ro_html->add('}').
ro_html->add('a:hover, a:active {').
ro_html->add(' text-decoration: underline;').
ro_html->add('}').
ro_html->add('/* STRUCTURE DIVS */').
ro_html->add('div#header {').
ro_html->add(' display: block;').
ro_html->add(' margin-top: 0.5em;').
ro_html->add(' padding-bottom: 0.5em;').
ro_html->add(' border-bottom: 3px double lightgrey;').
ro_html->add('}').
ro_html->add('div#toc {').
ro_html->add(' display: block;').
ro_html->add(' background-color: #f2f2f2;').
ro_html->add(' padding: 1em;').
ro_html->add('}').
ro_html->add('div.repo {').
ro_html->add(' display: block;').
ro_html->add(' margin-top: 3px;').
ro_html->add(' background-color: #f2f2f2;').
ro_html->add(' padding: 0.7em ').
ro_html->add('}').
ro_html->add('div#footer {').
ro_html->add(' display: block;').
ro_html->add(' margin-bottom: 1em;').
ro_html->add(' padding-top: 0.5em;').
ro_html->add(' border-top: 3px double lightgrey;').
ro_html->add(' color: grey;').
ro_html->add(' text-align: center;').
ro_html->add('}').
ro_html->add('/* HEADER, FOOTER & MENU */').
ro_html->add('.mixedbar {').
ro_html->add(' width: 98%; /*IE7 compat5 mode workaround*/').
ro_html->add('}').
ro_html->add('.logobar tr {').
ro_html->add(' vertical-align: middle;').
ro_html->add('}').
ro_html->add('.logobar td.menu {').
ro_html->add(' padding-top: 1em;').
ro_html->add('}').
ro_html->add('.logobar img {').
ro_html->add(' border: 0px;').
ro_html->add('}').
ro_html->add('.logo span {').
ro_html->add(' font-weight: bold;').
ro_html->add(' font-size: larger;').
ro_html->add(' color: #bbb;').
ro_html->add(' vertical-align: super;').
ro_html->add('}').
ro_html->add('.right {').
ro_html->add(' text-align:right;').
ro_html->add('}').
ro_html->add('.menu a {').
ro_html->add(' padding-left: 0.5em;').
ro_html->add(' padding-right: 0.5em;').
ro_html->add(' border-right: 1px solid lightgrey;').
ro_html->add('}').
ro_html->add('.menu_end {').
ro_html->add(' border-right: 0px !important;').
ro_html->add('}').
ro_html->add('span.version {').
ro_html->add(' display: block;').
ro_html->add(' margin-top: 0.3em;').
ro_html->add('}').
ro_html->add('/* REPOSITORY */'). "TODO move to the page rendering repos
ro_html->add('.repo_name span {').
ro_html->add(' font-weight: bold;').
ro_html->add(' font-size: x-large;').
ro_html->add('}').
ro_html->add('.repo_attr {').
ro_html->add(' color: grey;').
ro_html->add(' font-size: smaller;').
ro_html->add('}').
ro_html->add('.repo_attr span {').
ro_html->add(' margin-right: 1em;').
ro_html->add('}').
ro_html->add('.repo_attr input {').
ro_html->add(' background-color: transparent;').
ro_html->add(' border-style: none;').
ro_html->add(' text-overflow: ellipsis;').
ro_html->add(' color: grey;').
ro_html->add('}').
ro_html->add('.repo_tab {').
ro_html->add(' border: 1px solid #DDD;').
ro_html->add(' border-radius: 3px;').
ro_html->add(' background: #ffffff;').
ro_html->add(' margin-top: 1em;').
ro_html->add('}').
ro_html->add('.repo_tab tr.unsupported {').
ro_html->add(' color: lightgrey;').
ro_html->add('}').
ro_html->add('.repo_tab td {').
ro_html->add(' border-top: 1px solid #eee;').
ro_html->add(' vertical-align: top;').
ro_html->add(' padding-top: 2px;').
ro_html->add(' padding-bottom: 2px;').
ro_html->add('}').
ro_html->add('.repo_tab td.icon {').
ro_html->add(' padding-left: 10px;').
ro_html->add('}').
ro_html->add('.repo_tab td.type {').
ro_html->add(' width: 3.5em;').
ro_html->add('}').
ro_html->add('.repo_tab td.object {').
ro_html->add(' padding-left: 0.5em;').
ro_html->add('}').
ro_html->add('.repo_tab td.files {').
ro_html->add(' padding-left: 0.5em;').
ro_html->add(' padding-right: 0.5em;').
ro_html->add('}').
ro_html->add('/* MISC AND REFACTOR */').
ro_html->add('a.grey:link {').
ro_html->add(' color: grey;').
ro_html->add(' font-size: smaller;').
ro_html->add('}').
ro_html->add('a.grey:visited {').
ro_html->add(' color: grey;').
ro_html->add(' font-size: smaller;').
ro_html->add('}').
ro_html->add('a.plain:link {').
ro_html->add(' color: black;').
ro_html->add(' text-decoration: none;').
ro_html->add('}').
ro_html->add('a.plain:visited {').
ro_html->add(' color: black;').
ro_html->add(' text-decoration: none;').
ro_html->add('}').
ro_html->add('a.bkg:link {').
ro_html->add(' color: #E8E8E8;').
ro_html->add('}').
ro_html->add('a.bkg:visited {').
ro_html->add(' color: #E8E8E8;').
ro_html->add('}').
ro_html->add('h1 {').
ro_html->add(' display: inline;').
ro_html->add('}').
ro_html->add('h2 {').
ro_html->add(' display: inline;').
ro_html->add('}').
ro_html->add('h3 {').
ro_html->add(' display: inline;').
ro_html->add(' color: grey;').
ro_html->add(' font-weight:normal;').
ro_html->add(' font-size: smaller;').
ro_html->add('}').
ro_html->add('pre {').
ro_html->add(' display: inline;').
ro_html->add('}').
ro_html->add('</style>').
ENDMETHOD. "common styles
METHOD get_logo_src.
rv_src =
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKMAAAAoCAYAAACSG0qbAAAABHNCSVQICAgIfAhk' &&
'iAAAAAlwSFlzAAAEJQAABCUBprHeCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA8' &&
'VSURBVHic7Zx7cJzVeYef31nJAtvYko1JjM3FYHlXimwZkLWyLEMcwIGQcEkDJWmTltLStGkoDC' &&
'kzwBAuCemUlksDNCkhJTTTljJpZhIuBQxxAWPvyuYiW7UkG8IlUByIsS1sLEu75+0fu5JXu9/et' &&
'AJz0TOzM/rOec85765+37m+3yczY8w0NU3qrwv9npfaHfx02pPPd469sgk+7misYnyjpWXy5IOG' &&
'7kd8ZjjNjEtr13TdOm7eTfCxwo2lUJAQASRu2dnRfMn4uDbBx42yxZhPiMNMCHKCsVK2GGuqqqo' &&
'QUwrZTAhygrFQshjfaGmZ/M7yxQtmxGL9/qDqzwLxQvYTgpygXEoS4/DQ7LE1O05atLBu1YZdE4' &&
'KcYLwpupoOmCO+5Z2dXPfExk07Tm2ZroGhBwX1wAygKqiOiVX2Rw9Jam/gyH0wuGGzvTEudRYSY' &&
'4HFyogghxN2n7SwIendvcCioLoOtCCXNeqohOf0oDwPq9f3Wt/77dOHlWhYzUj/BRybTnrGEnZO' &&
'5wv2m0rqDezJoOiqeZbzegzpk6TVPPWJTT39y5svMogF1ZcesjlQgkwYp4F+EJQXwv4E+MiLUZJ' &&
'aF7AIcRq4hWZ2mMRhQD/oZcErXv7FScaja3rt/wpU9E/sFyLACQq57wB/XIl/gWIstn2TxpHVre' &&
'7ZW71p8sFDeQscSEHKu3pTBadNH2Lq61VT57iwNazLgaNSqYaUaWXLDZCJIbBog3tK2A2xHns0o' &&
'Mrm3CRrqdTPnAVMiUIEmLlz2XGLMxNmH7YrifFcoUIHalHj8f8p6UfAO+932weStno1zghps6Q7' &&
'GBFiUYRxopkeaZ2vIwLyfxtQ4vV8lbWHNScacf+T/vwqn90oMZYhRADJ+bv725vmj6Q8tHWffPK' &&
'UD6IgO/tsfawneRHYd97Pdg8kSyJaZiGtBY4pYPYOkH84C0Cyv8tKSiK7OZ99EpYAJ2V8AhkRY5' &&
'lCHGaxhaq+BLCzY/EXd5y0aOG0td1vf1AFCWCw7/1u80DQEtahQvcB03MyjQfM7Hwnmxfv9dPiv' &&
'X5SssqOwuzPSqk71mN3ymw5ZtdKdmVIdly8xx7JZ29yy0qptwrGLMRRCA6T1w93nLTo5Lq13Zv6' &&
'25tOMRd6DLF4v0lWmQO8qPko45y7TWaHZyUnwa6M99mN2fYbuu1V4K5oxF1B4Z4UgFifrQHWFLN' &&
'bvkh1QheV5DNNTZMqFWIGs5zX48M95PTqGa3TZ4erzbvj8/WUErf0L2++uNyGJLn2Js1oDeuYlk' &&
'bNbmlRdeXup2hq0qS2es2VlHMDFaOlRdXL5uuwlnodG23QTEljCkbJV3d7WHOK+dXWqHqZnZebY' &&
'1fGe3OFOArRU5GTGbSHNWdwUL8Epo1qIQ9V/bXu3HES4jCznNfjb7e1zZ8Ri/UD1MLzu05s/huM' &&
'x4IKGNy4+8Tj/2Pqk8++Vaji86TQqxEuNNM5rWGtSCaokSDkgd0QjbidoPvN+5s7t9jz5TgdbdB' &&
'MvLsG2cop6FgLUdUaZk804jYKuyrWa6vzlT2+XrOqQnxd6KwQOj5RhULpL9Yaxkcj7g3QT6zK39' &&
'7ZbdtGtbtAZ+B0U3adkt0c67E7OyI6fFDuSpktC6HGpJjUGmZ3NOI2mdnVnX32eHZZ7903hGXfB' &&
'G8mp3J7sd/B0DPCTgUmBf9O7lmMybk56or3Jn8foLVB7Q5dZ9Iy4OBsw2jYbUUk96fwQrzHf955' &&
'iBZzsDA+aL9k1owZ20fNzaY/tfFXwK48ldQkSZ5YqJXmZk15JaJfmOmfgdOAmgCzWrCvyum5aIO' &&
'+Uor3AIbOx7QV2TeBMPu3vKYASw091hbWt4PKRhu0oDqkmND1wAnk3vkOmAN2lRLa2hrWMVm5Te' &&
'k2R3286YzWiK4eQltk9g1gMfsFMhVYKunR1obQddk+SXZqwLe8acMGe7fYb9HZk7wm3utrBmpsq' &&
'iXsyClHMHK60hLWoRjHBfmLbP9K3bPYjFPIFWLaQeZnlZ8H4JyFflrMwcK4wG63v3/ycZnXOzqa' &&
'lxE0mU7x9rvvVv93oVZqBtzNGGeU7Jbp9pZGzS7ReiVQVyDfmXRda4PaA9p5mBLmWGmmSronM0F' &&
'ytUGGgjPTAi8UIeVk9u1og5YOJ0QbNBOjIac+Y22JPgLQ1WV7Ol+w36xebYnhtGpjFjBYTj3l4K' &&
'Y9/dx6My4d74pN/Ki/Y9HpSG5HR/Nyh/1DHtO9OM6dvWFDwbtWslOykt6Us5VWZbOFnQtsyMqvc' &&
'56Ty3T7NeBhLGAfDZDpe5nX6V5uXpbZ43K2NGQ2V9glwLas/I62hfrE8EWsJ3mFsGYs+OQqze+A' &&
'1cBLgbmma4f/9AmOJGBe5vKVLYN1W6wnOWSHmdkVhexMPG6yC0x2AbmjoQ3njdh4uwrSw1Htmq5' &&
'bd3Y0I3FLpQ5n0GTSQ7s6Fva70RPYTPbi+Pz0J7ryboRC+m5PnRfsJjVEAfp5bLNflTb52dKIBj' &&
'36RWY5ZyX2WCLukvbX67ZYHFLHZtGw+1fD/jDL8qQljWpav9m6Uw3wKYzXgUNJTxsk+0Fssw0L6' &&
'x+j4dCx6eF/BEtwDBkbx7Fe29gWCa0yrC2rvXXO26WZfrWG3V2kji8zWbm0QUev67GX5ZgZ8A0H' &&
'121hXIIZNrxou9oW6m4b4m/z2aTP+fsAohF3PaNHROvssZ8ElRs5DnyPBAkovxDFF4oJESDeY9t' &&
'JD4Ur5umgPSFm1Uy23Zk2SaM7e43p5Y4uxUMzu2f4H56+tuZmff2gfTqHrGEy5DkW6Abo7LH7gf' &&
'sB2uo1LQGzBmoYFSwg57vNcjqqo4F1JXh2S7Zfx83TZZNqdD6MXkQkU369jONgcmfxe83MB7XQE' &&
'dEhg1B0HzDk2ZHpy3vBqLPpMQhyi/f2AIA3WyPZG6KkeVpKiE925awEi7H6JRsAcqJDfIi9oayf' &&
'W8ZB5dY/TFeX7YlGQg+RmgJkcnSQfWyr9QP92enmGcgeNCvx67mXbGdbxD1hjI5AklJ+ydgTUGz' &&
'6iiZNXd09+gYGGIRlQgXn6wDesZYSRFsJOYES5QjSw7fqnu7qBqh7uqu7f3nzdw3uKFJszEIcpq' &&
'VRs12SRuAYiTrJ1YXMzSGgS6iQnHmWyQWe70pySz/FMZagMWnMlaiTuTqTTih7s7IIHm1T1ncVI' &&
'37l3BAAA4McAYF7iAvG17uxExi1U6Igd9XNDj+UmZA8qPrf3MDQbeSPIN8Ldub0JzeWLcT2I3Sw' &&
'n8JFhr4VQnMze5uKnv0ugOHfUXa3ZhySedkR0eGDuMtbw/rTZCI1pA9PF0yWf4e3MnJ7YKXm0pO' &&
'r6H03QRIIZeYnUj1njhid8aaRscKX/VGWSRLsCjnK2rcdC3njGUsQ5PSdv92yqJaMk5WBoRMpJs' &&
'SnNgZufBdCkmsN60FgRbllK8PNzOlttT/qpz2sOUnpeWGHvq9ewcyc28/7XQCru213NOL+l6wgZ' &&
'0kXAjnDcazP7gXuTdu41rCyxbgr3mt/P16+F6LgUVXtmq5bC237yNsNu5YtPBZgx4kLFznZ1XlM' &&
'BzB/1liECBAN801yhfiq0HflbKXz1ojZ4qCylSBsbm6q/93wX0n0Q1Ir6UzWYXaZyZaFqqxeZn8' &&
'13n4ZlhPWJWXMo00P5OTDF5c0qmm8fRlPip6bFhHk6Ti3ddfy5i3OXBemJQE2A5g/c/qaTasC8k' &&
'rC0KdzE+3qWG/y6thmW7Vui/UkQ7w51vqDaGnRZFInPdlshNQ2C8oJh0oqaefF++zmzh5bu7bbX' &&
'rBxjp88bp5qgZzNdyfWD/9t+B+TO4GW8/p+R0SHcGBxLWEFjiQlHeIXEaRIPZAVRMVCTDcQCUh8' &&
'LfOyaqjgCcr+YpY7NRFa2VY/egsqtNtdw8ie5gjJoUTqicjofOYA2f/YgcR03s5MMBF4wlIa7rM' &&
'r5mnUyru6xl0LZAeFvDG3l83DF5199mukoJO1FUMoviSi8Nh9Kg+Ru7qvUvCqPO+cMZsxbPsM4H' &&
'XW9KcrEyKApTa7s9BVSyLaF3IkSbLSQros18RyInkkV2u5q+6zLaS+aCT0oJl/QVI78IWcsvDos' &&
'1vtLYCE551QKNuCKW63+157g36cMOYI9yWhC3K+j4KDEHKxC9+t0altDaFHwL/kvVZIBJw761/u' &&
'M5/MTJlU7S/ZN6hTBNlhZA0OPReNuGdM6nL4jR4G5ZnRusAtKmVHwg1Slcxe11nODZJKh1fJ6kw' &&
'M3dQaVgOw3omjkGuL9/o/L/vFTzs7mi8pQZBpIT4f9PxE2bRFQncY9pdjKDoExDH7ebzPbgFobQ' &&
'jdng48KBfvzZau77ORN61FI66PsW2N7ARiZnZTZ589BtAWCV1v5J1zF+JNVdui2CbLOcJsq1ejD' &&
'2lVgCDL4e14r58J0N6k+cmEu0HYIssdrbxgnaGeeG9yJEg32hC6GbOix81ytrTsWLtiixpgQNLZ' &&
'4yVEgCT++xSP0H7C0N1ZadVAh6SR3kRm2WfJO0H/XqTuQcn+IlOIAFjRVaZhus3g2az0WuA0wcI' &&
'i5QP3DDNIIPtakBABYltts7AO4OEi9eTFYGCksSRzwM4LECKAM1gG9tVR5UP+RkqZN5s7a0yBnw' &&
'UEOSDp7GlPPp83BH0srO+1PmQrDIIen9wOdnlnn31G5n9ZtDLL6ck2x3uTf6DUee8rASX6vNnyW' &&
'I/dmZ0R77O7LNXLBkWy9CE7Pd6XvNihQkEQeZHZl9PBFtsDstebtyWFwv0B4r32UrzXn+6xDtBd' &&
'wIslNL0N+JnMvravxiraFO/stm0y+xzQlcfkddCNCe/vGfP7GQH6lzdfbHAjqSCBHZK+PN5CzES' &&
'SlixgnhMLzXAeXp+3hWfuM0sWL10abQv1CdtHixzvmtiYPhcvSFOTJk1NEPEQkWdPUry4oc96y2' &&
'o3YJiWs5WxzbYq83THHHu9Y1N2kG45tDRqdsgzxxuznKPOGbsTsN2M7d6zfXhePJ5Ici1h6mUcA' &&
'cw08Zo5fp35NoqKxAjwTrRhZmLSpPY9ySmPzV27dm+lTn9cKSTGA+XT+03Jq+l8HBLv2Q7cX9K+' &&
'ygQTFGDcHhaaoGJyouDNV7JH+eGj4mF6gspoC+tzJt1ObsT4MDsF2zxs886+Ml5v/PogUvEwPUG' &&
'FiE+SX4gAtQa1gkhV7onQR4oJMR5oxC6stDeghd7Dh6E+CPw/HL4vVO2fcpUAAAAASUVORK5CYII='.
ENDMETHOD. "base64_logo
ENDCLASS.
CLASS lcl_gui_page_main DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
INTERFACES lif_gui_page.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
CLASS-DATA: go_user TYPE REF TO lcl_persistence_user.
@ -17985,8 +18064,8 @@ CLASS lcl_gui_page_main DEFINITION FINAL.
ev_obj_name TYPE tadir-obj_name
RAISING lcx_exception.
CLASS-METHODS render_menu
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
METHODS build_menu
RETURNING VALUE(ro_menu) TYPE REF TO lcl_html_toolbar.
CLASS-METHODS render_error
IMPORTING ix_error TYPE REF TO lcx_exception
@ -18055,16 +18134,17 @@ CLASS lcl_gui_page_main DEFINITION FINAL.
ENDCLASS.
CLASS lcl_gui_page_diff DEFINITION FINAL.
CLASS lcl_gui_page_diff DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
INTERFACES lif_gui_page.
METHODS: constructor
IMPORTING
is_local TYPE ty_file
is_remote TYPE ty_file.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
DATA: mv_filename TYPE string,
mo_diff TYPE REF TO lcl_diff.
@ -18078,6 +18158,8 @@ ENDCLASS.
CLASS lcl_gui_page_diff IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mv_filename = is_local-filename.
CREATE OBJECT mo_diff
@ -18268,24 +18350,15 @@ CLASS lcl_gui_page_diff IMPLEMENTATION.
METHOD lif_gui_page~render.
DATA: lv_html TYPE string.
CREATE OBJECT ro_html.
* REDO
lv_html = lcl_gui=>header( )->mv_html.
"TODO: crutch, redo later after unification
REPLACE FIRST OCCURRENCE OF '</style>' IN lv_html
WITH '</style>' && styles( )->mv_html.
ro_html->add( lv_html ).
* ^^^ REDO
ro_html->add( header( io_include_style = styles( ) ) ).
ro_html->add( title( iv_page_title = 'DIFF' ) ).
ro_html->add( '<div class="diff">' ). "#EC NOTEXT
ro_html->add( render_head( ) ).
ro_html->add( render_diff( ) ).
ro_html->add( '</div>' ). "#EC NOTEXT
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
@ -18370,7 +18443,7 @@ CLASS lcl_stage IMPLEMENTATION.
ENDCLASS.
CLASS lcl_gui_page_commit DEFINITION FINAL.
CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
METHODS constructor
@ -18378,7 +18451,8 @@ CLASS lcl_gui_page_commit DEFINITION FINAL.
io_stage TYPE REF TO lcl_stage
RAISING lcx_exception.
INTERFACES lif_gui_page.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
DATA: mo_repo TYPE REF TO lcl_repo_online,
@ -18410,6 +18484,8 @@ ENDCLASS.
CLASS lcl_gui_page_commit IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mo_repo = io_repo.
mo_stage = io_stage.
ENDMETHOD.
@ -18554,11 +18630,14 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
* commit messages should be max 50 characters
* body should wrap at 72 characters
ro_html->add( lcl_gui=>header( ) ).
ro_html->add( header( ) ).
"TODO refactor
ro_html->add( '<div id="header">' ).
ro_html->add( '<h1>Commit</h1>' ).
ro_html->add( '<a href="sapevent:cancel">Cancel</a>' ).
ro_html->add( '</div>' ).
ro_html->add( '<div id="toc">' ).
ro_html->add( render_files( ) ).
ro_html->add( '<form method="post" action="sapevent:post">' ).
@ -18598,20 +18677,22 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
ro_html->add( 'document.getElementById("cmt").focus();' ).
ro_html->add( '</script>' ).
ro_html->add( '</div>' ).
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
ENDCLASS.
CLASS lcl_gui_page_stage DEFINITION FINAL.
CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
METHODS constructor
IMPORTING io_repo TYPE REF TO lcl_repo_online
RAISING lcx_exception.
INTERFACES lif_gui_page.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
DATA: mo_repo TYPE REF TO lcl_repo_online,
@ -18643,6 +18724,8 @@ ENDCLASS.
CLASS lcl_gui_page_stage IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
mo_repo = io_repo.
refresh( ).
ENDMETHOD.
@ -18853,10 +18936,16 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
CREATE OBJECT ro_html.
<<<<<<< HEAD
ro_html->add( lcl_gui=>header( ) ).
ro_html->add( '<div id="header">' ).
ro_html->add( '<h1>Stage</h1>' ).
ro_html->add( '</div>' ).
=======
ro_html->add( header( ) ).
ro_html->add( title( iv_page_title = 'STAGE' ) ).
>>>>>>> t221
ro_html->add( '<div id="toc">' ).
ro_html->add( render_local( ) ).
ro_html->add( '<br>' ).
@ -18870,16 +18959,17 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
ENDIF.
ro_html->add( '</div>' ).
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
ENDCLASS.
CLASS lcl_gui_page_db DEFINITION FINAL.
CLASS lcl_gui_page_db DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
INTERFACES lif_gui_page.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
PRIVATE SECTION.
METHODS:
@ -19335,12 +19425,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
ENDMETHOD. "install
METHOD render_menu.
METHOD build_menu.
DATA lo_toolbar TYPE REF TO lcl_html_toolbar.
CREATE OBJECT lo_toolbar.
CREATE OBJECT ro_html.
lo_toolbar->add( iv_txt = 'Refresh All' iv_cmd = 'sapevent:refresh' ).
lo_toolbar->add( iv_txt = 'Clone' iv_cmd = 'sapevent:install' ).
@ -19350,20 +19438,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
lo_toolbar->add( iv_txt = 'Install' iv_cmd = 'sapevent:abapgit_installation' ).
ENDIF.
ro_html->add( '<div id="header">' ).
ro_html->add( '<table class="mixedbar logobar">' ).
ro_html->add( '<tr>' ).
ro_html->add( '<td class="logo">' ).
ro_html->add( '<a href="sapevent:abapgithome">' ).
ro_html->add( |<img src="{ lcl_gui=>get_logo_src( ) }"></a>| ).
ro_html->add( '<a href="sapevent:db" class="bkg">d</a>' ).
ro_html->add( '</td>' ).
ro_html->add( lo_toolbar->render( iv_tag = 'td' ib_right = abap_true ) ).
ro_html->add( '</tr>' ).
ro_html->add( '</table>' ).
ro_html->add( '</div>' ).
ro_menu = lo_toolbar.
ENDMETHOD. "render_menu
ENDMETHOD. "build menu
METHOD render_repo_offline.
@ -19845,8 +19922,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
CREATE OBJECT go_user.
ro_html->add( lcl_gui=>header( ) ).
ro_html->add( render_menu( ) ).
ro_html->add( header( ) ).
ro_html->add( title( iv_page_title = 'MAIN' io_menu = build_menu( ) ) ).
TRY.
lt_repos = lcl_repo_srv=>list( ).
@ -19877,7 +19954,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
ENDLOOP.
ENDIF.
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
@ -21824,10 +21901,11 @@ CLASS lcl_xml_pretty IMPLEMENTATION.
ENDCLASS.
CLASS lcl_gui_page_db_display DEFINITION FINAL.
CLASS lcl_gui_page_db_display DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
INTERFACES lif_gui_page.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
METHODS: constructor
IMPORTING is_key TYPE lcl_persistence_db=>ty_content.
@ -21840,6 +21918,7 @@ ENDCLASS.
CLASS lcl_gui_page_db_display IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
ms_key = is_key.
ENDMETHOD.
@ -21873,10 +21952,16 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
lv_data = escape( val = lv_data
format = cl_abap_format=>e_html_attr ).
<<<<<<< HEAD
ro_html->add( lcl_gui=>header( ) ).
ro_html->add( '<div id="header">' ).
ro_html->add( '<h1>Display</h1>' ).
ro_html->add( '</div>' ).
=======
ro_html->add( header( ) ).
ro_html->add( title( iv_page_title = 'CONFIG' ) ).
>>>>>>> t221
ro_html->add( '<div id="toc">' ).
ro_html->add( '<b>Type:</b><br>' ).
ro_html->add( ms_key-type && '<br><br>' ).
@ -21885,16 +21970,18 @@ CLASS lcl_gui_page_db_display IMPLEMENTATION.
ro_html->add( '<b>Data:</b><br>' ).
ro_html->add( '<pre>' && lv_data && '</pre><br>' ).
ro_html->add( '</div>' ).
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
ENDCLASS.
CLASS lcl_gui_page_db_edit DEFINITION FINAL.
CLASS lcl_gui_page_db_edit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
PUBLIC SECTION.
INTERFACES lif_gui_page.
METHODS lif_gui_page~on_event REDEFINITION.
METHODS lif_gui_page~render REDEFINITION.
METHODS: constructor
IMPORTING is_key TYPE lcl_persistence_db=>ty_content.
@ -21911,6 +21998,7 @@ ENDCLASS.
CLASS lcl_gui_page_db_edit IMPLEMENTATION.
METHOD constructor.
super->constructor( ).
ms_key = is_key.
ENDMETHOD.
@ -21989,10 +22077,13 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
lv_data = escape( val = lv_data
format = cl_abap_format=>e_html_attr ).
ro_html->add( lcl_gui=>header( ) ).
ro_html->add( header( ) ).
"TODO refactor
ro_html->add( '<div id="header">' ).
ro_html->add( '<h1>Edit</h1>' ).
ro_html->add( '</div>' ).
ro_html->add( '<div id="toc">' ).
ro_html->add( '<b>Type:</b><br>' ).
ro_html->add( ms_key-type && '<br><br>' ).
@ -22006,7 +22097,7 @@ CLASS lcl_gui_page_db_edit IMPLEMENTATION.
ro_html->add( lv_data ).
ro_html->add( '</textarea><br><input type="submit" value="Update"></form>' ).
ro_html->add( '</div>' ).
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.
@ -22152,10 +22243,16 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
CREATE OBJECT ro_html.
<<<<<<< HEAD
ro_html->add( lcl_gui=>header( ) ).
ro_html->add( '<div id="header">' ).
ro_html->add( '<h1>Database persistency</h1>' ).
ro_html->add( '</div>' ).
=======
ro_html->add( header( ) ).
ro_html->add( title( iv_page_title = 'DATABASE PERSISTENCY' ) ).
>>>>>>> t221
ro_html->add( '<div id="toc">' ).
ro_html->add( '<table>' ).
ro_html->add( '<tr>' ).
@ -22183,7 +22280,8 @@ CLASS lcl_gui_page_db IMPLEMENTATION.
ro_html->add( '</table>' ).
ro_html->add( '</div>' ).
ro_html->add( lcl_gui=>footer( ) ).
ro_html->add( footer( ) ).
ENDMETHOD.