menudesignerImpl.cls 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  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. INPUT cQueryString ,
  132. OUTPUT ccompany ,
  133. OUTPUT cuser_name ,
  134. OUTPUT cAnzeigeName ,
  135. OUTPUT ilanguage_id ,
  136. OUTPUT cSessionToken,
  137. OUTPUT cFunction ,
  138. OUTPUT oJsonIdent
  139. ).
  140. oJsonIdent:WriteFile('C:\TEMP\menudesigner_GET.json', TRUE).
  141. lRetVal = FALSE.
  142. DO WHILE cFunction = 'init':
  143. EMPTY TEMP-TABLE tcompanies.
  144. FOR EACH companies NO-LOCK WHERE companies.active:
  145. CREATE tcompanies.
  146. BUFFER-COPY companies TO tcompanies.
  147. ASSIGN
  148. tcompanies.lselected = (IF companies.company = ccompany THEN TRUE ELSE FALSE).
  149. END.
  150. EMPTY TEMP-TABLE tusers.
  151. FOR EACH users NO-LOCK WHERE users.active:
  152. CREATE tusers.
  153. BUFFER-COPY users TO tusers.
  154. END.
  155. EMPTY TEMP-TABLE tlanguages.
  156. FOR EACH languages NO-LOCK:
  157. CREATE tlanguages.
  158. BUFFER-COPY languages TO tlanguages.
  159. END.
  160. oJsonResponse = NEW JsonObject().
  161. oJsonCompanies = NEW JsonArray().
  162. oJsonUsers = NEW JsonArray().
  163. oJsonLanguages = NEW JsonArray().
  164. htcompanies = TEMP-TABLE tcompanies:DEFAULT-BUFFER-HANDLE.
  165. htusers = TEMP-TABLE tusers :DEFAULT-BUFFER-HANDLE.
  166. htlanguages = TEMP-TABLE tlanguages:DEFAULT-BUFFER-HANDLE.
  167. htcompanies:WRITE-JSON('JsonArray', oJsonCompanies ).
  168. htusers :WRITE-JSON('JsonArray', oJsonUsers ).
  169. htlanguages:WRITE-JSON('JsonArray', oJsonLanguages ).
  170. oJsonResponse:ADD('companies', oJsonCompanies).
  171. oJsonResponse:ADD('users' , oJsonUsers ).
  172. oJsonResponse:ADD('languages', oJsonLanguages).
  173. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  174. MESSAGE STRING(lcJsonInhalt).
  175. lRetVal = TRUE.
  176. LEAVE.
  177. END.
  178. cnewuser_name = cuser_name.
  179. DO WHILE cFunction = 'load':
  180. hDSmenu_structur = DATASET menu_structur:HANDLE.
  181. EMPTY TEMP-TABLE tlevel1.
  182. EMPTY TEMP-TABLE tlevel2.
  183. EMPTY TEMP-TABLE tlevel3.
  184. DO WHILE TRUE.
  185. FIND FIRST webmenu NO-LOCK
  186. WHERE webmenu.company = ccompany
  187. AND webmenu.user_name = cnewuser_name NO-ERROR.
  188. IF AVAILABLE webmenu THEN LEAVE.
  189. IF cnewuser_name = 'Admin' THEN LEAVE.
  190. cnewuser_name = 'Admin'.
  191. END.
  192. FOR EACH webmenu NO-LOCK
  193. WHERE webmenu.company = ccompany
  194. AND webmenu.user_name = cnewuser_name
  195. AND webmenu.level1 > 0 :
  196. IF webmenu.level2 = 0 THEN
  197. DO:
  198. CREATE tlevel1.
  199. ASSIGN
  200. tlevel1.level1_recid = RECID(tLevel1)
  201. tlevel1.menu_id = webmenu.level1
  202. tlevel1.menu_text = webmenu.menu_title
  203. tlevel1.menu_link = webmenu.menu_link
  204. tLevel1.level1 = webmenu.level1
  205. tLevel1.level2 = webmenu.level2
  206. tLevel1.level3 = webmenu.level3
  207. tlevel1.openMode = webmenu.openmode
  208. tlevel1.admin = webmenu.ladmin
  209. rtlevel1 = RECID(tlevel1).
  210. NEXT.
  211. END.
  212. IF webmenu.level3 = 0 THEN
  213. DO:
  214. CREATE tlevel2.
  215. ASSIGN
  216. tlevel2.level1_recid = rtlevel1
  217. tlevel2.level2_recid = RECID(tLevel2)
  218. tlevel2.menu_id = webmenu.level2
  219. tlevel2.menu_text = webmenu.menu_title
  220. tlevel2.menu_link = webmenu.menu_link
  221. tLevel2.level1 = webmenu.level1
  222. tLevel2.level2 = webmenu.level2
  223. tLevel2.level3 = webmenu.level3
  224. tlevel2.openmode = webmenu.openmode
  225. tlevel2.admin = webmenu.ladmin
  226. rtlevel2 = RECID(tlevel2).
  227. NEXT.
  228. END.
  229. CREATE tlevel3.
  230. ASSIGN
  231. tlevel3.level2_recid = rtlevel2
  232. tlevel3.level3_recid = RECID(tLevel3)
  233. tlevel3.menu_id = webmenu.level3
  234. tlevel3.menu_text = webmenu.menu_title
  235. tlevel3.menu_link = webmenu.menu_link
  236. tLevel3.level1 = webmenu.level1
  237. tLevel3.level2 = webmenu.level2
  238. tLevel3.level3 = webmenu.level3
  239. tlevel3.openMode = webmenu.openmode
  240. tlevel3.admin = webmenu.ladmin
  241. .
  242. END.
  243. oParser = NEW ObjectModelParser().
  244. oJsonResponse = NEW JsonObject().
  245. oJsonMenu = NEW JsonArray ().
  246. oJsonData = NEW JsonObject().
  247. oJsonData:READ(hDSmenu_structur).
  248. lcJsonInhalt = oJsonData:GetJsonText('menuItem').
  249. ii = INDEX(lcJsonInhalt, '[').
  250. lcJsonInhalt = SUBSTRING(lcJsonInhalt, ii).
  251. ii = R-INDEX(lcJsonInhalt, ']').
  252. lcJsonInhalt = SUBSTRING(lcJsonInhalt,01,ii).
  253. oJsonMenu = CAST(oParser:Parse(lcJsonInhalt), JsonArray) NO-ERROR.
  254. oJsonResponse:ADD('menuItems', oJsonMenu).
  255. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  256. MESSAGE 'Menustruktur = ' STRING(lcJsonInhalt).
  257. lRetVal = TRUE.
  258. LEAVE.
  259. END.
  260. IF NOT lRetVal THEN
  261. DO:
  262. oJsonResponse = NEW JsonObject().
  263. oJsonResponse:ADD('success', FALSE).
  264. oJsonResponse:WRITE(lcJsonInhalt, FALSE).
  265. END.
  266. cContent-Type = "application/json".
  267. cDefautlCharSet = 'utf-8'.
  268. oBody = NEW STRING(lcJsonInhalt).
  269. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
  270. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  271. oWriter = NEW WebResponseWriter(oResponse).
  272. oWriter:Open().
  273. oWriter:Close().
  274. RETURN 0.
  275. CATCH e AS Progress.Lang.Error:
  276. END CATCH.
  277. FINALLY:
  278. END FINALLY.
  279. END METHOD.
  280. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  281. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  282. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  283. RETURN result.
  284. END METHOD.
  285. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  286. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  287. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  288. RETURN result.
  289. END METHOD.
  290. /*------------------------------------------------------------------------------
  291. Purpose:
  292. Notes:
  293. ------------------------------------------------------------------------------*/
  294. METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
  295. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  296. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  297. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  298. DEFINE VARIABLE oJsonWebmenu AS JsonArray NO-UNDO.
  299. DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
  300. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  301. DEFINE VARIABLE oFelder AS JsonArray NO-UNDO.
  302. DEFINE VARIABLE oFeld AS JsonObject NO-UNDO.
  303. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
  304. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  305. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  306. DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
  307. DEFINE VARIABLE cJSON AS LONGCHAR NO-UNDO.
  308. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  309. DEFINE VARIABLE cTabellen AS CHARACTER NO-UNDO.
  310. DEFINE VARIABLE cMaskenId AS CHARACTER NO-UNDO.
  311. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  312. lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  313. oJsonData:WRITE(lcJsonString, FALSE).
  314. MESSAGE 'ganzer Eingangsstring POST = ' STRING(lcJsonString).
  315. outilitiesHandler = NEW utilitiesHandler().
  316. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  317. outilitiesHandler:getHeaderData(
  318. INPUT poRequest ,
  319. INPUT cQueryString ,
  320. OUTPUT ccompany ,
  321. OUTPUT cuser_name ,
  322. OUTPUT cAnzeigeName ,
  323. OUTPUT ilanguage_id ,
  324. OUTPUT cSessionToken,
  325. OUTPUT cFunction ,
  326. OUTPUT oJsonIdent
  327. ).
  328. oJsonIdent:WriteFile('C:\TEMP\menudesigner_POST.json', TRUE).
  329. ccompany = oJsonData:GetCharacter('company' ).
  330. cuser_name = oJsonData:GetCharacter('user_name' ).
  331. ilanguage_id = INTEGER(oJsonData:GetCharacter('language_id')).
  332. MESSAGE 'daten aus jsondata' ccompany cuser_name ilanguage_id.
  333. // Aufbereiten Json-Struktur für READ-JSON in DATASET
  334. lcJsonString = oJsonData:GetJsonText('menuItems').
  335. lcJsonString = CHR(123) /* { */
  336. + ' "menuItem": '
  337. + CHR(123) /* { */
  338. + '"": '
  339. + lcJsonString
  340. + CHR(125) /* } */
  341. + CHR(125). /* } */
  342. hDSmenu_structur = DATASET menu_structur:HANDLE.
  343. hDSmenu_structur:READ-JSON ('LONGCHAR', lcJsonString, 'empty') NO-ERROR.
  344. lRetVal = FALSE.
  345. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  346. DEFINE VARIABLE ilevel2 AS INTEGER NO-UNDO.
  347. DEFINE VARIABLE ilevel3 AS INTEGER NO-UNDO.
  348. // Level2 und level3 neu in 10er-Schritten durchnummerieren
  349. FOR EACH tlevel1:
  350. ilevel2 = 0.
  351. FOR EACH tlevel2
  352. WHERE tLevel2.level1 = tlevel1.level1:
  353. ilevel3 = 0.
  354. FOR EACH tlevel3
  355. WHERE tLevel3.level1 = tlevel1.level1
  356. AND tLevel3.level2 = tlevel2.level2:
  357. ilevel3 = ilevel3 + 10.
  358. tlevel3.level3 = ilevel3.
  359. END.
  360. iLevel2 = ilevel2 + 10.
  361. tlevel2.level2 = ilevel2.
  362. END.
  363. END.
  364. FOR EACH webmenu
  365. WHERE webmenu.company = ccompany
  366. AND webmenu.user_name = cuser_name:
  367. DELETE webmenu.
  368. END.
  369. FOR EACH tlevel1:
  370. CREATE webmenu.
  371. ASSIGN
  372. webmenu.company = ccompany
  373. webmenu.user_name = cuser_name
  374. webmenu.level1 = tlevel1.level1
  375. webmenu.level2 = 0
  376. webmenu.level3 = 0
  377. webmenu.menu_title = tlevel1.menu_text
  378. webmenu.menu_link = tlevel1.menu_link
  379. webmenu.ladmin = tlevel1.admin
  380. webmenu.openmode = tlevel1.openMode
  381. webmenu.created_at = NOW
  382. webmenu.updated_at = NOW
  383. .
  384. END.
  385. FOR EACH tlevel2:
  386. CREATE webmenu.
  387. ASSIGN
  388. webmenu.company = ccompany
  389. webmenu.user_name = cuser_name
  390. webmenu.level1 = tlevel2.level1
  391. webmenu.level2 = tlevel2.level2
  392. webmenu.level3 = 0
  393. webmenu.menu_title = tlevel2.menu_text
  394. webmenu.menu_link = tlevel2.menu_link
  395. webmenu.ladmin = tlevel2.admin
  396. webmenu.openmode = tlevel2.openMode
  397. webmenu.created_at = NOW
  398. webmenu.updated_at = NOW
  399. .
  400. END.
  401. FOR EACH tlevel3:
  402. CREATE webmenu.
  403. ASSIGN
  404. webmenu.company = ccompany
  405. webmenu.user_name = cuser_name
  406. webmenu.level1 = tlevel3.level1
  407. webmenu.level2 = tlevel3.level2
  408. webmenu.level3 = tlevel3.level3
  409. webmenu.menu_title = tlevel3.menu_text
  410. webmenu.menu_link = tlevel3.menu_link
  411. webmenu.ladmin = tlevel3.admin
  412. webmenu.openmode = tlevel3.openMode
  413. webmenu.created_at = NOW
  414. webmenu.updated_at = NOW
  415. .
  416. END.
  417. lRetVal = TRUE.
  418. LEAVE.
  419. END.
  420. oResponse = NEW OpenEdge.Web.WebResponse().
  421. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  422. oResponse:ContentType = "application/json;charset=utf-8".
  423. oWriter = NEW WebResponseWriter(oResponse).
  424. oJsonMessage = NEW JsonObject().
  425. IF lRetVal THEN
  426. DO:
  427. oJsonMessage:ADD('success', TRUE).
  428. oJsonMessage:WRITE(lcJsonString, TRUE).
  429. END.
  430. ELSE
  431. DO:
  432. oJsonMessage:ADD('success', TRUE).
  433. oJsonMessage:ADD('message', 'Fehler beim erstellen der Menu-Struktur').
  434. oJsonMessage:WRITE(lcJsonString, FALSE).
  435. END.
  436. MESSAGE 'R�ckmeldung ' STRING(lcJsonString).
  437. oWriter:Open().
  438. oWriter:Write(lcJsonString).
  439. oWriter:Close().
  440. CATCH e AS Progress.Lang.Error:
  441. END CATCH.
  442. FINALLY:
  443. /* DELETE OBJECT oJsonConfig. */
  444. /* DELETE OBJECT oJsonMessage.*/
  445. END FINALLY.
  446. END METHOD.
  447. END CLASS.