dynamicformImpl.cls 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107
  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 Progress.Lang.ParameterList FROM PROPATH.
  21. USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
  22. USING utilities.selectboxHandler FROM PROPATH.
  23. USING utilities.utilitiesHandler FROM PROPATH.
  24. CLASS admin.dynamicformImpl INHERITS WebHandler:
  25. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  26. DEFINE VARIABLE oJsonData AS JsonObject 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 cQueryString AS CHARACTER NO-UNDO.
  34. DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
  35. DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO.
  36. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  37. DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
  38. DEFINE VARIABLE cUser_Name AS CHARACTER NO-UNDO.
  39. DEFINE VARIABLE cAnzeigeName AS CHARACTER NO-UNDO.
  40. DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
  41. DEFINE VARIABLE cSessionToken AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE cFunction AS CHARACTER NO-UNDO.
  43. DEFINE VARIABLE cFormId AS CHARACTER NO-UNDO.
  44. DEFINE VARIABLE cProgram AS CHARACTER NO-UNDO.
  45. DEFINE VARIABLE cFormUser AS CHARACTER NO-UNDO.
  46. DEFINE VARIABLE cFormColumns AS CHARACTER NO-UNDO.
  47. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  48. DEFINE VARIABLE cFieldName AS CHARACTER NO-UNDO.
  49. DEFINE VARIABLE cUsers AS CHARACTER NO-UNDO INIT 'user,admin'.
  50. DEFINE VARIABLE cMaxHeight AS CHARACTER NO-UNDO.
  51. DEFINE VARIABLE iItemsPage AS INTEGER NO-UNDO.
  52. DEFINE VARIABLE cActiveSelection AS CHARACTER NO-UNDO.
  53. DEFINE VARIABLE lCompany AS LOGICAL NO-UNDO.
  54. DEFINE VARIABLE lActive AS LOGICAL NO-UNDO.
  55. DEFINE VARIABLE lWordindex AS LOGICAL NO-UNDO.
  56. DEFINE VARIABLE lSendChange AS LOGICAL NO-UNDO.
  57. DEFINE VARIABLE lcMessage AS LONGCHAR NO-UNDO.
  58. DEFINE VARIABLE cErrorNo AS CHARACTER NO-UNDO.
  59. DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO.
  60. DEFINE VARIABLE hError AS HANDLE NO-UNDO.
  61. DEFINE VARIABLE hBuffer AS HANDLE NO-UNDO.
  62. DEFINE VARIABLE hField AS HANDLE NO-UNDO.
  63. DEFINE VARIABLE cMethode AS CHARACTER NO-UNDO.
  64. DEFINE VARIABLE cClass AS CHARACTER NO-UNDO.
  65. DEFINE VARIABLE rClass AS Progress.Lang.Class.
  66. DEFINE VARIABLE oHandler AS Progress.Lang.Object NO-UNDO.
  67. DEFINE VARIABLE oParam AS ParameterList NO-UNDO.
  68. DEFINE VARIABLE oJsonIdent AS JsonObject NO-UNDO.
  69. DEFINE VARIABLE oJsonActiveSelectBox AS JsonObject NO-UNDO.
  70. DEFINE VARIABLE oJsonMessageBox AS JsonObject NO-UNDO.
  71. DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
  72. DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
  73. DEFINE VARIABLE oselectboxHandler AS selectboxHandler NO-UNDO.
  74. /*------------------------------------------------------------------------------
  75. Purpose:
  76. Notes:
  77. ------------------------------------------------------------------------------*/
  78. CONSTRUCTOR PUBLIC dynamicformImpl ( ):
  79. SUPER ().
  80. hError = ERROR-STATUS:HANDLE.
  81. outilitiesHandler = NEW utilitiesHandler().
  82. oselectboxHandler = NEW selectboxHandler().
  83. CATCH e AS Progress.Lang.Error:
  84. END CATCH.
  85. FINALLY:
  86. END FINALLY.
  87. END CONSTRUCTOR.
  88. /*------------------------------------------------------------------------------
  89. Purpose:
  90. Notes:
  91. ------------------------------------------------------------------------------*/
  92. /* METHOD PUBLIC VOID createJsonIdent( */
  93. /* INPUT poRequest AS IWebRequest */
  94. /* ): */
  95. /* */
  96. /* DEFINE VARIABLE cUser AS CHARACTER NO-UNDO. */
  97. /* */
  98. /* DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO. */
  99. /*MESSAGE 'CREATE JSONIDENT **********************************'. */
  100. /* outilitiesHandler:getHeaderData( */
  101. /* INPUT poRequest , */
  102. /* OUTPUT ccompany , */
  103. /* OUTPUT cUser_Name , */
  104. /* OUTPUT cAnzeigeName , */
  105. /* OUTPUT ilanguage_id , */
  106. /* OUTPUT cSessionToken, */
  107. /* OUTPUT cFunction , */
  108. /* OUTPUT oJsonIdent */
  109. /* ). */
  110. /* cFormId = oJsonIdent:GetCharacter('formId'). */
  111. /* cFileName = ENTRY(1, cFormId, '_'). */
  112. /* // */
  113. /* // mögliche Benutzer für das durchsuchen von HTML-Dokumenten und Labeltexten ... */
  114. /* // */
  115. /* cUser = oJsonIdent:GetCharacter('H_user_name') NO-ERROR. */
  116. /* IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.*/
  117. /* cUser = oJsonIdent:GetCharacter('user_name') NO-ERROR. */
  118. /* IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.*/
  119. /* oJsonIdent:ADD('cUsers', cUsers). */
  120. /* // */
  121. /* // Wenn ein UI Multi-Tab hat, wird es hier erstellt */
  122. /* // */
  123. /* RETURN. */
  124. /* */
  125. /* END METHOD. */
  126. /*------------------------------------------------------------------------------
  127. Purpose:
  128. Notes:
  129. ------------------------------------------------------------------------------*/
  130. METHOD PUBLIC VOID createMultiTab(
  131. OUTPUT oJsonTabs AS JsonArray
  132. ):
  133. DEFINE VARIABLE cTabGroup AS CHARACTER NO-UNDO.
  134. DEFINE VARIABLE cHtmlUser AS CHARACTER NO-UNDO.
  135. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  136. DEFINE VARIABLE cDBName AS CHARACTER NO-UNDO.
  137. DEFINE VARIABLE cTabProgram AS CHARACTER NO-UNDO.
  138. DEFINE VARIABLE cHtmlFileName AS CHARACTER NO-UNDO.
  139. DEFINE VARIABLE cKeyField AS CHARACTER NO-UNDO.
  140. DEFINE VARIABLE cKeyFields AS CHARACTER NO-UNDO.
  141. DEFINE VARIABLE oJsonTab AS JsonObject NO-UNDO.
  142. DEFINE VARIABLE oJsonMasterKeyFields AS JsonArray NO-UNDO.
  143. // MESSAGE 'START MULTITAB'.
  144. oJsonTabs = NEW JsonArray().
  145. FIND programs NO-LOCK
  146. WHERE programs.formId = cFormId NO-ERROR.
  147. cTabGroup = programs.tab_group.
  148. cProgram = programs.program.
  149. DO ii = 1 TO NUM-ENTRIES(cUsers, ','):
  150. cHtmlUser = ENTRY(ii, cUsers, ',').
  151. FIND FIRST htmldokumente
  152. WHERE htmldokumente.company = ccompany
  153. AND htmldokumente.user_name = cHtmlUser
  154. AND htmldokumente.language_id = ilanguage_id
  155. AND htmldokumente.program = cProgram NO-ERROR.
  156. IF AVAILABLE htmldokumente THEN LEAVE.
  157. END.
  158. oJsonTab = NEW JsonObject().
  159. oJsonTab:ADD('tabIndex' , 1).
  160. oJsonTab:ADD('formId' , htmldokumente.formId).
  161. oJsonTab:ADD('title' , htmldokumente.formtitle).
  162. oJsonTab:ADD('programName', cprogram).
  163. oJsonTab:ADD('isMain' , programs.isMain).
  164. oJsonTabs:ADD(oJsonTab).
  165. FOR EACH programs NO-LOCK
  166. WHERE programs.tab_group = cTabGroup
  167. AND programs.tab_index > 1
  168. BY programs.tab_index:
  169. cTabProgram = programs.program.
  170. // MESSAGE 'Tab-Gruppe' cTabGroup '-' cTabProgram.
  171. DO ii = 1 TO NUM-ENTRIES(cUsers, ','):
  172. cHtmlUser = ENTRY(ii, cUsers, ',').
  173. FIND FIRST htmldokumente
  174. WHERE htmldokumente.company = ccompany
  175. AND htmldokumente.user_name = cHtmlUser
  176. AND htmldokumente.language_id = ilanguage_id
  177. AND htmldokumente.program = cTabProgram NO-ERROR.
  178. IF AVAILABLE htmldokumente THEN LEAVE.
  179. END.
  180. outilitiesHandler:getFileNameFromFormId(
  181. INPUT htmldokumente.formId,
  182. OUTPUT cHtmlFileName,
  183. OUTPUT cDBName
  184. ).
  185. oJsonTab = NEW JsonObject().
  186. oJsonTab:ADD('tabIndex' , programs.tab_index).
  187. oJsonTab:ADD('formId' , htmldokumente.formId).
  188. oJsonTab:ADD('title' , htmldokumente.formtitle).
  189. oJsonTab:ADD('programName', htmldokumente.program).
  190. oJsonTab:ADD('isMain' , programs.isMain).
  191. oJsonTab:ADD('tabType' , programs.tabtype).
  192. oJsonTab:ADD('allowCreate', programs.allowCreate).
  193. oJsonTab:ADD('allowEdit' , programs.allowedit).
  194. oJsonTab:ADD('allowDelete', programs.allowDelete).
  195. oJsonTab:ADD('allowCopy' , programs.allowCopy).
  196. cKeyFields = REPLACE(programs.masterkeyfields, ',', ';').
  197. DO ii = 1 TO NUM-ENTRIES(cKeyFields, ';').
  198. cKeyField = ENTRY(ii, cKeyFields, ';').
  199. oJsonMasterKeyFields = NEW JsonArray().
  200. oJsonMasterKeyFields:ADD(cKeyField).
  201. oJsonTab:ADD('masterKeyFields', oJsonMasterKeyFields).
  202. END.
  203. oJsonTabs:ADD(oJsonTab).
  204. END.
  205. // oJsonTabs:WriteFile('C:\TEMP\oJsonTabs_createMultiTab.json', TRUE).
  206. // oJsonTabs:WRITE(lcString).
  207. // MESSAGE 'ENDE MULTITAB'.
  208. RETURN.
  209. END METHOD.
  210. /*------------------------------------------------------------------------------
  211. Purpose:
  212. Notes:
  213. ------------------------------------------------------------------------------*/
  214. METHOD OVERRIDE PROTECTED INTEGER HandleDelete(INPUT poRequest AS IWebRequest):
  215. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  216. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  217. DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
  218. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  219. WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  220. DO WHILE TRUE:
  221. iRetVal = processingInitFunction(
  222. INPUT poRequest ,
  223. OUTPUT oJsonResponse
  224. ).
  225. IF iRetVal = 0 THEN RETURN 0.
  226. IF iRetVal = -1 THEN LEAVE.
  227. IF iRetVal = 1 THEN responseOK(
  228. INPUT oJsonResponse
  229. ).
  230. RETURN 0.
  231. END.
  232. REPEAT TRANSACTION WHILE cFunction = 'delete' ON ERROR UNDO, LEAVE:
  233. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  234. oJsonIdent:Write(lcJsonString, FALSE).
  235. IF VALID-OBJECT(rClass) THEN
  236. DO:
  237. oParam = NEW ParameterList(2).
  238. oParam:SetParameter(1, 'longchar' , 'INPUT', lcJsonString ) NO-ERROR.
  239. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  240. outilitiesHandler:evaluateErrorStatus(hError).
  241. oHandler = rClass:New(oParam) NO-ERROR.
  242. outilitiesHandler:evaluateErrorStatus(hError).
  243. END.
  244. // oJsonData:WriteFile('C:\TEMP\dynamicform_delete_data.json', TRUE).
  245. cMethode = 'deleteData'.
  246. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  247. INPUT oJsonData ,
  248. OUTPUT oJsonResult
  249. ) NO-ERROR.
  250. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  251. // MESSAGE lRetVal.
  252. oJsonResult:WRITE(lcString, FALSE).
  253. // MESSAGE STRING(lcString).
  254. responseOK(
  255. INPUT oJsonResult
  256. ).
  257. RETURN 0.
  258. END.
  259. oResponse = NEW OpenEdge.Web.WebResponse().
  260. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  261. oResponse:ContentType = "application/json;charset=utf-8".
  262. oJsonResult:WRITE(lcJsonString, FALSE).
  263. // oJsonResult:WriteFile(SUBSTITUTE('C:\TEMP\DYNAMIC_&1_Respons.json', cFunction), TRUE).
  264. oWriter = NEW WebResponseWriter(oResponse).
  265. oWriter:Open().
  266. oWriter:Write(lcJsonString).
  267. oWriter:Close().
  268. RETURN 0.
  269. CATCH e AS Progress.Lang.Error:
  270. END CATCH.
  271. FINALLY:
  272. DELETE OBJECT oHandler NO-ERROR.
  273. DELETE OBJECT oResponse NO-ERROR.
  274. DELETE OBJECT oWriter NO-ERROR.
  275. END FINALLY.
  276. END METHOD.
  277. /*------------------------------------------------------------------------------
  278. Purpose:
  279. Notes:
  280. ------------------------------------------------------------------------------*/
  281. METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
  282. DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
  283. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  284. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  285. DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
  286. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  287. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  288. DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
  289. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  290. DO WHILE TRUE:
  291. iRetVal = processingInitFunction(
  292. INPUT poRequest ,
  293. OUTPUT oJsonResponse
  294. ).
  295. IF iRetVal = 0 THEN RETURN 0.
  296. IF iRetVal = -1 THEN LEAVE.
  297. IF iRetVal = 1 THEN responseOK(
  298. INPUT oJsonResponse
  299. ).
  300. RETURN 0.
  301. END.
  302. IF cFunction <> 'saveActiveFilter' THEN
  303. DO:
  304. outilitiesHandler:getActiveSelection(
  305. INPUT oJsonIdent ,
  306. INPUT cFileName ,
  307. OUTPUT cActiveSelection
  308. ).
  309. IF cActiveSelection <> '' THEN
  310. DO:
  311. IF NOT oJsonIdent:HAS('activeFilter') THEN oJsonIdent:ADD('activeFilter', cActiveSelection ).
  312. ELSE oJsonIdent:SET('activeFilter', cActiveSelection ).
  313. END.
  314. END.
  315. DO WHILE cFunction = 'loaddata' AND cProgram <> '':
  316. // MESSAGE 'do while loaddata' cFileName.
  317. IF oJsonIdent:HAS('sortField') THEN
  318. DO:
  319. DEFINE VARIABLE cSortField AS CHARACTER NO-UNDO.
  320. DEFINE VARIABLE cDirection AS CHARACTER NO-UNDO.
  321. cSortField = oJsonIdent:GetCharacter('sortField').
  322. cDirection = oJsonIdent:GetCharacter('sortDirection').
  323. outilitiesHandler:writeSortfields(
  324. INPUT oJsonIdent ,
  325. INPUT cFileName ,
  326. INPUT cSortField ,
  327. INPUT cDirection
  328. ).
  329. END.
  330. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  331. oJsonIdent:Write(lcJsonString, FALSE).
  332. IF VALID-OBJECT(rClass) THEN
  333. DO:
  334. oParam = NEW ParameterList(2).
  335. oParam:SetParameter(1, 'longchar', 'INPUT', lcJsonString ) NO-ERROR.
  336. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  337. outilitiesHandler:evaluateErrorStatus(hError).
  338. oHandler = rClass:New(oParam) NO-ERROR.
  339. outilitiesHandler:evaluateErrorStatus(hError).
  340. END.
  341. cMethode = 'getData'.
  342. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  343. OUTPUT oJsonResponse
  344. ) NO-ERROR.
  345. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  346. // oJsonResponse:WriteFile(SUBSTITUTE('C:\TEMP\Loaddata_response_&1.json', cProgram), TRUE).
  347. responseOK(
  348. INPUT oJsonResponse
  349. ).
  350. RETURN 0.
  351. END.
  352. DO WHILE cFunction = 'loaddataunique' AND cProgram <> '':
  353. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  354. oJsonIdent:Write(lcJsonString, FALSE).
  355. IF VALID-OBJECT(rClass) THEN
  356. DO:
  357. oParam = NEW ParameterList(2).
  358. oParam:SetParameter(1, 'longchar', 'INPUT', lcJsonString ) NO-ERROR.
  359. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  360. outilitiesHandler:evaluateErrorStatus(hError).
  361. oHandler = rClass:New(oParam) NO-ERROR.
  362. outilitiesHandler:evaluateErrorStatus(hError).
  363. END.
  364. cMethode = 'getDataUnique'.
  365. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  366. OUTPUT oJsonResult
  367. ) NO-ERROR.
  368. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  369. // oJsonResponse:WriteFile('C:\TEMP\Loaddataunique_response.json', TRUE).
  370. // oJsonResponse:ADD('selectOptionsFix', oJsonSelectBoxes).
  371. // oJsonResult:write(lcString, FALSE).
  372. // MESSAGE STRING(lcString).
  373. responseOK(
  374. INPUT oJsonResult
  375. ).
  376. RETURN 0.
  377. END.
  378. DO WHILE cFunction = 'rebuild':
  379. // MESSAGE 'function rebuild starten' cFileName.
  380. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  381. oJsonIdent:Write(lcJsonString, FALSE).
  382. IF VALID-OBJECT(rClass) THEN
  383. DO:
  384. oParam = NEW ParameterList(2).
  385. oParam:SetParameter(1, 'longchar' , 'INPUT', lcJsonString ) NO-ERROR.
  386. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  387. outilitiesHandler:evaluateErrorStatus(hError).
  388. oHandler = rClass:New(oParam) NO-ERROR.
  389. outilitiesHandler:evaluateErrorStatus(hError).
  390. END.
  391. cMethode = 'rebuildData'.
  392. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  393. OUTPUT oJsonResult
  394. ) NO-ERROR.
  395. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  396. // MESSAGE 'Return bei rebuild' lRetVal.
  397. oJsonResult:write(lcString, FALSE).
  398. // MESSAGE STRING(lcString).
  399. responseOK(
  400. INPUT oJsonResult
  401. ).
  402. RETURN 0.
  403. END.
  404. DO WHILE cFunction = 'saveActiveFilter':
  405. cActiveSelection = oJsonIdent:GetCharacter('activeFilter').
  406. // MESSAGE cFunction '-' cActiveSelection.
  407. outilitiesHandler:setActiveSelection(
  408. INPUT oJsonIdent ,
  409. INPUT cFileName ,
  410. INPUT cActiveSelection
  411. ).
  412. oJsonResponse = NEW JsonObject().
  413. oJsonResponse:ADD('success', TRUE).
  414. // oJsonResponse:WRITE(lcJsonString, FALSE).
  415. lRetVal = TRUE.
  416. LEAVE.
  417. END.
  418. DO WHILE cFunction = 'lookup' AND cProgram <> '':
  419. cMethode = oJsonIdent:GetCharacter('lookupField') NO-ERROR.
  420. cMethode = REPLACE(cMethode, cFileName + '_', '').
  421. cClass = 'utilities.lookupHandler'.
  422. ASSIGN
  423. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  424. oHandler = rClass:NEW() NO-ERROR.
  425. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  426. INPUT oJsonIdent ,
  427. OUTPUT oJsonResult
  428. ) NO-ERROR.
  429. outilitiesHandler:evaluateErrorStatus(hError).
  430. oJsonResponse = oJsonResult.
  431. LEAVE.
  432. END.
  433. IF NOT lRetVal THEN
  434. DO:
  435. lcString = oJsonMessageBox:GetLongchar('text').
  436. oJsonResponse = NEW JsonObject().
  437. oJsonResponse:ADD('success', FALSE).
  438. oJsonResponse:ADD('message', lcString).
  439. oJsonResponse:ADD('showMessage', oJsonMessageBox).
  440. END.
  441. oJsonResponse:WRITE(lcJsonString, FALSE).
  442. cContent-Type = "application/json".
  443. cDefautlCharSet = 'utf-8'.
  444. // IF cFunction = 'multitab' THEN oJsonResponse:WriteFile(SUBSTITUTE('C:\TEMP\dynamicform_get_response_&1.json', ETIME), TRUE).
  445. oBody = NEW STRING(lcJsonString) NO-ERROR.
  446. outilitiesHandler:evaluateErrorStatus(hError).
  447. WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse) NO-ERROR.
  448. outilitiesHandler:evaluateErrorStatus(hError).
  449. // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
  450. oWriter = NEW WebResponseWriter(oResponse) NO-ERROR.
  451. outilitiesHandler:evaluateErrorStatus(hError).
  452. oWriter:Open() NO-ERROR.
  453. outilitiesHandler:evaluateErrorStatus(hError).
  454. oWriter:Close().
  455. RETURN 0.
  456. CATCH e AS Progress.Lang.Error:
  457. END CATCH.
  458. FINALLY:
  459. DELETE OBJECT oHandler NO-ERROR.
  460. DELETE OBJECT oSelectBoxHandler NO-ERROR.
  461. DELETE OBJECT oResponse NO-ERROR.
  462. DELETE OBJECT oWriter NO-ERROR.
  463. DELETE OBJECT oJsonSelectBoxes NO-ERROR.
  464. DELETE OBJECT oJsonBox NO-ERROR.
  465. DELETE OBJECT oParser NO-ERROR.
  466. DELETE OBJECT oJsonResponse NO-ERROR.
  467. END FINALLY.
  468. END METHOD.
  469. /*------------------------------------------------------------------------------
  470. Purpose:
  471. Notes:
  472. ------------------------------------------------------------------------------*/
  473. METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
  474. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  475. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  476. DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
  477. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  478. WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  479. DO WHILE TRUE:
  480. iRetVal = processingInitFunction(
  481. INPUT poRequest ,
  482. OUTPUT oJsonResponse
  483. ).
  484. IF iRetVal = 0 THEN RETURN 0.
  485. IF iRetVal = -1 THEN LEAVE.
  486. IF iRetVal = 1 THEN responseOK(
  487. INPUT oJsonResponse
  488. ).
  489. RETURN 0.
  490. END.
  491. DO WHILE cFunction = 'change':
  492. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  493. oJsonIdent:Write(lcJsonString, FALSE).
  494. IF VALID-OBJECT(rClass) THEN
  495. DO:
  496. oParam = NEW ParameterList(2).
  497. oParam:SetParameter(1, 'longchar' , 'INPUT', lcJsonString ) NO-ERROR.
  498. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  499. outilitiesHandler:evaluateErrorStatus(hError).
  500. oHandler = rClass:New(oParam) NO-ERROR.
  501. outilitiesHandler:evaluateErrorStatus(hError).
  502. END.
  503. cMethode = oJsonData:GetCharacter('changeAction').
  504. // MESSAGE 'changeAction =' cMethode.
  505. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  506. INPUT oJsonData ,
  507. OUTPUT oJsonResponse
  508. ) NO-ERROR.
  509. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  510. // oJsonResponse:WriteFile(SUBSTITUTE('C:\TEMP\Change_response_&1.json', cFileName), TRUE).
  511. responseOK(
  512. INPUT oJsonResponse
  513. ).
  514. RETURN 0.
  515. END.
  516. REPEAT TRANSACTION WHILE cFunction = 'create' ON ERROR UNDO, LEAVE:
  517. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  518. oJsonIdent:Write(lcJsonString, FALSE).
  519. IF VALID-OBJECT(rClass) THEN
  520. DO:
  521. oParam = NEW ParameterList(2).
  522. oParam:SetParameter(1, 'longchar' , 'INPUT', lcJsonString ) NO-ERROR.
  523. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  524. outilitiesHandler:evaluateErrorStatus(hError).
  525. oHandler = rClass:New(oParam) NO-ERROR.
  526. outilitiesHandler:evaluateErrorStatus(hError).
  527. END.
  528. cMethode = 'createData'.
  529. // MESSAGE 'changeAction =' cMethode.
  530. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  531. INPUT oJsonData ,
  532. OUTPUT oJsonResponse
  533. ) NO-ERROR.
  534. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  535. responseOK(
  536. INPUT oJsonResponse
  537. ).
  538. RETURN 0.
  539. END.
  540. oResponse = NEW OpenEdge.Web.WebResponse().
  541. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  542. oResponse:ContentType = "application/json;charset=utf-8".
  543. oJsonResult:WRITE(lcJsonString, FALSE).
  544. oWriter = NEW WebResponseWriter(oResponse).
  545. oWriter:Open().
  546. oWriter:Write(lcJsonString).
  547. oWriter:Close().
  548. RETURN 0.
  549. CATCH e AS Progress.Lang.Error:
  550. END CATCH.
  551. FINALLY:
  552. DELETE OBJECT oResponse NO-ERROR.
  553. DELETE OBJECT oWriter NO-ERROR.
  554. DELETE OBJECT oJsonResult NO-ERROR.
  555. END FINALLY.
  556. END METHOD.
  557. /*------------------------------------------------------------------------------
  558. Purpose:
  559. Notes:
  560. ------------------------------------------------------------------------------*/
  561. METHOD OVERRIDE PROTECTED INTEGER HandlePatch(INPUT poRequest AS IWebRequest):
  562. DEFINE VARIABLE oJsonResult AS JsonObject NO-UNDO.
  563. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  564. DEFINE VARIABLE iRetVal AS INTEGER NO-UNDO.
  565. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  566. WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  567. DO WHILE TRUE:
  568. iRetVal = processingInitFunction(
  569. INPUT poRequest ,
  570. OUTPUT oJsonResponse
  571. ).
  572. IF iRetVal = 0 THEN RETURN 0.
  573. IF iRetVal = -1 THEN LEAVE.
  574. IF iRetVal = 1 THEN responseOK(
  575. INPUT oJsonResponse
  576. ).
  577. RETURN 0.
  578. END.
  579. REPEAT TRANSACTION WHILE cFunction = 'update' ON ERROR UNDO, LEAVE:
  580. rClass = Progress.Lang.Class:GetClass(cClass) NO-ERROR.
  581. oJsonIdent:Write(lcJsonString, FALSE).
  582. IF VALID-OBJECT(rClass) THEN
  583. DO:
  584. oParam = NEW ParameterList(2).
  585. oParam:SetParameter(1, 'longchar' , 'INPUT', lcJsonString ) NO-ERROR.
  586. oParam:SetParameter(2, 'character', 'INPUT', cFunction ) NO-ERROR.
  587. outilitiesHandler:evaluateErrorStatus(hError).
  588. oHandler = rClass:New(oParam) NO-ERROR.
  589. outilitiesHandler:evaluateErrorStatus(hError).
  590. END.
  591. cMethode = 'updateData'.
  592. lRetVal = DYNAMIC-INVOKE ( oHandler, cMethode,
  593. INPUT oJsonData ,
  594. OUTPUT oJsonResult
  595. ) NO-ERROR.
  596. outilitiesHandler:evaluateErrorStatus(INPUT hError).
  597. // MESSAGE 'Return bri update' lRetVal.
  598. // oJsonResult:write(lcString, FALSE).
  599. // MESSAGE STRING(lcString).
  600. responseOK(
  601. INPUT oJsonResult
  602. ).
  603. RETURN 0.
  604. END.
  605. oResponse = NEW OpenEdge.Web.WebResponse().
  606. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  607. oResponse:ContentType = "application/json;charset=utf-8".
  608. oJsonResult:WRITE(lcJsonString, FALSE).
  609. // oJsonResult:WriteFile(SUBSTITUTE('C:\TEMP\DYNAMIC_&1_Respons.json', cFunction), TRUE).
  610. oWriter = NEW WebResponseWriter(oResponse).
  611. oWriter:Open().
  612. oWriter:Write(lcJsonString).
  613. oWriter:Close().
  614. RETURN 0.
  615. CATCH e AS Progress.Lang.Error:
  616. END CATCH.
  617. FINALLY:
  618. END FINALLY.
  619. END METHOD.
  620. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  621. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  622. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  623. RETURN result.
  624. END METHOD.
  625. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  626. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  627. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  628. RETURN result.
  629. END METHOD.
  630. /*------------------------------------------------------------------------------
  631. Purpose:
  632. Notes:
  633. ------------------------------------------------------------------------------*/
  634. METHOD PUBLIC INTEGER processingInitFunction(
  635. INPUT poRequest AS IWebRequest,
  636. OUTPUT oJsonReturn AS JsonObject
  637. ):
  638. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  639. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  640. DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
  641. DEFINE VARIABLE cSelectFileName AS CHARACTER NO-UNDO.
  642. DEFINE VARIABLE cDBName AS CHARACTER NO-UNDO.
  643. DEFINE VARIABLE oJsonBox AS JsonArray NO-UNDO.
  644. DEFINE VARIABLE oJsonSelectBoxes AS JsonObject NO-UNDO.
  645. DEFINE VARIABLE oJsonTabs AS JsonArray NO-UNDO.
  646. DEFINE VARIABLE oJsonTab AS JsonObject NO-UNDO.
  647. DEFINE VARIABLE oJsonMasterKeyFields AS JsonArray NO-UNDO.
  648. DEFINE VARIABLE httBuffer AS HANDLE NO-UNDO.
  649. outilitiesHandler:getHeaderData(
  650. INPUT poRequest ,
  651. OUTPUT ccompany ,
  652. OUTPUT cUser_Name ,
  653. OUTPUT cAnzeigeName ,
  654. OUTPUT ilanguage_id ,
  655. OUTPUT cSessionToken,
  656. OUTPUT cFunction ,
  657. OUTPUT oJsonIdent
  658. ).
  659. IF oJsonIdent:HAS('file_name') THEN MESSAGE 'getHeaderData' oJsonIdent:GetCharacter('file_name').
  660. ELSE MESSAGE 'getHeaderData ohne FileName'.
  661. cFormId = oJsonIdent:GetCharacter('formId') NO-ERROR.
  662. outilitiesHandler:getFileNameFromFormId(
  663. INPUT cFormId ,
  664. OUTPUT cFileName,
  665. OUTPUT cDBName
  666. ).
  667. /* cFileName = ''. */
  668. /* ii = NUM-ENTRIES(cFileAusForm, '_') - 1.*/
  669. /* DO i1 = 1 TO ii: */
  670. /* cFileName = cFileName */
  671. /* + (IF cFileName = '' THEN '' ELSE '_') */
  672. /* + entry(i1, cFileAusForm, '_'). */
  673. /* END. */
  674. MESSAGE 'API-Call mit Function' cFunction 'und FileName' cFileName 'und FormId' cFormId.
  675. IF NOT oJsonIdent:has('user_name') THEN oJsonIdent:ADD('user_name', cUser_Name).
  676. //
  677. // mögliche Benutzer für das durchsuchen von HTML-Dokumenten und Labeltexten ...
  678. //
  679. cUser = oJsonIdent:GetCharacter('H_user_name') NO-ERROR.
  680. IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
  681. cUser = oJsonIdent:GetCharacter('user_name') NO-ERROR.
  682. IF NOT ERROR-STATUS:ERROR AND LOOKUP(cUser, cUsers, ',') = 0 THEN cUsers = cUser + ',' + cUsers.
  683. oJsonIdent:ADD('cUsers', cUsers).
  684. //
  685. // Wenn ein UI Multi-Tab hat, wird es hier erstellt
  686. //
  687. DO WHILE cFunction='multitab':
  688. createMultiTab(
  689. OUTPUT oJsonTabs
  690. ).
  691. oJsonResponse = NEW JsonObject().
  692. oJsonResponse:ADD('tabs', oJsonTabs).
  693. responseOK(oJsonResponse).
  694. RETURN 0.
  695. END.
  696. //
  697. // wenn die Tabelle(File) das Feld active enthält, soll der activeFilter activiert werden
  698. //
  699. CREATE BUFFER hBuffer FOR TABLE cFilename NO-ERROR.
  700. hField = hBuffer:BUFFER-FIELD('active') NO-ERROR.
  701. IF NOT ERROR-STATUS:ERROR AND
  702. VALID-HANDLE(hField) THEN lActive = TRUE.
  703. //
  704. // wenn die Tabelle(File) das Feld wordindex enthält, muss am Ende der WordIndex aufgebaut werden
  705. //
  706. hField = hBuffer:BUFFER-FIELD('wordindex') NO-ERROR.
  707. IF NOT ERROR-STATUS:ERROR AND
  708. VALID-HANDLE(hField) THEN lWordIndex = TRUE.
  709. DELETE OBJECT hBuffer.
  710. iItemsPage = 50.
  711. cMaxHeight = '250px'.
  712. cProgram = outilitiesHandler:getProgramName (
  713. INPUT oJsonIdent ,
  714. INPUT cUsers ,
  715. OUTPUT cFormUser ,
  716. OUTPUT cformColumns,
  717. INPUT-OUTPUT iItemsPage ,
  718. INPUT-OUTPUT cMaxHeight
  719. ).
  720. IF cProgram = '' THEN
  721. DO:
  722. cString = oJsonIdent:GetCharacter('formId').
  723. outilitiesHandler:createErrorBox(
  724. INPUT oJsonIdent ,
  725. INPUT '2001' ,
  726. INPUT cString, /* Parameters */
  727. OUTPUT oJsonMessageBox
  728. ).
  729. oJsonResponse = NEW JsonObject().
  730. oJsonResponse:ADD('showMessage', oJsonMessageBox).
  731. responseNOTOK(oJsonResponse).
  732. RETURN 0.
  733. END.
  734. oJsonIdent:ADD('program' , cProgram ).
  735. oJsonIdent:ADD('itemsPerPage' , iItemsPage).
  736. oJsonIdent:ADD('tableMaxHeight', cMaxHeight).
  737. oJsonIdent:ADD('formUser' , cFormUser ).
  738. cErrorNo = ''.
  739. FIND programs NO-LOCK
  740. WHERE programs.program = cProgram NO-ERROR.
  741. IF NOT AVAILABLE programs THEN LEAVE.
  742. cClass = programs.program_class.
  743. lSendChange = programs.sendChangeRecord.
  744. //
  745. // Nur bei Function "init" müssen fixe Selectboxen
  746. // und UI - Parameter ermittelt werden
  747. //
  748. IF cFunction <> 'init' THEN RETURN -1.
  749. //
  750. // Es sollen alle Fixen Selctboxen erstellet werden
  751. //
  752. oJsonSelectBoxes = NEW JsonObject().
  753. FOR EACH selectboxfields NO-LOCK
  754. WHERE selectboxfields.company = ccompany
  755. AND selectboxfields.program = cFormId
  756. AND selectboxfields.user_name = cFormUser
  757. AND selectboxfields.boxfieldsFix <> '':
  758. DO ii = 1 TO NUM-ENTRIES(selectboxfields.boxfieldsFix, ';'):
  759. cFieldName = ENTRY(ii, selectboxfields.boxfieldsFix, ';').
  760. cSelectFileName = ENTRY(1, cFieldName, '_').
  761. DO WHILE TRUE:
  762. CREATE BUFFER hBuffer FOR TABLE cSelectFileName NO-ERROR.
  763. IF VALID-HANDLE(hBuffer) THEN LEAVE.
  764. cSelectFileName = cSelectFileName
  765. + '_'
  766. + entry(2, cFieldName, '_').
  767. END.
  768. DELETE OBJECT hBuffer.
  769. // MESSAGE 'SelectFileName =' cSelectFileName '-' cFieldName.
  770. IF cFieldName MATCHES('*company*') THEN
  771. DO:
  772. oJsonBox = NEW JsonArray().
  773. httBuffer = oSelectboxHandler:getSelboxCompany(INPUT cSelectFileName).
  774. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  775. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  776. NEXT.
  777. END.
  778. IF cFieldName MATCHES('*language_id*') THEN
  779. DO:
  780. oJsonBox = NEW JsonArray().
  781. httBuffer = oSelectboxHandler:getSelboxLanguage(INPUT cSelectFileName) NO-ERROR.
  782. httBuffer:WRITE-JSON ('JsonArray', oJsonBox) NO-ERROR.
  783. oJsonSelectBoxes:ADD(cFieldName, oJsonBox) NO-ERROR.
  784. NEXT.
  785. END.
  786. IF cFieldName MATCHES('*user_name*') THEN
  787. DO:
  788. oJsonBox = NEW JsonArray().
  789. httBuffer = oSelectboxHandler:getSelboxUsers(INPUT cSelectFileName).
  790. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  791. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  792. NEXT.
  793. END.
  794. IF cFieldName MATCHES('*table_name*') THEN
  795. DO:
  796. oJsonBox = NEW JsonArray().
  797. httBuffer = oSelectboxHandler:getSelboxTables(INPUT cSelectFileName).
  798. httBuffer:WRITE-JSON ('JsonArray', oJsonBox).
  799. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  800. NEXT.
  801. END.
  802. oselectboxHandler:getSelectBoxData(
  803. INPUT oJsonIdent,
  804. INPUT cFieldName,
  805. OUTPUT oJsonBox
  806. ).
  807. oJsonSelectBoxes:ADD(cFieldName, oJsonBox).
  808. END.
  809. END.
  810. oJsonReturn = NEW JsonObject().
  811. oJsonReturn:ADD('selectOptionsFix', oJsonSelectBoxes).
  812. oJsonReturn:ADD('tableMaxHeight' , cMaxHeight ).
  813. oJsonReturn:ADD('itemsPerPage' , iItemsPage ).
  814. oJsonReturn:ADD('formColumns' , cFormColumns ).
  815. oJsonReturn:ADD('lSearch' , lWordIndex ).
  816. oJsonReturn:ADD('hasRecordChange' , lSendChange ).
  817. //
  818. // Wenn die Tabelle das Feld active hat, wird die SelectBox für den activ-Filter gefüllt
  819. //
  820. IF lActive THEN
  821. DO:
  822. outilitiesHandler:getActiveSelection(
  823. INPUT oJsonIdent,
  824. INPUT cFileName ,
  825. OUTPUT cActiveSelection
  826. ).
  827. oJsonReturn:ADD("activeFilter" , cActiveSelection).
  828. oJsonReturn:ADD("hasActiveField" , lActive ).
  829. oJsonActiveSelectBox = NEW JsonObject().
  830. FOR EACH labeltexte NO-LOCK
  831. WHERE labeltexte.company = ccompany
  832. AND labeltexte.user_name = cFormUser
  833. AND labeltexte.program = 'Labels'
  834. AND labeltexte.table_name = 'table'
  835. AND labeltexte.field_name BEGINS 'LBL_FILTER'
  836. AND labeltexte.language_id = ilanguage_id :
  837. oJsonActiveSelectBox:ADD(CAPS(labeltexte.field_name), labeltexte.headlabel).
  838. END.
  839. oJsonReturn:ADD('activeFilterLabels', oJsonActiveSelectBox).
  840. END.
  841. //
  842. // Sortfelder auf start (keine Felder) stellen.
  843. //
  844. outilitiesHandler:writeSortfields(
  845. INPUT oJsonIdent ,
  846. INPUT cFileName ,
  847. INPUT '' , // cSortField
  848. INPUT '' // cDirection
  849. ) NO-ERROR.
  850. // oJsonReturn:WriteFile(SUBSTITUTE('C:\Temp\dynamicform_init_&1_return.json', cProgram), TRUE).
  851. RETURN 1.
  852. END METHOD.
  853. /*------------------------------------------------------------------------------
  854. Purpose:
  855. Notes:
  856. ------------------------------------------------------------------------------*/
  857. METHOD PUBLIC VOID responseNOTOK(
  858. INPUT oJsonResponse AS JsonObject
  859. ):
  860. DEFINE VARIABLE oMessage AS JsonObject.
  861. oJsonResponse:ADD('success', FALSE).
  862. IF oJsonResponse:HAS('showMessage') THEN
  863. DO:
  864. oMessage = oJsonResponse:GetJsonObject('showMesage').
  865. lcString = oMessage:GetLongchar('text').
  866. oJsonResponse:ADD('message', lcString).
  867. END.
  868. oResponse = NEW OpenEdge.Web.WebResponse().
  869. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  870. oResponse:ContentType = "application/json;charset=utf-8".
  871. oWriter = NEW WebResponseWriter(oResponse).
  872. oJsonResponse:WRITE(lcJsonString, FALSE).
  873. // MESSAGE 'responsOK oResponse ->' STRING(lcJsonString).
  874. oWriter:Open().
  875. oWriter:Write(lcJsonString).
  876. oWriter:Close().
  877. RETURN.
  878. END METHOD.
  879. /*------------------------------------------------------------------------------
  880. Purpose:
  881. Notes:
  882. ------------------------------------------------------------------------------*/
  883. METHOD PUBLIC VOID responseOK(
  884. INPUT oJsonReturn AS JsonObject
  885. ):
  886. oResponse = NEW OpenEdge.Web.WebResponse() NO-ERROR.
  887. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK) NO-ERROR.
  888. oResponse:ContentType = "application/json;charset=utf-8" NO-ERROR.
  889. oWriter = NEW WebResponseWriter(oResponse) NO-ERROR.
  890. oJsonReturn:WRITE(lcJsonString, FALSE).
  891. // oJsonReturn:WriteFile(SUBSTITUTE('C:\TEMP\getData_&1.json', cFileName), TRUE ).
  892. oWriter:Open() NO-ERROR.
  893. outilitiesHandler:evaluateErrorStatus(hError).
  894. oWriter:Write(lcJsonString) NO-ERROR.
  895. outilitiesHandler:evaluateErrorStatus(hError).
  896. oWriter:Close().
  897. RETURN.
  898. END METHOD.
  899. DESTRUCTOR PUBLIC dynamicformImpl ( ):
  900. DELETE OBJECT oWriter NO-ERROR.
  901. DELETE OBJECT oResponse NO-ERROR.
  902. DELETE OBJECT oHandler NO-ERROR.
  903. END DESTRUCTOR.
  904. END CLASS.