menudesignerImpl.cls 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. /*------------------------------------------------------------------------
  2. File : adresse_dict
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Thu Jun 26 13:56:20 CEST 2025
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. BLOCK-LEVEL ON ERROR UNDO, THROW.
  11. USING OpenEdge.Core.String FROM PROPATH.
  12. USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
  13. USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
  14. USING OpenEdge.Web.IWebRequest FROM PROPATH.
  15. USING OpenEdge.Web.WebHandler FROM PROPATH.
  16. USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
  17. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  18. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  19. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
  20. USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
  21. USING utilities.utilitiesHandler FROM PROPATH.
  22. CLASS admin.menudesignerImpl INHERITS WebHandler:
  23. DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
  24. DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
  25. DEFINE VARIABLE cAnzeigeName AS CHARACTER NO-UNDO.
  26. DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
  27. DEFINE VARIABLE cSessionToken AS CHARACTER NO-UNDO.
  28. DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
  29. DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
  30. DEFINE TEMP-TABLE tcompanies
  31. SERIALIZE-NAME 'companies'
  32. FIELD company AS CHARACTER SERIALIZE-NAME 'company'
  33. FIELD company_Name AS CHARACTER SERIALIZE-NAME 'company_name'
  34. FIELD lselected AS LOGICAL SERIALIZE-NAME 'selected'
  35. .
  36. DEFINE VARIABLE htcompanies AS HANDLE NO-UNDO.
  37. DEFINE TEMP-TABLE tusers
  38. FIELD user_name AS CHARACTER
  39. FIELD display_name AS CHARACTER
  40. .
  41. DEFINE VARIABLE htusers AS HANDLE NO-UNDO.
  42. DEFINE TEMP-TABLE tlanguages
  43. FIELD language_id AS INTEGER
  44. FIELD language_name AS CHAR
  45. .
  46. DEFINE VARIABLE htlanguages AS HANDLE NO-UNDO.
  47. DEFINE TEMP-TABLE tLevel1
  48. SERIALIZE-NAME ''
  49. FIELD menu_id AS INTEGER
  50. FIELD menu_text AS CHARACTER
  51. FIELD menu_link AS CHARACTER
  52. FIELD level1 AS INTEGER SERIALIZE-NAME 'level1'
  53. FIELD level2 AS INTEGER SERIALIZE-NAME 'level2'
  54. FIELD level3 AS INTEGER SERIALIZE-NAME 'level3'
  55. FIELD openMode AS CHARACTER
  56. FIELD admin AS LOGICAL
  57. FIELD level1_recid AS RECID SERIALIZE-HIDDEN
  58. .
  59. DEFINE TEMP-TABLE tLevel2
  60. SERIALIZE-NAME 'children'
  61. FIELD level1_recid AS RECID SERIALIZE-HIDDEN
  62. FIELD menu_id AS INTEGER
  63. FIELD menu_text AS CHARACTER
  64. FIELD menu_link AS CHARACTER
  65. FIELD level1 AS INTEGER SERIALIZE-NAME 'level1'
  66. FIELD level2 AS INTEGER SERIALIZE-NAME 'level2'
  67. FIELD level3 AS INTEGER SERIALIZE-NAME 'level3'
  68. FIELD openMode AS CHARACTER
  69. FIELD admin AS LOGICAL
  70. FIELD level2_recid AS RECID SERIALIZE-HIDDEN
  71. .
  72. DEFINE TEMP-TABLE tLevel3
  73. SERIALIZE-NAME 'children'
  74. FIELD level2_recid AS RECID SERIALIZE-HIDDEN
  75. FIELD menu_id AS INTEGER
  76. FIELD menu_text AS CHARACTER
  77. FIELD menu_link AS CHARACTER
  78. FIELD level1 AS INTEGER SERIALIZE-NAME 'level1'
  79. FIELD level2 AS INTEGER SERIALIZE-NAME 'level2'
  80. FIELD level3 AS INTEGER SERIALIZE-NAME 'level3'
  81. FIELD openMode AS CHARACTER
  82. FIELD admin AS LOGICAL
  83. FIELD level3_recid AS RECID SERIALIZE-HIDDEN
  84. .
  85. DEFINE DATASET menu_structur
  86. SERIALIZE-NAME 'menuItem'
  87. FOR tLevel1, tLevel2, tLevel3
  88. PARENT-ID-RELATION RELATION1 FOR tLevel1, tLevel2
  89. PARENT-ID-FIELD level1_recid
  90. PARENT-ID-RELATION RELATION2 FOR tLevel2, tLevel3
  91. PARENT-ID-FIELD level2_recid
  92. .
  93. DEFINE VARIABLE hDSmenu_structur AS HANDLE NO-UNDO.
  94. /*------------------------------------------------------------------------------
  95. Purpose:
  96. Notes:
  97. ------------------------------------------------------------------------------*/
  98. METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
  99. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  100. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  101. DEFINE VARIABLE oBody AS String NO-UNDO.
  102. DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
  103. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
  104. DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
  105. DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
  106. DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
  107. DEFINE VARIABLE lOk AS LOGICAL NO-UNDO.
  108. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  109. DEFINE VARIABLE dDateTime AS DATETIME NO-UNDO.
  110. DEFINE VARIABLE cDateTime AS CHARACTER NO-UNDO.
  111. DEFINE VARIABLE oJsonWebmenu AS JsonObject NO-UNDO.
  112. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  113. DEFINE VARIABLE oJsonCompanies AS JsonArray NO-UNDO.
  114. DEFINE VARIABLE oJsonUsers AS JsonArray NO-UNDO.
  115. DEFINE VARIABLE oJsonLanguages AS JsonArray NO-UNDO.
  116. DEFINE VARIABLE oJsonMenu AS JsonArray NO-UNDO.
  117. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  118. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  119. DEFINE VARIABLE cnewuser_name AS CHARACTER NO-UNDO.
  120. DEFINE VARIABLE rtlevel1 AS RECID NO-UNDO.
  121. DEFINE VARIABLE rtlevel2 AS RECID NO-UNDO.
  122. DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
  123. DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
  124. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  125. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  126. DEFINE BUFFER bwebmenu FOR webmenu.
  127. outilitiesHandler = NEW utilitiesHandler().
  128. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  129. outilitiesHandler:getHeaderData(
  130. INPUT poRequest ,
  131. OUTPUT ccompany ,
  132. OUTPUT cuser_name ,
  133. OUTPUT cAnzeigeName ,
  134. OUTPUT ilanguage_id ,
  135. OUTPUT cSessionToken,
  136. OUTPUT cFunction ,
  137. OUTPUT oJsonIdent
  138. ).
  139. oJsonIdent:WriteFile('C:\TEMP\menudesigner_GET.json', TRUE).
  140. lRetVal = FALSE.
  141. DO WHILE cFunction = 'init':
  142. EMPTY TEMP-TABLE tcompanies.
  143. FOR EACH companies NO-LOCK WHERE companies.active:
  144. CREATE tcompanies.
  145. BUFFER-COPY companies TO tcompanies.
  146. ASSIGN
  147. tcompanies.lselected = (IF companies.company = ccompany THEN TRUE ELSE FALSE).
  148. END.
  149. EMPTY TEMP-TABLE tusers.
  150. FOR EACH users NO-LOCK WHERE users.active:
  151. CREATE tusers.
  152. BUFFER-COPY users TO tusers.
  153. END.
  154. EMPTY TEMP-TABLE tlanguages.
  155. FOR EACH languages NO-LOCK:
  156. CREATE tlanguages.
  157. BUFFER-COPY languages TO tlanguages.
  158. END.
  159. oJsonResponse = NEW JsonObject().
  160. oJsonCompanies = NEW JsonArray().
  161. oJsonUsers = NEW JsonArray().
  162. oJsonLanguages = NEW JsonArray().
  163. htcompanies = TEMP-TABLE tcompanies:DEFAULT-BUFFER-HANDLE.
  164. htusers = TEMP-TABLE tusers :DEFAULT-BUFFER-HANDLE.
  165. htlanguages = TEMP-TABLE tlanguages:DEFAULT-BUFFER-HANDLE.
  166. htcompanies:WRITE-JSON('JsonArray', oJsonCompanies ).
  167. htusers :WRITE-JSON('JsonArray', oJsonUsers ).
  168. htlanguages:WRITE-JSON('JsonArray', oJsonLanguages ).
  169. oJsonResponse:ADD('companies', oJsonCompanies).
  170. oJsonResponse:ADD('users' , oJsonUsers ).
  171. oJsonResponse:ADD('languages', oJsonLanguages).
  172. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  173. MESSAGE STRING(lcJsonInhalt).
  174. lRetVal = TRUE.
  175. LEAVE.
  176. END.
  177. cnewuser_name = cuser_name.
  178. DO WHILE cFunction = 'load':
  179. hDSmenu_structur = DATASET menu_structur:HANDLE.
  180. EMPTY TEMP-TABLE tlevel1.
  181. EMPTY TEMP-TABLE tlevel2.
  182. EMPTY TEMP-TABLE tlevel3.
  183. DO WHILE TRUE.
  184. FIND FIRST webmenu NO-LOCK
  185. WHERE webmenu.company = ccompany
  186. AND webmenu.user_name = cnewuser_name NO-ERROR.
  187. IF AVAILABLE webmenu THEN LEAVE.
  188. IF cnewuser_name = 'Admin' THEN LEAVE.
  189. cnewuser_name = 'Admin'.
  190. END.
  191. FOR EACH webmenu NO-LOCK
  192. WHERE webmenu.company = ccompany
  193. AND webmenu.user_name = cnewuser_name
  194. AND webmenu.level1 > 0 :
  195. IF webmenu.level2 = 0 THEN
  196. DO:
  197. CREATE tlevel1.
  198. ASSIGN
  199. tlevel1.level1_recid = RECID(tLevel1)
  200. tlevel1.menu_id = webmenu.level1
  201. tlevel1.menu_text = webmenu.menu_title
  202. tlevel1.menu_link = webmenu.menu_link
  203. tLevel1.level1 = webmenu.level1
  204. tLevel1.level2 = webmenu.level2
  205. tLevel1.level3 = webmenu.level3
  206. tlevel1.openMode = webmenu.openmode
  207. tlevel1.admin = webmenu.ladmin
  208. rtlevel1 = RECID(tlevel1).
  209. NEXT.
  210. END.
  211. IF webmenu.level3 = 0 THEN
  212. DO:
  213. CREATE tlevel2.
  214. ASSIGN
  215. tlevel2.level1_recid = rtlevel1
  216. tlevel2.level2_recid = RECID(tLevel2)
  217. tlevel2.menu_id = webmenu.level2
  218. tlevel2.menu_text = webmenu.menu_title
  219. tlevel2.menu_link = webmenu.menu_link
  220. tLevel2.level1 = webmenu.level1
  221. tLevel2.level2 = webmenu.level2
  222. tLevel2.level3 = webmenu.level3
  223. tlevel2.openmode = webmenu.openmode
  224. tlevel2.admin = webmenu.ladmin
  225. rtlevel2 = RECID(tlevel2).
  226. NEXT.
  227. END.
  228. CREATE tlevel3.
  229. ASSIGN
  230. tlevel3.level2_recid = rtlevel2
  231. tlevel3.level3_recid = RECID(tLevel3)
  232. tlevel3.menu_id = webmenu.level3
  233. tlevel3.menu_text = webmenu.menu_title
  234. tlevel3.menu_link = webmenu.menu_link
  235. tLevel3.level1 = webmenu.level1
  236. tLevel3.level2 = webmenu.level2
  237. tLevel3.level3 = webmenu.level3
  238. tlevel3.openMode = webmenu.openmode
  239. tlevel3.admin = webmenu.ladmin
  240. .
  241. END.
  242. oParser = NEW ObjectModelParser().
  243. oJsonResponse = NEW JsonObject().
  244. oJsonMenu = NEW JsonArray ().
  245. oJsonData = NEW JsonObject().
  246. oJsonData:READ(hDSmenu_structur).
  247. lcJsonInhalt = oJsonData:GetJsonText('menuItem').
  248. ii = INDEX(lcJsonInhalt, '[').
  249. lcJsonInhalt = SUBSTRING(lcJsonInhalt, ii).
  250. ii = R-INDEX(lcJsonInhalt, ']').
  251. lcJsonInhalt = SUBSTRING(lcJsonInhalt,01,ii).
  252. oJsonMenu = CAST(oParser:Parse(lcJsonInhalt), JsonArray) NO-ERROR.
  253. oJsonResponse:ADD('menuItems', oJsonMenu).
  254. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  255. MESSAGE 'Menustruktur = ' STRING(lcJsonInhalt).
  256. lRetVal = TRUE.
  257. LEAVE.
  258. END.
  259. IF NOT lRetVal THEN
  260. DO:
  261. oJsonResponse = NEW JsonObject().
  262. oJsonResponse:ADD('success', FALSE).
  263. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  264. END.
  265. cContent-Type = "application/json".
  266. cDefautlCharSet = 'utf-8'.
  267. oBody = NEW STRING(lcJsonInhalt).
  268. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
  269. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  270. oWriter = NEW WebResponseWriter(oResponse).
  271. oWriter:Open().
  272. oWriter:Close().
  273. RETURN 0.
  274. CATCH e AS Progress.Lang.Error:
  275. END CATCH.
  276. FINALLY:
  277. END FINALLY.
  278. END METHOD.
  279. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  280. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  281. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  282. RETURN result.
  283. END METHOD.
  284. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  285. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  286. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  287. RETURN result.
  288. END METHOD.
  289. /*------------------------------------------------------------------------------
  290. Purpose:
  291. Notes:
  292. ------------------------------------------------------------------------------*/
  293. METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
  294. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  295. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  296. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  297. DEFINE VARIABLE oJsonWebmenu AS JsonArray NO-UNDO.
  298. DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
  299. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  300. DEFINE VARIABLE oFelder AS JsonArray NO-UNDO.
  301. DEFINE VARIABLE oFeld AS JsonObject NO-UNDO.
  302. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
  303. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  304. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  305. DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
  306. DEFINE VARIABLE cJSON AS LONGCHAR NO-UNDO.
  307. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  308. DEFINE VARIABLE cTabellen AS CHARACTER NO-UNDO.
  309. DEFINE VARIABLE cMaskenId AS CHARACTER NO-UNDO.
  310. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  311. lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  312. oJsonData:WRITE(lcJsonString, FALSE).
  313. MESSAGE 'ganzer Eingangsstring POST = ' STRING(lcJsonString).
  314. outilitiesHandler = NEW utilitiesHandler().
  315. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  316. outilitiesHandler:getHeaderData(
  317. INPUT poRequest ,
  318. OUTPUT ccompany ,
  319. OUTPUT cuser_name ,
  320. OUTPUT cAnzeigeName ,
  321. OUTPUT ilanguage_id ,
  322. OUTPUT cSessionToken,
  323. OUTPUT cFunction ,
  324. OUTPUT oJsonIdent
  325. ).
  326. oJsonIdent:WriteFile('C:\TEMP\menudesigner_POST.json', TRUE).
  327. ccompany = oJsonData:GetCharacter('company' ).
  328. cuser_name = oJsonData:GetCharacter('user_name' ).
  329. ilanguage_id = INTEGER(oJsonData:GetCharacter('language_id')).
  330. MESSAGE 'daten aus jsondata' ccompany cuser_name ilanguage_id.
  331. // Aufbereiten Json-Struktur für READ-JSON in DATASET
  332. lcJsonString = oJsonData:GetJsonText('menuItems').
  333. lcJsonString = CHR(123) /* { */
  334. + ' "menuItem": '
  335. + CHR(123) /* { */
  336. + '"": '
  337. + lcJsonString
  338. + CHR(125) /* } */
  339. + CHR(125). /* } */
  340. hDSmenu_structur = DATASET menu_structur:HANDLE.
  341. hDSmenu_structur:READ-JSON ('LONGCHAR', lcJsonString, 'empty') NO-ERROR.
  342. lRetVal = FALSE.
  343. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  344. DEFINE VARIABLE ilevel2 AS INTEGER NO-UNDO.
  345. DEFINE VARIABLE ilevel3 AS INTEGER NO-UNDO.
  346. // Level2 und level3 neu in 10er-Schritten durchnummerieren
  347. FOR EACH tlevel1:
  348. ilevel2 = 0.
  349. FOR EACH tlevel2
  350. WHERE tLevel2.level1 = tlevel1.level1:
  351. ilevel3 = 0.
  352. FOR EACH tlevel3
  353. WHERE tLevel3.level1 = tlevel1.level1
  354. AND tLevel3.level2 = tlevel2.level2:
  355. ilevel3 = ilevel3 + 10.
  356. tlevel3.level3 = ilevel3.
  357. END.
  358. iLevel2 = ilevel2 + 10.
  359. tlevel2.level2 = ilevel2.
  360. END.
  361. END.
  362. FOR EACH webmenu
  363. WHERE webmenu.company = ccompany
  364. AND webmenu.user_name = cuser_name:
  365. DELETE webmenu.
  366. END.
  367. FOR EACH tlevel1:
  368. CREATE webmenu.
  369. ASSIGN
  370. webmenu.company = ccompany
  371. webmenu.user_name = cuser_name
  372. webmenu.level1 = tlevel1.level1
  373. webmenu.level2 = 0
  374. webmenu.level3 = 0
  375. webmenu.menu_title = tlevel1.menu_text
  376. webmenu.menu_link = tlevel1.menu_link
  377. webmenu.ladmin = tlevel1.admin
  378. webmenu.openmode = tlevel1.openMode
  379. webmenu.created_at = NOW
  380. webmenu.updated_at = NOW
  381. .
  382. END.
  383. FOR EACH tlevel2:
  384. CREATE webmenu.
  385. ASSIGN
  386. webmenu.company = ccompany
  387. webmenu.user_name = cuser_name
  388. webmenu.level1 = tlevel2.level1
  389. webmenu.level2 = tlevel2.level2
  390. webmenu.level3 = 0
  391. webmenu.menu_title = tlevel2.menu_text
  392. webmenu.menu_link = tlevel2.menu_link
  393. webmenu.ladmin = tlevel2.admin
  394. webmenu.openmode = tlevel2.openMode
  395. webmenu.created_at = NOW
  396. webmenu.updated_at = NOW
  397. .
  398. END.
  399. FOR EACH tlevel3:
  400. CREATE webmenu.
  401. ASSIGN
  402. webmenu.company = ccompany
  403. webmenu.user_name = cuser_name
  404. webmenu.level1 = tlevel3.level1
  405. webmenu.level2 = tlevel3.level2
  406. webmenu.level3 = tlevel3.level3
  407. webmenu.menu_title = tlevel3.menu_text
  408. webmenu.menu_link = tlevel3.menu_link
  409. webmenu.ladmin = tlevel3.admin
  410. webmenu.openmode = tlevel3.openMode
  411. webmenu.created_at = NOW
  412. webmenu.updated_at = NOW
  413. .
  414. END.
  415. lRetVal = TRUE.
  416. LEAVE.
  417. END.
  418. oResponse = NEW OpenEdge.Web.WebResponse().
  419. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  420. oResponse:ContentType = "application/json;charset=utf-8".
  421. oWriter = NEW WebResponseWriter(oResponse).
  422. oJsonMessage = NEW JsonObject().
  423. IF lRetVal THEN
  424. DO:
  425. oJsonMessage:ADD('success', TRUE).
  426. oJsonMessage:WRITE(lcJsonString, TRUE).
  427. END.
  428. ELSE
  429. DO:
  430. oJsonMessage:ADD('success', TRUE).
  431. oJsonMessage:ADD('message', 'Fehler beim erstellen der Menu-Struktur').
  432. oJsonMessage:WRITE(lcJsonString, FALSE).
  433. END.
  434. MESSAGE 'R�ckmeldung ' STRING(lcJsonString).
  435. oWriter:Open().
  436. oWriter:Write(lcJsonString).
  437. oWriter:Close().
  438. CATCH e AS Progress.Lang.Error:
  439. END CATCH.
  440. FINALLY:
  441. /* DELETE OBJECT oJsonConfig. */
  442. /* DELETE OBJECT oJsonMessage.*/
  443. END FINALLY.
  444. END METHOD.
  445. END CLASS.