dynamicformImpl.cls 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. /*------------------------------------------------------------------------
  2. File : dynamicformImplImpl
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Wed Nov 19 13:23:38 CET 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.WebResponseWriter FROM PROPATH.
  16. USING OpenEdge.Web.WebHandler FROM PROPATH.
  17. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
  18. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  19. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  20. USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
  21. USING utilities.selectboxHandler FROM PROPATH.
  22. USING utilities.utilitiesHandler FROM PROPATH.
  23. USING admin.usersHandler FROM PROPATH.
  24. USING admin.adminprogsHandler FROM PROPATH.
  25. CLASS admin.dynamicformImpl INHERITS WebHandler:
  26. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  27. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  28. DEFINE VARIABLE oBody AS String NO-UNDO.
  29. DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
  30. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
  31. DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
  32. DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
  33. DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
  34. DEFINE VARIABLE oHandler AS Progress.Lang.Object NO-UNDO.
  35. DEFINE VARIABLE cMethode AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
  37. DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
  38. DEFINE VARIABLE cAnzeigeName AS CHARACTER NO-UNDO.
  39. DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
  40. DEFINE VARIABLE cSessionToken AS CHARACTER NO-UNDO.
  41. DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE cForm_Id AS CHARACTER NO-UNDO.
  43. DEFINE VARIABLE cProgram AS CHARACTER NO-UNDO.
  44. DEFINE VARIABLE cProgramUser AS CHARACTER NO-UNDO.
  45. DEFINE VARIABLE cUsers AS CHARACTER NO-UNDO INIT 'user,admin'.
  46. DEFINE VARIABLE lcMessage AS LONGCHAR NO-UNDO.
  47. DEFINE VARIABLE cErrorNo AS CHARACTER NO-UNDO.
  48. DEFINE VARIABLE lCompany AS LOGICAL NO-UNDO.
  49. DEFINE VARIABLE lActive AS LOGICAL NO-UNDO.
  50. DEFINE VARIABLE lWordindex AS LOGICAL NO-UNDO.
  51. DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
  52. DEFINE VARIABLE oselectboxHandler AS selectboxHandler NO-UNDO.
  53. /*------------------------------------------------------------------------------
  54. Purpose:
  55. Notes:
  56. ------------------------------------------------------------------------------*/
  57. METHOD OVERRIDE PROTECTED INTEGER HandleDelete(INPUT poRequest AS IWebRequest):
  58. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  59. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  60. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  61. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  62. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  63. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  64. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  65. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  66. DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
  67. DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
  68. DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
  69. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  70. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  71. DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
  72. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  73. DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
  74. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  75. lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  76. outilitiesHandler = NEW utilitiesHandler().
  77. outilitiesHandler:getHeaderData(
  78. INPUT poRequest ,
  79. OUTPUT ccompany ,
  80. OUTPUT cuser_name ,
  81. OUTPUT cAnzeigeName ,
  82. OUTPUT ilanguage_id ,
  83. OUTPUT cSessionToken
  84. ).
  85. oJsonIdent = NEW JsonObject().
  86. oJsonIdent:ADD('company' , ccompany ) NO-ERROR.
  87. oJsonIdent:ADD('user_name' , cuser_name ) NO-ERROR.
  88. oJsonIdent:ADD('language_id' , iLanguage_id ) NO-ERROR.
  89. oJsonIdent:ADD('sessionToken', cSessionToken) NO-ERROR.
  90. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  91. DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
  92. cQueryPairs = ENTRY(ii, cQueryString, '&').
  93. cQueryKey = ENTRY(1 , cQueryPairs , '=').
  94. cQueryValue = ENTRY(2 , cQueryPairs , '=').
  95. IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
  96. ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
  97. END.
  98. MESSAGE 'dynamic DELETE' STRING(oJsonIdent:GetJsonText()).
  99. cClassName = ENTRY(1, cForm_Id, '_').
  100. lRetVal = FALSE.
  101. cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
  102. IF LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
  103. cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
  104. IF LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
  105. cProgram = outilitiesHandler:getProgramName (
  106. INPUT oJsonIdent,
  107. INPUT cUsers
  108. ).
  109. cFunction = oJsonIdent:GetCharacter('function').
  110. REPEAT TRANSACTION WHILE cFunction = 'delete' ON ERROR UNDO, LEAVE:
  111. DEFINE VARIABLE cClass AS CHARACTER NO-UNDO.
  112. DEFINE VARIABLE rClass AS Progress.Lang.Class.
  113. DEFINE VARIABLE rParamList AS Progress.Lang.ParameterList.
  114. CASE cClassName:
  115. WHEN 'users' THEN
  116. cClass = 'admin.usersHandler'.
  117. WHEN 'messages' THEN
  118. cClass = 'admin.adminprogsHandler'.
  119. WHEN 'labeltexte' THEN
  120. cClass = 'admin.adminprogsHandler'.
  121. END CASE.
  122. ASSIGN
  123. rClass = Progress.Lang.Class:GetClass(cClass).
  124. oHandler = rClass:NEW().
  125. /* CASE cClassName: */
  126. /* WHEN 'users' THEN */
  127. /* oHandler = NEW usersHandler(). */
  128. /* WHEN 'messages' THEN */
  129. /* oHandler = NEW adminprogsHandler().*/
  130. /* END CASE. */
  131. cMethode = 'deleteData'.
  132. oHandler = rClass:NEW().
  133. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  134. INPUT oJsonIdent ,
  135. INPUT oJsonData ,
  136. OUTPUT oJsonResult
  137. ).
  138. IF NOT lRetVal THEN LEAVE.
  139. oJsonResult:WRITE(lcJsonString, FALSE).
  140. LEAVE.
  141. END.
  142. oResponse = NEW OpenEdge.Web.WebResponse().
  143. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  144. oResponse:ContentType = "application/json;charset=utf-8".
  145. oWriter = NEW WebResponseWriter(oResponse).
  146. IF NOT lRetVal THEN
  147. DO:
  148. oJsonMessage = NEW JsonObject().
  149. oJsonMessage:ADD('success', FALSE).
  150. oJsonMessage:ADD('message', 'Fehler beim create/POST des Users').
  151. oJsonMessage:WRITE(lcJsonString, FALSE).
  152. END.
  153. oWriter:Open().
  154. oWriter:Write(lcJsonString).
  155. oWriter:Close().
  156. RETURN 0.
  157. CATCH e AS Progress.Lang.Error:
  158. END CATCH.
  159. FINALLY:
  160. /* DELETE OBJECT oJsonConfig. */
  161. /* DELETE OBJECT oJsonMessage.*/
  162. END FINALLY.
  163. END METHOD.
  164. /*------------------------------------------------------------------------------
  165. Purpose:
  166. Notes:
  167. ------------------------------------------------------------------------------*/
  168. METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
  169. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  170. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  171. DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
  172. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  173. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  174. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  175. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  176. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  177. DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
  178. DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
  179. DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
  180. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  181. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  182. DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
  183. DEFINE VARIABLE cActiveSelection AS CHARACTER NO-UNDO.
  184. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  185. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  186. outilitiesHandler = NEW utilitiesHandler().
  187. outilitiesHandler:getHeaderData(
  188. INPUT poRequest ,
  189. OUTPUT ccompany ,
  190. OUTPUT cuser_name ,
  191. OUTPUT cAnzeigeName ,
  192. OUTPUT ilanguage_id ,
  193. OUTPUT cSessionToken
  194. ).
  195. oJsonIdent = NEW JsonObject().
  196. oJsonIdent:ADD('H_company' , ccompany ) NO-ERROR.
  197. oJsonIdent:ADD('H_user_name' , cuser_name ) NO-ERROR.
  198. oJsonIdent:ADD('H_display_name', cAnzeigeName ) NO-ERROR.
  199. oJsonIdent:ADD('H_language_id' , iLanguage_id ) NO-ERROR.
  200. oJsonIdent:ADD('H_sessionToken', cSessionToken) NO-ERROR.
  201. //
  202. // Alle Parameter aus dem Query-String lesen und im Object oJsonIdent ergänzenz
  203. //
  204. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  205. DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
  206. cQueryPairs = ENTRY(ii, cQueryString, '&').
  207. cQueryKey = ENTRY(1 , cQueryPairs , '=').
  208. cQueryValue = ENTRY(2 , cQueryPairs , '=').
  209. IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
  210. ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
  211. END.
  212. //
  213. // mögliche Benutzer für das durchsuchen von HTML-DOkumenten und Labeltexten ...
  214. //
  215. cuser_name = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
  216. IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
  217. cuser_name = oJsonIdent:GetCharacter('user_name') NO-ERROR.
  218. IF NOT ERROR-STATUS:ERROR AND LOOKUP(cuser_name, cUsers, ',') = 0 THEN cUsers = cuser_name + ',' + cUsers.
  219. lRetVal = FALSE.
  220. MASTERLOOP:
  221. DO WHILE TRUE:
  222. //
  223. // Programmname aus den möglichen Benutzern ermitteln
  224. //
  225. cProgram = outilitiesHandler:getProgramName (
  226. INPUT oJsonIdent,
  227. INPUT cUsers
  228. ).
  229. MESSAGE 'getProgramName ' cProgram.
  230. IF cProgram = '' THEN
  231. DO:
  232. outilitiesHandler:getErrorMessage(
  233. INPUT '1000',
  234. INPUT oJsonIdent:GetInteger('language_id'),
  235. INPUT '', /* Parameters */
  236. OUTPUT lcMessage
  237. ).
  238. LEAVE.
  239. END.
  240. oJsonIdent:ADD('program', cProgram).
  241. cErrorNo = ''.
  242. cForm_Id = oJsonIdent:GetCharacter("formId") NO-ERROR.
  243. IF NOT ERROR-STATUS:ERROR THEN
  244. DO:
  245. cClassName = ENTRY(1, cForm_Id, '_').
  246. cFileName = ENTRY(1, cForm_Id, '_').
  247. END.
  248. IF cClassName = '' THEN
  249. cErrorNo = cErrorNo
  250. + (IF cErrorNo = '' THEN '' ELSE ',')
  251. + '1001'.
  252. IF cFileName = '' THEN
  253. cErrorNo = cErrorNo
  254. + (IF cErrorNo = '' THEN '' ELSE ',')
  255. + '1002'.
  256. IF cErrorNo <> '' THEN
  257. DO:
  258. outilitiesHandler:getErrorMessage(
  259. INPUT cErrorNo,
  260. INPUT oJsonIdent:GetInteger('language_id'),
  261. INPUT '', /* Parameters */
  262. OUTPUT lcMessage
  263. ).
  264. LEAVE.
  265. END.
  266. oJsonIdent:ADD('class_name', cClassName).
  267. oJsonIdent:ADD('file_name' , cFileName ).
  268. IF NOT oJsonIdent:HAS('company' ) THEN oJsonIdent:ADD('company' , oJsonIdent:GetCharacter('H_company' )).
  269. IF NOT oJsonIdent:HAS('user_name' ) THEN oJsonIdent:ADD('user_name' , oJsonIdent:GetCharacter('H_user_name' )).
  270. IF NOT oJsonIdent:HAS('language_id') THEN oJsonIdent:ADD('language_id', oJsonIdent:GetInteger ('H_language_id')).
  271. oJsonIdent:WriteFile('C:\TEMP\dynamicform_GET.json', TRUE).
  272. cFunction = oJsonIdent:GetCharacter('function').
  273. cCompany = oJsonIdent:GetCharacter('company').
  274. DO WHILE cFunction = 'init' AND cProgram <> '':
  275. FIND FIRST selectboxfields NO-LOCK
  276. WHERE selectboxfields.company = ccompany
  277. AND selectboxfields.program = cform_id NO-ERROR.
  278. IF NOT AVAILABLE selectboxfields THEN LEAVE.
  279. oselectboxHandler = NEW selectboxHandler().
  280. oJsonSelectBoxes = NEW JsonObject().
  281. FOR EACH selectboxfields NO-LOCK
  282. WHERE selectboxfields.company = ccompany
  283. AND selectboxfields.program = cform_id:
  284. DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfields, ';'):
  285. cFieldName = ENTRY(ii, selectboxfields.boxfields, ';').
  286. cFileName = ENTRY(1, cFieldName, '_').
  287. IF cFieldName MATCHES('*company*') THEN
  288. DO:
  289. oJsonBox = NEW JsonArray().
  290. httBuffer = oSelectboxHandler:getSelboxCompany(INPUT cFileName).
  291. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  292. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  293. NEXT.
  294. END.
  295. IF cFieldName MATCHES('*language_id*') THEN
  296. DO:
  297. oJsonBox = NEW JsonArray().
  298. httBuffer = oSelectboxHandler:getSelboxLanguage(INPUT cFileName).
  299. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  300. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  301. NEXT.
  302. END.
  303. IF cFieldName MATCHES('*user_name*') THEN
  304. DO:
  305. oJsonBox = NEW JsonArray().
  306. httBuffer = oSelectboxHandler:getSelboxUsers(INPUT cFileName).
  307. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  308. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  309. NEXT.
  310. END.
  311. IF cFieldName MATCHES('*table_name*') THEN
  312. DO:
  313. oJsonBox = NEW JsonArray().
  314. httBuffer = oSelectboxHandler:getSelboxTables(INPUT cFileName).
  315. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  316. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  317. NEXT.
  318. END.
  319. END.
  320. END.
  321. outilitiesHandler:evaluateFile(
  322. INPUT oJsonIdent ,
  323. OUTPUT cFileName ,
  324. OUTPUT lCompany ,
  325. OUTPUT lActive ,
  326. OUTPUT lWordindex
  327. ).
  328. outilitiesHandler:getActiveSelection(
  329. INPUT oJsonIdent ,
  330. INPUT cFileName ,
  331. OUTPUT cActiveSelection
  332. ).
  333. oJsonResponse = NEW JsonObject().
  334. oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
  335. oJsonResponse:ADD("activeFilter" , cActiveSelection).
  336. oJsonResponse:ADD("hasActiveField" , lActive ).
  337. oJsonResponse:ADD("tableMaxHeight" , '400px' ).
  338. oJsonResponse:ADD("itemsPerPage" , 25 ).
  339. oJsonResponse:WriteFile('C:\Temp\Dynamic_Init_response.json', TRUE).
  340. lRetVal = TRUE.
  341. LEAVE.
  342. END.
  343. DO WHILE cFunction = 'loaddata' AND cProgram <> '':
  344. CASE cClassName:
  345. WHEN 'users' THEN
  346. oHandler = NEW usersHandler().
  347. WHEN 'messages' THEN
  348. oHandler = NEW adminprogsHandler().
  349. WHEN 'labeltexte' THEN
  350. oHandler = NEW adminprogsHandler().
  351. END CASE.
  352. cMethode = 'getData'.
  353. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  354. INPUT oJsonIdent ,
  355. OUTPUT oJsonResult
  356. ).
  357. // oJsonResult:WriteFile('C:\TEMP\loaddate_result.json', TRUE).
  358. oJsonResponse = NEW JsonObject().
  359. oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
  360. oJsonResponse = oJsonResult.
  361. lRetVal = TRUE.
  362. LEAVE.
  363. END.
  364. DO WHILE cFunction = 'change' AND cProgram <> '':
  365. CASE cClassName:
  366. WHEN 'users' THEN
  367. oHandler = NEW usersHandler().
  368. WHEN 'messages' THEN
  369. oHandler = NEW adminprogsHandler().
  370. WHEN 'labeltexte' THEN
  371. oHandler = NEW adminprogsHandler().
  372. END CASE.
  373. cMethode = 'getChanges'.
  374. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  375. INPUT oJsonIdent ,
  376. OUTPUT oJsonResult
  377. ).
  378. oJsonResponse = NEW JsonObject().
  379. oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
  380. oJsonResponse = oJsonResult.
  381. lRetVal = TRUE.
  382. LEAVE.
  383. END.
  384. DO WHILE cFunction = 'rebuild':
  385. CASE cClassName:
  386. WHEN 'users' THEN
  387. oHandler = NEW usersHandler().
  388. WHEN 'messages' THEN
  389. oHandler = NEW adminprogsHandler().
  390. WHEN 'labeltexte' THEN
  391. oHandler = NEW adminprogsHandler().
  392. END CASE.
  393. cMethode = 'rebuildData'.
  394. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  395. INPUT oJsonIdent ,
  396. OUTPUT oJsonResult
  397. ).
  398. IF NOT lRetVal THEN
  399. DO:
  400. outilitiesHandler:getErrorMessage(
  401. INPUT '900' ,
  402. INPUT ilanguage_id ,
  403. INPUT '',
  404. OUTPUT lcMessage).
  405. oJsonResponse = NEW JsonObject().
  406. oJsonResponse:ADD('success', FALSE).
  407. oJsonResponse:ADD('message', lcMessage).
  408. oJsonResponse:WRITE(lcJsonString, FALSE).
  409. END.
  410. oJsonResponse = NEW JsonObject().
  411. oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
  412. oJsonResponse = oJsonResult.
  413. lRetVal = TRUE.
  414. LEAVE.
  415. END.
  416. DO WHILE cFunction = 'saveActiveFilter':
  417. cActiveSelection = oJsonIdent:GetCharacter('activeFilter').
  418. outilitiesHandler:setActiveSelection(
  419. INPUT oJsonIdent ,
  420. INPUT cFileName ,
  421. INPUT cActiveSelection
  422. ).
  423. oJsonResponse = NEW JsonObject().
  424. oJsonResponse:ADD('success', TRUE).
  425. oJsonResponse:WRITE(lcJsonString, FALSE).
  426. lRetVal = TRUE.
  427. LEAVE.
  428. END.
  429. // oJsonResponse:WriteFile('C:\Temp\dynamicform_response.json').
  430. oJsonResponse:WRITE(lcJsonString, FALSE).
  431. LEAVE.
  432. END.
  433. IF NOT lRetVal THEN
  434. DO:
  435. oJsonResponse = NEW JsonObject().
  436. oJsonResponse:ADD('success', FALSE).
  437. oJsonResponse:WRITE(lcJsonString, FALSE).
  438. END.
  439. cContent-Type = "application/json".
  440. cDefautlCharSet = 'utf-8'.
  441. oBody = NEW STRING(lcJsonString).
  442. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
  443. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  444. oWriter = NEW WebResponseWriter(oResponse).
  445. oWriter:Open().
  446. oWriter:Close().
  447. RETURN 0.
  448. CATCH e AS Progress.Lang.Error:
  449. END CATCH.
  450. FINALLY:
  451. END FINALLY.
  452. END METHOD.
  453. /*------------------------------------------------------------------------------
  454. Purpose:
  455. Notes:
  456. ------------------------------------------------------------------------------*/
  457. METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
  458. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  459. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  460. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  461. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  462. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  463. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  464. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  465. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  466. DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
  467. DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
  468. DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
  469. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  470. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  471. DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
  472. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  473. DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
  474. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  475. lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  476. outilitiesHandler = NEW utilitiesHandler().
  477. outilitiesHandler:getHeaderData(
  478. INPUT poRequest ,
  479. OUTPUT ccompany ,
  480. OUTPUT cuser_name ,
  481. OUTPUT cAnzeigeName ,
  482. OUTPUT ilanguage_id ,
  483. OUTPUT cSessionToken
  484. ).
  485. oJsonIdent = NEW JsonObject().
  486. oJsonIdent:ADD('H_company' , ccompany ) NO-ERROR.
  487. oJsonIdent:ADD('H_user_name' , cuser_name ) NO-ERROR.
  488. oJsonIdent:ADD('H_display_name', cAnzeigeName ) NO-ERROR.
  489. oJsonIdent:ADD('H_language_id' , iLanguage_id ) NO-ERROR.
  490. oJsonIdent:ADD('H_sessionToken', cSessionToken) NO-ERROR.
  491. //
  492. // Alle Parameter aus dem Query-String lesen und im Object oJsonIdent ergänzenz
  493. //
  494. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  495. DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
  496. cQueryPairs = ENTRY(ii, cQueryString, '&').
  497. cQueryKey = ENTRY(1 , cQueryPairs , '=').
  498. cQueryValue = ENTRY(2 , cQueryPairs , '=').
  499. IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
  500. ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
  501. END.
  502. lRetVal = FALSE.
  503. cProgram = outilitiesHandler:getProgramName (
  504. INPUT oJsonIdent,
  505. INPUT cUsers
  506. ).
  507. cFunction = oJsonIdent:GetCharacter('function').
  508. REPEAT TRANSACTION WHILE cFunction = 'create' ON ERROR UNDO, LEAVE:
  509. CASE cClassName:
  510. WHEN 'users' THEN
  511. oHandler = NEW usersHandler().
  512. WHEN 'messages' THEN
  513. oHandler = NEW adminprogsHandler().
  514. WHEN 'labeltexte' THEN
  515. oHandler = NEW adminprogsHandler().
  516. END CASE.
  517. cMethode = 'createData'.
  518. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  519. INPUT oJsonIdent ,
  520. INPUT oJsonData ,
  521. OUTPUT oJsonResult
  522. ).
  523. IF NOT lRetVal THEN LEAVE.
  524. oJsonResult:WRITE(lcJsonString, FALSE).
  525. LEAVE.
  526. END.
  527. oResponse = NEW OpenEdge.Web.WebResponse().
  528. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  529. oResponse:ContentType = "application/json;charset=utf-8".
  530. oWriter = NEW WebResponseWriter(oResponse).
  531. IF NOT lRetVal THEN
  532. DO:
  533. oJsonMessage = NEW JsonObject().
  534. oJsonMessage:ADD('success', FALSE).
  535. oJsonMessage:ADD('message', oJsonResult:GetLongchar('message')).
  536. oJsonMessage:WRITE(lcJsonString, FALSE).
  537. END.
  538. MESSAGE 'Rueckmeldung beim POST (CREATE) ' STRING(lcJsonString).
  539. oWriter:Open().
  540. oWriter:Write(lcJsonString).
  541. oWriter:Close().
  542. RETURN 0.
  543. CATCH e AS Progress.Lang.Error:
  544. END CATCH.
  545. FINALLY:
  546. /* DELETE OBJECT oJsonConfig. */
  547. /* DELETE OBJECT oJsonMessage.*/
  548. END FINALLY.
  549. END METHOD.
  550. /*------------------------------------------------------------------------------
  551. Purpose:
  552. Notes:
  553. ------------------------------------------------------------------------------*/
  554. METHOD OVERRIDE PROTECTED INTEGER HandlePatch(INPUT poRequest AS IWebRequest):
  555. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  556. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  557. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  558. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  559. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  560. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  561. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  562. DEFINE VARIABLE cQueryString AS CHARACTER NO-UNDO.
  563. DEFINE VARIABLE cQueryPairs AS CHARACTER NO-UNDO.
  564. DEFINE VARIABLE cQueryKey AS CHARACTER NO-UNDO.
  565. DEFINE VARIABLE cQueryValue AS CHARACTER NO-UNDO.
  566. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  567. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  568. DEFINE VARIABLE cClassName AS CHARACTER NO-UNDO.
  569. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  570. DEFINE VARIABLE oJsonMessage AS JsonObject NO-UNDO.
  571. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  572. lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  573. outilitiesHandler = NEW utilitiesHandler().
  574. outilitiesHandler:getHeaderData(
  575. INPUT poRequest ,
  576. OUTPUT ccompany ,
  577. OUTPUT cuser_name ,
  578. OUTPUT cAnzeigeName ,
  579. OUTPUT ilanguage_id ,
  580. OUTPUT cSessionToken
  581. ).
  582. oJsonIdent = NEW JsonObject().
  583. oJsonIdent:ADD('company' , ccompany ) NO-ERROR.
  584. oJsonIdent:ADD('user_name' , cuser_name ) NO-ERROR.
  585. oJsonIdent:ADD('language_id' , iLanguage_id ) NO-ERROR.
  586. oJsonIdent:ADD('sessionToken', cSessionToken) NO-ERROR.
  587. cQueryString = STRING(poRequest:GetContextValue("QUERY_STRING")) NO-ERROR.
  588. DO ii = 1 TO NUM-ENTRIES(cQueryString, '&'):
  589. cQueryPairs = ENTRY(ii, cQueryString, '&').
  590. cQueryKey = ENTRY(1 , cQueryPairs , '=').
  591. cQueryValue = ENTRY(2 , cQueryPairs , '=').
  592. IF oJsonIdent:Has(cQueryKey) THEN oJsonIdent:SET(cQueryKey, cQueryValue) NO-ERROR.
  593. ELSE oJsonIdent:ADD(cQueryKey, cQueryValue) NO-ERROR.
  594. END.
  595. MESSAGE 'dynamic PATCH' STRING(oJsonIdent:GetJsonText()).
  596. cForm_Id = poRequest:URI:GetQueryValue("formId") NO-ERROR.
  597. cClassName = ENTRY(1, cForm_Id, '_').
  598. lRetVal = FALSE.
  599. cProgram = outilitiesHandler:getProgramName (
  600. INPUT oJsonIdent,
  601. INPUT cUsers
  602. ).
  603. cFunction = oJsonIdent:GetCharacter('function').
  604. REPEAT TRANSACTION WHILE cFunction = 'update' ON ERROR UNDO, LEAVE:
  605. CASE cClassName:
  606. WHEN 'users' THEN
  607. oHandler = NEW usersHandler().
  608. WHEN 'messages' THEN
  609. oHandler = NEW adminprogsHandler().
  610. WHEN 'labeltexte' THEN
  611. oHandler = NEW adminprogsHandler().
  612. END CASE.
  613. cMethode = 'updateData'.
  614. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  615. INPUT oJsonIdent ,
  616. INPUT oJsonData ,
  617. OUTPUT oJsonResult
  618. ).
  619. oJsonResult:WRITE(LcJsonString, FALSE).
  620. LEAVE.
  621. END.
  622. oResponse = NEW OpenEdge.Web.WebResponse().
  623. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  624. oResponse:ContentType = "application/json;charset=utf-8".
  625. oWriter = NEW WebResponseWriter(oResponse).
  626. IF NOT lRetVal THEN
  627. DO:
  628. oJsonMessage = NEW JsonObject().
  629. oJsonMessage:ADD('success', FALSE).
  630. oJsonMessage:ADD('message', 'Fehler beim Update/PATCH des Users').
  631. oJsonMessage:WRITE(lcJsonString, FALSE).
  632. END.
  633. // MESSAGE 'R�ckmeldung ' STRING(lcJsonString).
  634. oWriter:Open().
  635. oWriter:Write(lcJsonString).
  636. oWriter:Close().
  637. RETURN 0.
  638. CATCH e AS Progress.Lang.Error:
  639. END CATCH.
  640. FINALLY:
  641. /* DELETE OBJECT oJsonConfig. */
  642. /* DELETE OBJECT oJsonMessage.*/
  643. END FINALLY.
  644. END METHOD.
  645. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  646. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  647. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  648. RETURN result.
  649. END METHOD.
  650. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  651. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  652. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  653. RETURN result.
  654. END METHOD.
  655. DESTRUCTOR PUBLIC dynamicformImpl ( ):
  656. END DESTRUCTOR.
  657. END CLASS.