mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 16:46:10 +08:00
file upload (#116)
This commit is contained in:
parent
7f0894a8b7
commit
d9f681a163
|
@ -26,7 +26,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_app_demo_07 IMPLEMENTATION.
|
CLASS Z2UI5_CL_APP_DEMO_07 IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_app~controller.
|
METHOD z2ui5_if_app~controller.
|
||||||
|
@ -44,6 +44,7 @@ CLASS z2ui5_cl_app_demo_07 IMPLEMENTATION.
|
||||||
INSERT VALUE #( name = mv_path data = mv_value size = strlen( mv_value ) format = mv_value+5(5) ) INTO TABLE mt_file.
|
INSERT VALUE #( name = mv_path data = mv_value size = strlen( mv_value ) format = mv_value+5(5) ) INTO TABLE mt_file.
|
||||||
clear ms_file_prev.
|
clear ms_file_prev.
|
||||||
CLEAR ms_file_edit.
|
CLEAR ms_file_edit.
|
||||||
|
"keep the traffic low, don't send it back to the frontend
|
||||||
CLEAR mv_value.
|
CLEAR mv_value.
|
||||||
CLEAR mv_path.
|
CLEAR mv_path.
|
||||||
|
|
||||||
|
@ -78,6 +79,7 @@ CLASS z2ui5_cl_app_demo_07 IMPLEMENTATION.
|
||||||
navbuttonpress = client->_event( 'BACK' )
|
navbuttonpress = client->_event( 'BACK' )
|
||||||
)->header_content(
|
)->header_content(
|
||||||
)->toolbar_spacer(
|
)->toolbar_spacer(
|
||||||
|
)->link( text = 'Demo' href = 'https://twitter.com/OblomovDev/status/1638487600930357248'
|
||||||
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code
|
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code
|
||||||
)->get_parent( ).
|
)->get_parent( ).
|
||||||
|
|
||||||
|
|
|
@ -1,166 +0,0 @@
|
||||||
CLASS z2ui5_cl_app_demo_18 DEFINITION PUBLIC.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
|
|
||||||
INTERFACES z2ui5_if_app.
|
|
||||||
|
|
||||||
DATA mv_path TYPE string.
|
|
||||||
DATA mv_value TYPE string.
|
|
||||||
|
|
||||||
TYPES:
|
|
||||||
BEGIN OF ty_file,
|
|
||||||
selkz TYPE abap_bool,
|
|
||||||
name TYPE string,
|
|
||||||
format TYPE string,
|
|
||||||
size TYPE string,
|
|
||||||
descr TYPE string,
|
|
||||||
data TYPE string,
|
|
||||||
END OF ty_file.
|
|
||||||
|
|
||||||
DATA mt_file TYPE STANDARD TABLE OF ty_file WITH EMPTY KEY.
|
|
||||||
DATA ms_file_edit TYPE ty_file.
|
|
||||||
DATA ms_file_prev TYPE ty_file.
|
|
||||||
PROTECTED SECTION.
|
|
||||||
PRIVATE SECTION.
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_app_demo_18 IMPLEMENTATION.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_app~controller.
|
|
||||||
|
|
||||||
CASE client->get( )-lifecycle_method.
|
|
||||||
|
|
||||||
WHEN client->cs-lifecycle_method-on_event.
|
|
||||||
|
|
||||||
CASE client->get( )-event.
|
|
||||||
|
|
||||||
WHEN 'DISPLAY'.
|
|
||||||
ms_file_prev = mt_file[ selkz = abap_true ].
|
|
||||||
|
|
||||||
WHEN 'UPLOAD'.
|
|
||||||
INSERT VALUE #( name = mv_path data = mv_value size = strlen( mv_value ) format = mv_value+5(5) ) INTO TABLE mt_file.
|
|
||||||
CLEAR ms_file_edit.
|
|
||||||
CLEAR mv_value.
|
|
||||||
CLEAR mv_path.
|
|
||||||
|
|
||||||
WHEN 'TEXTAREA_DESCR_CONFIRM'.
|
|
||||||
mt_file[ selkz = abap_true ] = ms_file_edit.
|
|
||||||
CLEAR ms_file_edit.
|
|
||||||
|
|
||||||
WHEN 'TEXTAREA_DATA_CONFIRM'.
|
|
||||||
CLEAR ms_file_edit.
|
|
||||||
|
|
||||||
WHEN 'POPUP_DESCR'.
|
|
||||||
ms_file_edit = mt_file[ selkz = abap_true ].
|
|
||||||
client->popup_view( 'POPUP_DESCR' ).
|
|
||||||
|
|
||||||
WHEN 'POPUP_DATA'.
|
|
||||||
ms_file_edit = mt_file[ selkz = abap_true ].
|
|
||||||
client->popup_view( 'POPUP_DATA' ).
|
|
||||||
|
|
||||||
WHEN 'BACK'.
|
|
||||||
client->nav_app_leave( client->get( )-id_prev_app_stack ).
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
|
|
||||||
WHEN client->cs-lifecycle_method-on_rendering.
|
|
||||||
|
|
||||||
DATA(page) = client->factory_view( 'VIEW_INPUT'
|
|
||||||
)->page(
|
|
||||||
title = 'abap2UI5 - File Upload/Download'
|
|
||||||
navbuttonpress = client->_event( 'BACK' )
|
|
||||||
)->header_content(
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->link( text = 'Source_Code' href = client->get( )-s_request-url_source_code
|
|
||||||
)->get_parent( ).
|
|
||||||
|
|
||||||
page->zz_file_uploader(
|
|
||||||
value = client->_bind( mv_value )
|
|
||||||
path = client->_bind( mv_path )
|
|
||||||
placeholder = 'filepath here...'
|
|
||||||
upload = client->_event( 'UPLOAD' ) ).
|
|
||||||
|
|
||||||
DATA(tab) = page->table(
|
|
||||||
headertext = 'Table'
|
|
||||||
mode = 'SingleSelectLeft'
|
|
||||||
items = client->_bind( mt_file )
|
|
||||||
)->header_toolbar(
|
|
||||||
)->overflow_toolbar(
|
|
||||||
)->title( 'Files'
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
text = 'Edit Description'
|
|
||||||
press = client->_event( 'POPUP_DESCR' )
|
|
||||||
)->button(
|
|
||||||
text = 'Show Base64'
|
|
||||||
press = client->_event( 'POPUP_DATA' )
|
|
||||||
)->button(
|
|
||||||
text = 'display'
|
|
||||||
press = client->_event( 'DISPLAY' )
|
|
||||||
)->get_parent( )->get_parent( ).
|
|
||||||
|
|
||||||
tab->columns(
|
|
||||||
)->column( '10%' )->get_parent(
|
|
||||||
)->column( '10%' )->get_parent(
|
|
||||||
)->column( '10%' )->get_parent(
|
|
||||||
)->column( ).
|
|
||||||
|
|
||||||
tab->items( )->column_list_item( selected = '{SELKZ}' )->cells(
|
|
||||||
)->text( '{NAME}'
|
|
||||||
)->text( '{FORMAT}'
|
|
||||||
)->text( '{SIZE}'
|
|
||||||
)->text( '{DESCR}' ).
|
|
||||||
|
|
||||||
IF ms_file_prev-data IS NOT INITIAL.
|
|
||||||
page->zz_html( '<iframe src="' && ms_file_prev-data && '" height="75%" width="98%"/>' ).
|
|
||||||
CLEAR mv_value.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
|
|
||||||
client->factory_view( 'POPUP_DESCR'
|
|
||||||
)->dialog(
|
|
||||||
title = 'Edit Description'
|
|
||||||
icon = 'sap-icon://edit'
|
|
||||||
)->content(
|
|
||||||
)->text_area(
|
|
||||||
height = '99%'
|
|
||||||
width = '99%'
|
|
||||||
value = client->_bind( ms_file_edit-descr )
|
|
||||||
)->get_parent(
|
|
||||||
)->footer( )->overflow_toolbar(
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
text = 'Cancel'
|
|
||||||
press = client->_event( 'TEXTAREA_CANCEL' )
|
|
||||||
)->button(
|
|
||||||
text = 'Confirm'
|
|
||||||
press = client->_event( 'TEXTAREA_DESCR_CONFIRM' )
|
|
||||||
type = 'Emphasized' ).
|
|
||||||
|
|
||||||
|
|
||||||
client->factory_view( 'POPUP_DATA'
|
|
||||||
)->dialog(
|
|
||||||
stretch = abap_true
|
|
||||||
title = 'Data:'
|
|
||||||
)->content(
|
|
||||||
)->text_area(
|
|
||||||
height = '99%'
|
|
||||||
width = '99%'
|
|
||||||
enabled = abap_false
|
|
||||||
value = client->_bind( ms_file_edit-data )
|
|
||||||
)->get_parent(
|
|
||||||
)->footer( )->overflow_toolbar(
|
|
||||||
)->toolbar_spacer(
|
|
||||||
)->button(
|
|
||||||
text = 'close'
|
|
||||||
press = client->_event( 'TEXTAREA_DATA_CONFIRM' )
|
|
||||||
type = 'Emphasized' ).
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
ENDCLASS.
|
|
|
@ -1,194 +0,0 @@
|
||||||
CLASS lcl_mime_api DEFINITION FINAL.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
CLASS-METHODS read_abap
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
CLASS-METHODS read_json
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
CLASS-METHODS read_js
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
CLASS-METHODS read_yaml
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
CLASS-METHODS read_text
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
|
|
||||||
TYPES:
|
|
||||||
BEGIN OF ty_s_suggest,
|
|
||||||
name TYPE string,
|
|
||||||
value TYPE string,
|
|
||||||
END OF ty_s_suggest.
|
|
||||||
TYPES ty_t_suggest TYPE STANDARD TABLE OF ty_s_suggest WITH EMPTY KEY.
|
|
||||||
|
|
||||||
CLASS-METHODS get_editor_type
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE ty_t_suggest.
|
|
||||||
|
|
||||||
CLASS-METHODS save_data
|
|
||||||
IMPORTING
|
|
||||||
i_mv_editor TYPE string.
|
|
||||||
|
|
||||||
|
|
||||||
PROTECTED SECTION.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS lcl_mime_api IMPLEMENTATION.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD read_abap.
|
|
||||||
|
|
||||||
r_result = `METHOD SELECT_FILES.` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` DATA: LV_RET_CODE TYPE I,` && |\n| &&
|
|
||||||
` LV_USR_AXN TYPE I.` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG(` && |\n| &&
|
|
||||||
` EXPORTING` && |\n| &&
|
|
||||||
` WINDOW_TITLE = 'Select file'` && |\n| &&
|
|
||||||
` MULTISELECTION = 'X'` && |\n| &&
|
|
||||||
` CHANGING` && |\n| &&
|
|
||||||
` FILE_TABLE = ME->PT_FILETAB` && |\n| &&
|
|
||||||
` RC = LV_RET_CODE` && |\n| &&
|
|
||||||
` USER_ACTION = LV_USR_AXN` && |\n| &&
|
|
||||||
` EXCEPTIONS` && |\n| &&
|
|
||||||
` FILE_OPEN_DIALOG_FAILED = 1` && |\n| &&
|
|
||||||
` CNTL_ERROR = 2` && |\n| &&
|
|
||||||
` ERROR_NO_GUI = 3` && |\n| &&
|
|
||||||
` NOT_SUPPORTED_BY_GUI = 4` && |\n| &&
|
|
||||||
` OTHERS = 5` && |\n| &&
|
|
||||||
` ).` && |\n| &&
|
|
||||||
` IF SY-SUBRC <> 0 OR` && |\n| &&
|
|
||||||
` LV_USR_AXN = CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.` && |\n| &&
|
|
||||||
` RAISE EX_FILE_SEL_ERR.` && |\n| &&
|
|
||||||
` ENDIF.` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
` ENDMETHOD. `.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD read_json.
|
|
||||||
|
|
||||||
r_result = `{` && |\n| &&
|
|
||||||
` "quiz": {` && |\n| &&
|
|
||||||
` "sport": {` && |\n| &&
|
|
||||||
` "q1": {` && |\n| &&
|
|
||||||
` "test" : false,` && |\n| &&
|
|
||||||
` "question": "Which one is correct team name in NBA?",` && |\n| &&
|
|
||||||
` "options": [` && |\n| &&
|
|
||||||
` "New York Bulls",` && |\n| &&
|
|
||||||
` "Los Angeles Kings",` && |\n| &&
|
|
||||||
` "Golden State Warriros",` && |\n| &&
|
|
||||||
` "Huston Rocket"` && |\n| &&
|
|
||||||
` ],` && |\n| &&
|
|
||||||
` "answer": "Huston Rocket"` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` },` && |\n| &&
|
|
||||||
` "maths": {` && |\n| &&
|
|
||||||
` "q1": {` && |\n| &&
|
|
||||||
` "question": "5 + 7 = ?",` && |\n| &&
|
|
||||||
` "options": [` && |\n| &&
|
|
||||||
` "10",` && |\n| &&
|
|
||||||
` "11",` && |\n| &&
|
|
||||||
` "12",` && |\n| &&
|
|
||||||
` "13"` && |\n| &&
|
|
||||||
` ],` && |\n| &&
|
|
||||||
` "answer": "12"` && |\n| &&
|
|
||||||
` },` && |\n| &&
|
|
||||||
` "q2": {` && |\n| &&
|
|
||||||
` "question": true,` && |\n| &&
|
|
||||||
` "options": [` && |\n| &&
|
|
||||||
` "1",` && |\n| &&
|
|
||||||
` "2",` && |\n| &&
|
|
||||||
` "3",` && |\n| &&
|
|
||||||
` "4"` && |\n| &&
|
|
||||||
` ],` && |\n| &&
|
|
||||||
` "answer": 487829` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
`}`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD read_js.
|
|
||||||
|
|
||||||
r_result = `function showAlert() {` && |\n| &&
|
|
||||||
` alert("Alert from JS file");` && |\n| &&
|
|
||||||
`}` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
`function updateHeading() {` && |\n| &&
|
|
||||||
` document.getElementById('heading').innerHTML = 'Heading changed with JS';` && |\n| &&
|
|
||||||
`}`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD read_yaml.
|
|
||||||
|
|
||||||
r_result = `# Employee records` && |\n| &&
|
|
||||||
`- martin:` && |\n| &&
|
|
||||||
` name: Martin Developer` && |\n| &&
|
|
||||||
` job: Developer` && |\n| &&
|
|
||||||
` skills:` && |\n| &&
|
|
||||||
` - python` && |\n| &&
|
|
||||||
` - perl` && |\n| &&
|
|
||||||
` - pascal` && |\n| &&
|
|
||||||
`- tabitha:` && |\n| &&
|
|
||||||
` name: Tabitha Bitumen` && |\n| &&
|
|
||||||
` job: Developer` && |\n| &&
|
|
||||||
` skills:` && |\n| &&
|
|
||||||
` - lisp` && |\n| &&
|
|
||||||
` - fortran` && |\n| &&
|
|
||||||
` - erlang`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD read_text.
|
|
||||||
r_result = `TXT test file` && |\n| &&
|
|
||||||
`Purpose: Provide example of this file type` && |\n| &&
|
|
||||||
`Document file type: TXT` && |\n| &&
|
|
||||||
`Version: 1.0` && |\n| &&
|
|
||||||
`Remark:` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
`Example content:` && |\n| &&
|
|
||||||
`The names "John Doe" for males, "Jane Doe" or "Jane Roe" for females, or "Jonnie Doe" and "Janie Doe" for children, or just "Doe" non-gender-specifically are used as placeholder names for a party whose true identity is unknown or mus` &&
|
|
||||||
`t be withheld in a legal action, case, or discussion. The names are also used to refer to acorpse or hospital patient whose identity is unknown. This practice is widely used in the United States and Canada, but is rarely used in other English-speak` &&
|
|
||||||
`ing countries including the United Kingdom itself, from where the use of "John Doe" in a legal context originates. The names Joe Bloggs or John Smith are used in the UK instead, as well as in Australia and New Zealand.` && |\n| &&
|
|
||||||
|\n| &&
|
|
||||||
`John Doe is sometimes used to refer to a typical male in other contexts as well, in a similar manner to John Q. Public, known in Great Britain as Joe Public, John Smith or Joe Bloggs. For example, the first name listed on a form is o` &&
|
|
||||||
`ften John Doe, along with a fictional address or other fictional information to provide an example of how to fill in the form. The name is also used frequently in popular culture, for example in the Frank Capra film Meet John Doe. John Doe was also` &&
|
|
||||||
` the name of a 2002 American television series.`.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD get_editor_type.
|
|
||||||
|
|
||||||
DATA(lv_types) = `abap, abc, actionscript, ada, apache_conf, applescript, asciidoc, assembly_x86, autohotkey, batchfile, bro, c9search, c_cpp, cirru, clojure, cobol, coffee, coldfusion, csharp, css, curly, d, dart, diff, django, dockerfile, ` &&
|
|
||||||
`dot, drools, eiffel, yaml, ejs, elixir, elm, erlang, forth, fortran, ftl, gcode, gherkin, gitignore, glsl, gobstones, golang, groovy, haml, handlebars, haskell, haskell_cabal, haxe, hjson, html, html_elixir, html_ruby, ini, io, jack, jade, java, ja` &&
|
|
||||||
`vascri` &&
|
|
||||||
`pt, json, jsoniq, jsp, jsx, julia, kotlin, latex, lean, less, liquid, lisp, live_script, livescript, logiql, lsl, lua, luapage, lucene, makefile, markdown, mask, matlab, mavens_mate_log, maze, mel, mips_assembler, mipsassembler, mushcode, mysql, ni` &&
|
|
||||||
`x, nsis, objectivec, ocaml, pascal, perl, pgsql, php, plain_text, powershell, praat, prolog, properties, protobuf, python, r, razor, rdoc, rhtml, rst, ruby, rust, sass, scad, scala, scheme, scss, sh, sjs, smarty, snippets, soy_template, space, sql,` &&
|
|
||||||
` sqlserver, stylus, svg, swift, swig, tcl, tex, text, textile, toml, tsx, twig, typescript, vala, vbscript, velocity, verilog, vhdl, wollok, xml, xquery, terraform, slim, redshift, red, puppet, php_laravel_blade, mixal, jssm, fsharp, edifact,` &&
|
|
||||||
` csp, cssound_score, cssound_orchestra, cssound_document`.
|
|
||||||
SPLIT lv_types AT ',' INTO TABLE DATA(lt_types).
|
|
||||||
|
|
||||||
|
|
||||||
r_result = VALUE #( FOR row IN lt_types ( name = shift_right( shift_left( row ) ) value = shift_right( shift_left( row ) ) ) ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD save_data.
|
|
||||||
"save data here
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
|
@ -1,16 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
|
||||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
|
||||||
<asx:values>
|
|
||||||
<VSEOCLASS>
|
|
||||||
<CLSNAME>Z2UI5_CL_APP_DEMO_18</CLSNAME>
|
|
||||||
<LANGU>E</LANGU>
|
|
||||||
<DESCRIPT>demo - file upload/download</DESCRIPT>
|
|
||||||
<STATE>1</STATE>
|
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
|
||||||
<FIXPT>X</FIXPT>
|
|
||||||
<UNICODE>X</UNICODE>
|
|
||||||
</VSEOCLASS>
|
|
||||||
</asx:values>
|
|
||||||
</asx:abap>
|
|
||||||
</abapGit>
|
|
Loading…
Reference in New Issue
Block a user