getHTMLImpl.cls 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  1. /*------------------------------------------------------------------------
  2. File : getHTMLImpl
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Wed May 29 21:02:53 CEST 2024
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. BLOCK-LEVEL ON ERROR UNDO, THROW.
  11. USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
  12. USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
  13. USING OpenEdge.Web.IWebRequest FROM PROPATH.
  14. USING OpenEdge.Web.WebHandler FROM PROPATH.
  15. USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
  16. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  17. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  18. USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
  19. USING utilities.utilitiesHandler FROM PROPATH.
  20. CLASS getHTMLImpl INHERITS WebHandler:
  21. DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
  22. DEFINE VARIABLE htviewer_ze AS HANDLE NO-UNDO.
  23. DEFINE VARIABLE iSprcd AS INTEGER NO-UNDO.
  24. DEFINE TEMP-TABLE tviewer_ko LIKE viewer_ko.
  25. DEFINE TEMP-TABLE tviewer_ze LIKE viewer_ze
  26. FIELD iMaxLaenge AS INTEGER
  27. FIELD iBreite AS INTEGER
  28. FIELD iDecimals AS INTEGER
  29. .
  30. { ttInput.i }
  31. { properties_formular_html.i }
  32. /*------------------------------------------------------------------------------
  33. Purpose:
  34. Notes:
  35. ------------------------------------------------------------------------------*/
  36. METHOD PUBLIC LONGCHAR createHtmlFormular( ):
  37. DEFINE VARIABLE lcHtmlFormular AS LONGCHAR NO-UNDO.
  38. DEFINE VARIABLE iTabIndex AS INTEGER NO-UNDO.
  39. DEFINE VARIABLE cIndexFields AS CHARACTER NO-UNDO.
  40. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  41. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE cAttribute AS CHARACTER NO-UNDO.
  43. DEFINE VARIABLE cTabIndex AS CHARACTER NO-UNDO.
  44. DEFINE VARIABLE cStyle AS CHARACTER NO-UNDO.
  45. DEFINE VARIABLE lcSelectTexte AS LONGCHAR NO-UNDO.
  46. DEFINE VARIABLE lcSelectWerte AS LONGCHAR NO-UNDO.
  47. DEFINE VARIABLE lcOption AS LONGCHAR NO-UNDO.
  48. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  49. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  50. DEFINE VARIABLE cLabelText AS CHARACTER NO-UNDO.
  51. DEFINE VARIABLE lFirma AS LOGICAL NO-UNDO INIT FALSE.
  52. DEFINE VARIABLE iLength AS INTEGER NO-UNDO.
  53. DEFINE VARIABLE iMaxBreite AS INTEGER NO-UNDO.
  54. DEFINE VARIABLE iAnzSpalten AS INTEGER NO-UNDO.
  55. DEFINE VARIABLE iBerechSpalten AS INTEGER NO-UNDO.
  56. DEFINE BUFFER bFile FOR AnaDat._File.
  57. FIX-CODEPAGE (lcHtmlFormular) = 'utf-8'.
  58. FIND FIRST ttInput.
  59. EMPTY TEMP-TABLE tviewer_ko.
  60. EMPTY TEMP-TABLE tviewer_ze.
  61. htviewer_ze = TEMP-TABLE tviewer_ze:DEFAULT-BUFFER-HANDLE.
  62. DO WHILE TRUE:
  63. FIND FIRST viewer_ko NO-LOCK
  64. WHERE viewer_ko.mandant = ttInput.mandant
  65. AND viewer_ko.benutzer = ttInput.benutzer
  66. AND viewer_ko.program = ttInput.programm
  67. AND viewer_ko.tabelle = ttInput.tabelle NO-ERROR.
  68. IF AVAILABLE viewer_ko THEN LEAVE.
  69. FIND FIRST viewer_ko NO-LOCK
  70. WHERE viewer_ko.mandant = ttInput.mandant
  71. AND viewer_ko.benutzer = 'admin'
  72. AND viewer_ko.program = ttInput.programm
  73. AND viewer_ko.tabelle = ttInput.tabelle NO-ERROR.
  74. IF NOT AVAILABLE viewer_ko THEN RETURN lcHtmlFormular.
  75. IF viewer_ko.benutzer = 'admin' AND
  76. ttInput.benutzer = 'admin' THEN LEAVE.
  77. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  78. CREATE tviewer_ko.
  79. BUFFER-COPY viewer_ko
  80. EXCEPT viewer_ko.benutzer
  81. TO tviewer_ko
  82. ASSIGN
  83. tviewer_ko.benutzer = ttInput.benutzer.
  84. FOR EACH viewer_ze NO-LOCK OF viewer_ko:
  85. CREATE tviewer_ze.
  86. BUFFER-COPY viewer_ze
  87. EXCEPT viewer_ze.benutzer
  88. TO tviewer_ze
  89. ASSIGN
  90. tviewer_ze.benutzer = ttInput.benutzer.
  91. END.
  92. FIND viewer_ko OF tviewer_ko NO-ERROR.
  93. IF NOT AVAILABLE viewer_ko THEN
  94. DO:
  95. CREATE viewer_ko.
  96. BUFFER-COPY tviewer_ko TO viewer_ko.
  97. END.
  98. FOR EACH tviewer_ze NO-LOCK:
  99. FIND viewer_ze OF tviewer_ze NO-ERROR.
  100. IF AVAILABLE viewer_ze THEN NEXT.
  101. CREATE viewer_ze.
  102. BUFFER-COPY tviewer_ze TO viewer_ze.
  103. END.
  104. LEAVE.
  105. END.
  106. END.
  107. EMPTY TEMP-TABLE tviewer_ko.
  108. EMPTY TEMP-TABLE tviewer_ze.
  109. FIND bFile NO-LOCK
  110. WHERE bFile._File-Name = viewer_ko.tabelle.
  111. IF viewer_ko.anzahlspalten < 10 THEN
  112. DO:
  113. ASSIGN
  114. iAnzSpalten = viewer_ko.anzahlspalten
  115. iBerechSpalten = viewer_ko.anzahlspalten.
  116. END.
  117. ELSE
  118. DO:
  119. cString = STRING(viewer_ko.anzahlspalten,'99').
  120. ASSIGN
  121. iAnzSpalten = INTEGER(SUBSTRING(cString,01,01))
  122. iBerechSpalten = INTEGER(SUBSTRING(cString,02,01)).
  123. END.
  124. cIndexFields = outilitiesHandler:getPrimaryIndexFields( INPUT viewer_ko.tabelle ) NO-ERROR.
  125. lcHtmlFormular = SUBSTITUTE(cform-container, iAnzSpalten) + CHR(10).
  126. iTabIndex = 0.
  127. CREATE tviewer_ze.
  128. htviewer_ze = TEMP-TABLE tviewer_ze:DEFAULT-BUFFER-HANDLE.
  129. FOR EACH viewer_ze NO-LOCK OF viewer_ko
  130. BY viewer_ze.prior:
  131. IF ttInput.params = '' AND
  132. viewer_ze.privatedata <> '' THEN NEXT.
  133. IF ttInput.params <> '' THEN
  134. DO:
  135. DO ii = 1 TO NUM-ENTRIES(viewer_ze.privatedata, ';'):
  136. cString = ENTRY(ii, viewer_ze.privatedata, ';').
  137. IF INDEX(viewer_ze.privatedata, cString) > 0 THEN LEAVE.
  138. END.
  139. IF ii > NUM-ENTRIES(viewer_ze.privatedata, ';') THEN NEXT.
  140. END.
  141. lcHtmlFormular = lcHtmlFormular + ' ' + cform-group + CHR(10).
  142. FIND FIRST tviewer_ze.
  143. BUFFER-COPY viewer_ze TO tviewer_ze.
  144. ASSIGN
  145. tviewer_ze.iMaxLaenge = 0
  146. tviewer_ze.iBreite = 0
  147. tviewer_ze.iDecimals = 0
  148. .
  149. DO WHILE TRUE:
  150. cLabelText = ''.
  151. IF tviewer_ze.feld BEGINS 'Dummy' OR
  152. tviewer_ze.feld = 'ident' THEN
  153. DO:
  154. ASSIGN
  155. tviewer_ze.lHidden = TRUE
  156. tviewer_ze.lReadonly = TRUE
  157. tviewer_ze.styles = ''
  158. tviewer_ze.attributes = ''
  159. // tviewer_ze.privatedata = ''
  160. tviewer_ze.iMaxLaenge = 1
  161. .
  162. LEAVE.
  163. END.
  164. IF NOT tviewer_ze.lHidden THEN
  165. DO:
  166. cString = getLabel(INPUT 'side', INPUT iSprcd) NO-ERROR.
  167. clabelText = FILL(' ',08) + SUBSTITUTE(clabel, tviewer_ze.feld, cString).
  168. END.
  169. IF tviewer_ze.selecttabelle = 'selections' THEN
  170. DO:
  171. lRetVal = fillSelection (INPUT-OUTPUT htviewer_ze, OUTPUT lcSelectWerte, OUTPUT lcSelectTexte).
  172. IF lRetVal THEN
  173. ASSIGN
  174. tviewer_ze.selecttabelle = ''
  175. tviewer_ze.feldtype = 'select'.
  176. LEAVE.
  177. END.
  178. IF tviewer_ze.selecttabelle <> '' THEN
  179. DO:
  180. lRetVal = fillSelectionAusTabelle(INPUT-OUTPUT htviewer_ze, OUTPUT lcSelectWerte, OUTPUT lcSelectTexte).
  181. IF lRetVal THEN
  182. ASSIGN
  183. tviewer_ze.selecttabelle = ''
  184. tviewer_ze.feldtype = 'select'.
  185. LEAVE.
  186. END.
  187. FIND AnaDat._Field NO-LOCK
  188. WHERE AnaDat._Field._Field-name = tviewer_ze.feld
  189. AND AnaDat._FIeld._File-Recid = RECID(bFile).
  190. IF INDEX(_Field._View-AS, 'TOGGLE-BOX') > 0 THEN
  191. DO:
  192. tviewer_ze.feldtype = 'checkbox'.
  193. LEAVE.
  194. END.
  195. IF INDEX(_Field._View-AS, 'EDITOR') > 0 THEN
  196. DO:
  197. tviewer_ze.feldtype = 'textarea'.
  198. LEAVE.
  199. END.
  200. LEAVE.
  201. END.
  202. iLength = 0.
  203. iDecimals = 0.
  204. CASE tviewer_ze.feldtype:
  205. WHEN 'character' THEN
  206. ASSIGN
  207. tviewer_ze.iBreite = getMaxLength(tviewer_ze.feldformat)
  208. tviewer_ze.iMaxLaenge = tviewer_ze.iBreite.
  209. WHEN 'textarea' THEN
  210. ASSIGN
  211. tviewer_ze.iBreite = getMaxLength(tviewer_ze.feldformat)
  212. tviewer_ze.iMaxLaenge = tviewer_ze.iBreite.
  213. WHEN 'integer' THEN
  214. ASSIGN
  215. tviewer_ze.iBreite = LENGTH(tviewer_ze.feldformat)
  216. tviewer_ze.iMaxLaenge = tviewer_ze.iBreite
  217. tviewer_ze.iDecimals = -1.
  218. WHEN 'decimal' THEN
  219. DO:
  220. tviewer_ze.iBreite = LENGTH(tviewer_ze.feldformat).
  221. tviewer_ze.iMaxLaenge = tviewer_ze.iBreite.
  222. ii = INDEX(tviewer_ze.feldformat, '.').
  223. IF ii > 0 THEN tviewer_ze.iDecimals = LENGTH(ENTRY(2, tviewer_ze.feldformat, '.')).
  224. ELSE tviewer_ze.iDecimals = -1.
  225. END.
  226. WHEN 'checkbox' THEN
  227. DO:
  228. tviewer_ze.iBreite = 2.
  229. END.
  230. WHEN 'select' THEN
  231. DO:
  232. tviewer_ze.iBreite = iMaxBreite.
  233. END.
  234. OTHERWISE
  235. ASSIGN
  236. tviewer_ze.iBreite = getMaxLength(tviewer_ze.feldformat)
  237. tviewer_ze.iMaxLaenge = tviewer_ze.iBreite.
  238. END CASE.
  239. iMaxBreite = 0.
  240. CASE iBerechSpalten:
  241. WHEN 1 THEN
  242. iMaxBreite = 90.
  243. WHEN 2 THEN
  244. iMaxBreite = 45.
  245. WHEN 3 THEN
  246. iMaxBreite = 30.
  247. WHEN 4 THEN
  248. iMaxBreite = 22.
  249. OTHERWISE
  250. iMaxBreite = 20.
  251. END CASE.
  252. IF tviewer_ze.iBreite > iMaxBreite THEN tviewer_ze.iBreite = iMaxBreite.
  253. cAttribute = ''.
  254. cTabIndex = ''.
  255. cStyle = ''.
  256. lcOption = ''.
  257. IF NOT tviewer_ze.lHidden AND
  258. NOT tviewer_ze.lReadonly THEN
  259. DO:
  260. iTabIndex = iTabIndex + 1.
  261. cTabIndex = SUBSTITUTE ('tabindex="&1" ', TRIM(STRING(iTabIndex,'>>>9'))).
  262. END.
  263. DO WHILE lcSelectTexte <> '':
  264. DO ii = 1 TO NUM-ENTRIES(lcSelectWerte, ';'):
  265. lcOption = lcOption
  266. + (IF lcOption = '' THEN '' ELSE CHR(10))
  267. + SUBSTITUTE('&3<option value="&1">&2</option>', ENTRY(ii, lcSelectWerte, ';'), ENTRY(ii, lcSelectTexte, ';'), FILL(' ',12)).
  268. END.
  269. LEAVE.
  270. END.
  271. //
  272. // Attribute definieren
  273. //
  274. cAttribute = SUBSTITUTE('id= "&1" name="&1" ', tviewer_ze.feld, tviewer_ze.feld).
  275. IF tviewer_ze.lHidden THEN cAttribute = cAttribute + 'type="hidden" ' .
  276. ELSE
  277. DO:
  278. CASE tviewer_ze.feldtype:
  279. WHEN 'checkbox' THEN
  280. cAttribute = cAttribute + 'type="checkbox" '.
  281. WHEN 'textarea' THEN
  282. cAttribute = cAttribute + 'type="text" wrap="soft" '.
  283. OTHERWISE
  284. cAttribute = cAttribute + 'type="text" '.
  285. END CASE.
  286. END.
  287. IF tviewer_ze.lReadonly THEN cAttribute = cAttribute + 'readonly="true" '.
  288. IF tviewer_ze.iMaxLaenge > 0 THEN cAttribute = cAttribute + SUBSTITUTE('maxlength="&1" ', TRIM(STRING(tviewer_ze.iMaxLaenge))).
  289. IF tviewer_ze.iDecimals > 0 THEN cAttribute = cAttribute + SUBSTITUTE('step="0.&1" ', FILL('0', tviewer_ze.iDecimals)).
  290. IF tviewer_ze.iDecimals < 0 THEN cAttribute = cAttribute + 'step="0" '.
  291. IF cTabIndex <> '' THEN cAttribute = cAttribute + cTabIndex.
  292. //
  293. // Style definieren
  294. //
  295. DO WHILE TRUE:
  296. IF tviewer_ze.feldtype = 'select' THEN
  297. DO:
  298. cStyle = SUBSTITUTE('width: &1vw; text-align: &2;', tviewer_ze.iBreite, "left").
  299. LEAVE.
  300. END.
  301. IF tviewer_ze.feldtype = 'textarea' THEN
  302. DO:
  303. cStyle = SUBSTITUTE('width: &1vw; text-align: &2;', tviewer_ze.iBreite, "left").
  304. LEAVE.
  305. END.
  306. cStyle = SUBSTITUTE('width: &1vw; text-align: &2;', tviewer_ze.iBreite, tviewer_ze.textalign).
  307. LEAVE.
  308. END.
  309. cStyle = 'style=' + QUOTER(cStyle).
  310. CASE tviewer_ze.feldtype:
  311. WHEN 'textarea' THEN
  312. cZeile = FILL(' ',08) + SUBSTITUTE(cTextarea, cAttribute, cStyle, '' ).
  313. WHEN 'select' THEN
  314. cZeile = FILL(' ',08) + SUBSTITUTE(cSelect, cAttribute, cStyle, tviewer_ze.privatedata, CHR(10), lcOption, FILL(' ',08) ).
  315. OTHERWISE
  316. cZeile = FILL(' ',08) + SUBSTITUTE(cInput , cAttribute, cStyle, '' ).
  317. END CASE.
  318. IF cLabelText <> '' THEN lcHtmlFormular = lcHtmlFormular + cLabelText + CHR(10).
  319. lcHtmlFormular = lcHtmlFormular + cZeile + CHR(10).
  320. lcHtmlFormular = lcHtmlFormular + ' </div>' + CHR(10).
  321. END.
  322. lcHtmlFormular = lcHtmlFormular + '</div>' + CHR(10).
  323. RETURN lcHtmlFormular.
  324. END METHOD.
  325. /*------------------------------------------------------------------------------
  326. Purpose:
  327. Notes:
  328. ------------------------------------------------------------------------------*/
  329. METHOD PUBLIC CHARACTER createSelections(
  330. INPUT iprviewer_ze AS RECID,
  331. INPUT ipiSprcd AS INTEGER,
  332. OUTPUT cWerte AS CHARACTER,
  333. OUTPUT cAnzeige AS CHARACTER
  334. ):
  335. DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
  336. DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO.
  337. DEFINE VARIABLE lFound AS LOGICAL NO-UNDO.
  338. DEFINE BUFFER btviewer_ze FOR tviewer_ze.
  339. FIND btviewer_ze NO-LOCK WHERE RECID(btviewer_ze) = iprviewer_ze.
  340. FOR EACH selections NO-LOCK
  341. WHERE selections.mandant = btviewer_ze.mandant
  342. AND selections.tabelle = btviewer_ze.tabelle
  343. AND selections.feld = btviewer_ze.feld
  344. AND selections.sprcd = ipiSprcd:
  345. cWerte = cWerte
  346. + (IF cWerte = '' THEN '' ELSE ';')
  347. + selections.wert.
  348. cAnzeige = cAnzeige
  349. + (IF cAnzeige = '' THEN '' ELSE ';')
  350. + selections.anzeige + SUBSTITUTE(' (&1) ':U, selections.wert).
  351. END.
  352. IF cWerte <> '' THEN RETURN cWerte.
  353. FOR EACH selections NO-LOCK
  354. WHERE selections.mandant = btviewer_ze.mandant
  355. AND selections.tabelle = ''
  356. AND selections.feld = btviewer_ze.feld
  357. AND selections.sprcd = ipiSprcd:
  358. cWerte = cWerte
  359. + (IF cWerte = '' THEN '' ELSE ';')
  360. + selections.wert.
  361. cAnzeige = cAnzeige
  362. + (IF cAnzeige = '' THEN '' ELSE ';')
  363. + selections.anzeige + SUBSTITUTE(' (&1) ':U, selections.wert).
  364. END.
  365. IF cWerte <> '' THEN RETURN cWerte.
  366. FOR EACH selections NO-LOCK
  367. WHERE selections.mandant = btviewer_ze.mandant
  368. AND selections.tabelle = ''
  369. AND selections.feld = btviewer_ze.feld:
  370. cWerte = cWerte
  371. + (IF cWerte = '' THEN '' ELSE ';')
  372. + selections.wert.
  373. cAnzeige = cAnzeige
  374. + (IF cAnzeige = '' THEN '' ELSE ';')
  375. + selections.anzeige + SUBSTITUTE(' (&1) ':U, selections.wert).
  376. END.
  377. END METHOD.
  378. /*------------------------------------------------------------------------------
  379. Purpose:
  380. Notes:
  381. ------------------------------------------------------------------------------*/
  382. METHOD PUBLIC CHARACTER getLabel(
  383. INPUT ipcArt AS CHARACTER,
  384. INPUT ipiSprcd AS INTEGER
  385. ):
  386. DEFINE VARIABLE cLabel AS CHARACTER NO-UNDO.
  387. DEFINE BUFFER btviewer_ze FOR tviewer_ze.
  388. FIND FIRST btviewer_ze NO-LOCK.
  389. IF ipiSprcd = 0 OR
  390. ipiSprcd > 10 THEN ipiSprcd = 1.
  391. FIND FIRST labeltexte NO-LOCK
  392. WHERE labeltexte.mandant = btviewer_ze.mandant
  393. AND labeltexte.benutzer = btviewer_ze.benutzer
  394. AND labeltexte.program = btviewer_ze.program
  395. AND labeltexte.tabelle = btviewer_ze.tabelle
  396. AND labeltexte.feld = btviewer_ze.feld
  397. AND labeltexte.sprcd = ipiSprcd NO-ERROR.
  398. IF NOT AVAILABLE labeltexte THEN
  399. DO:
  400. FIND FIRST labeltexte NO-LOCK
  401. WHERE labeltexte.mandant = btviewer_ze.mandant
  402. AND labeltexte.program = btviewer_ze.program
  403. AND labeltexte.tabelle = btviewer_ze.tabelle
  404. AND labeltexte.feld = btviewer_ze.feld
  405. AND labeltexte.sprcd = ipiSprcd NO-ERROR.
  406. END.
  407. IF NOT AVAILABLE labeltexte THEN
  408. DO:
  409. FIND FIRST labeltexte NO-LOCK
  410. WHERE labeltexte.mandant = btviewer_ze.mandant
  411. AND labeltexte.tabelle = btviewer_ze.tabelle
  412. AND labeltexte.feld = btviewer_ze.feld
  413. AND labeltexte.sprcd = ipiSprcd NO-ERROR.
  414. END.
  415. IF NOT AVAILABLE labeltexte THEN
  416. DO:
  417. FIND FIRST labeltexte NO-LOCK
  418. WHERE labeltexte.mandant = btviewer_ze.mandant
  419. AND labeltexte.feld = btviewer_ze.feld
  420. AND labeltexte.sprcd = ipiSprcd NO-ERROR.
  421. END.
  422. CASE ipcArt:
  423. WHEN 'side' THEN
  424. cLabel = (IF AVAILABLE labeltexte THEN labeltexte.sidelabel ELSE btviewer_ze.feld).
  425. WHEN 'head' THEN
  426. cLabel = (IF AVAILABLE labeltexte THEN labeltexte.headlabel ELSE btviewer_ze.feld).
  427. END CASE.
  428. RETURN cLabel.
  429. END METHOD.
  430. /*------------------------------------------------------------------------------
  431. Purpose:
  432. Notes:
  433. ------------------------------------------------------------------------------*/
  434. METHOD PUBLIC INTEGER getMaxLength(
  435. ipcFormat AS CHARACTER
  436. ):
  437. /*------------------------------------------------------------------------------
  438. Purpose:
  439. Notes:
  440. ------------------------------------------------------------------------------*/
  441. DEFINE VARIABLE x1 AS INTEGER NO-UNDO.
  442. DEFINE VARIABLE cFormat AS CHARACTER NO-UNDO.
  443. x1 = INDEX(ipcFormat, '(').
  444. IF x1 = 0 THEN RETURN LENGTH(ipcFormat).
  445. cFormat = REPLACE(ipcFormat, '(', ';').
  446. cFormat = REPLACE(cFormat , ')', ';').
  447. x1 = INTEGER(ENTRY(2, cFormat, ';')).
  448. RETURN x1.
  449. END METHOD.
  450. METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
  451. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
  452. DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
  453. DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
  454. DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
  455. DEFINE VARIABLE oInput AS JsonObject NO-UNDO.
  456. DEFINE VARIABLE hbttDBTabelle AS HANDLE NO-UNDO.
  457. DEFINE VARIABLE httDBTabelle AS HANDLE NO-UNDO.
  458. DEFINE VARIABLE hqDBTabelle AS HANDLE NO-UNDO.
  459. DEFINE VARIABLE hbDBTabelle AS HANDLE NO-UNDO.
  460. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  461. DEFINE VARIABLE cAktion AS CHARACTER NO-UNDO.
  462. EMPTY TEMP-TABLE ttInput .
  463. lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
  464. MESSAGE 'getJsonFromRequest = ' lRetVal.
  465. oJsonData:WRITE(lcJsonString, FALSE).
  466. MESSAGE 'ganzer eingangsstring = ' STRING(lcJsonString).
  467. //
  468. // Input-Daten (Steuersatz) aus JsonObject lesen und in ttInput füllen
  469. //
  470. EMPTY TEMP-TABLE ttInput .
  471. hbttInput = TEMP-TABLE ttInput:DEFAULT-BUFFER-HANDLE.
  472. oInput = NEW JsonObject().
  473. oInput = oJsonData:GetJsonObject('ttInput').
  474. lRetVal = hbttInput:READ-JSON ('JsonObject', oInput).
  475. FIND FIRST ttInput.
  476. cAktion = ttInput.action.
  477. iSprcd = INTEGER(ttInput.sprcd).
  478. IF iSprcd < 1 OR iSprcd > 10 THEN iSprcd = 1.
  479. outilitiesHandler = NEW utilitiesHandler ().
  480. DO WHILE lRetVal:
  481. lcJsonString = createHtmlFormular().
  482. MESSAGE 'Rückgabe: ' + STRING(lcJsonString).
  483. oResponse = NEW OpenEdge.Web.WebResponse().
  484. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  485. oResponse:ContentType = "text/plain".
  486. oWriter = NEW WebResponseWriter(oResponse).
  487. oWriter:Open().
  488. /* oWriter:Write(htmldokumente.htmltext).*/
  489. oWriter:Write(lcJsonString).
  490. oWriter:Close().
  491. LEAVE.
  492. END.
  493. DO WHILE NOT lRetVal:
  494. oResponse = NEW OpenEdge.Web.WebResponse().
  495. oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
  496. oResponse:ContentType = "application/json;charset=utf-8".
  497. oWriter = NEW WebResponseWriter(oResponse).
  498. oWriter:Open().
  499. MESSAGE 'lcString Rückgabe: ' + STRING(lcJsonString) VIEW-AS ALERT-BOX.
  500. oWriter:Write(lcJsonString).
  501. oWriter:Close().
  502. LEAVE.
  503. END.
  504. MESSAGE "Exiting HandlePost" VIEW-AS ALERT-BOX.
  505. CATCH e AS Progress.Lang.Error:
  506. MESSAGE "Exception occurred: " + e:GetMessage(1) VIEW-AS ALERT-BOX ERROR BUTTONS OK.
  507. RETURN -1.
  508. END CATCH.
  509. END METHOD.
  510. /*------------------------------------------------------------------------------
  511. Purpose:
  512. Notes:
  513. ------------------------------------------------------------------------------*/
  514. METHOD PUBLIC LOGICAL fillSelection(
  515. INPUT-OUTPUT iphtviewer_ze AS HANDLE,
  516. OUTPUT oplcSelectWerte AS LONGCHAR,
  517. OUTPUT oplcSelectTexte AS LONGCHAR
  518. ):
  519. DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
  520. ASSIGN
  521. iphtviewer_ze::selecttexte = ''
  522. iphtviewer_ze::selectwerte = ''
  523. cTabelle = iphtviewer_ze::tabelle
  524. oplcSelectWerte = ''
  525. oplcSelectTexte = ''
  526. NO-ERROR.
  527. FIND FIRST selections NO-LOCK
  528. WHERE selections.mandant = iphtviewer_ze::mandant
  529. AND selections.tabelle = cTabelle
  530. AND selections.feld = iphtviewer_ze::feld
  531. AND selections.Sprcd = iSprcd NO-ERROR.
  532. IF NOT AVAILABLE selections THEN
  533. DO:
  534. cTabelle = ''.
  535. FIND FIRST selections NO-LOCK
  536. WHERE selections.mandant = iphtviewer_ze::mandant
  537. AND selections.tabelle = cTabelle
  538. AND selections.feld = iphtviewer_ze::feld
  539. AND selections.Sprcd = iSprcd NO-ERROR.
  540. END.
  541. IF NOT AVAILABLE (selections) THEN RETURN FALSE.
  542. FOR EACH selections NO-LOCK
  543. WHERE selections.mandant = iphtviewer_ze::mandant
  544. AND selections.tabelle = cTabelle
  545. AND selections.feld = iphtviewer_ze::feld
  546. AND selections.Sprcd = iSprcd:
  547. ASSIGN
  548. oplcSelectTexte = oplcSelectTexte
  549. + (IF oplcSelectTexte = '' THEN '' ELSE ';')
  550. + selections.anzeige.
  551. ASSIGN
  552. oplcSelectWerte = oplcSelectWerte
  553. + (IF oplcSelectWerte = '' THEN '' ELSE ';')
  554. + selections.wert.
  555. END.
  556. RETURN TRUE.
  557. END METHOD.
  558. /*------------------------------------------------------------------------------
  559. Purpose:
  560. Notes:
  561. ------------------------------------------------------------------------------*/
  562. METHOD PUBLIC LOGICAL fillSelectionAusTabelle(
  563. INPUT-OUTPUT iphtviewer_ze AS HANDLE,
  564. OUTPUT oplcSelectWerte AS LONGCHAR,
  565. OUTPUT oplcSelectTexte AS LONGCHAR
  566. ):
  567. DEFINE VARIABLE cTabelle AS CHARACTER NO-UNDO.
  568. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
  569. DEFINE VARIABLE cAnzeige AS CHARACTER NO-UNDO.
  570. DEFINE VARIABLE iFeldIndex AS INTEGER NO-UNDO.
  571. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  572. DEFINE VARIABLE hqTabelle AS HANDLE NO-UNDO.
  573. DEFINE VARIABLE hbTabelle AS HANDLE NO-UNDO.
  574. DEFINE VARIABLE cWhere AS CHARACTER NO-UNDO.
  575. ASSIGN
  576. cTabelle = ENTRY(1, iphtviewer_ze::selecttabelle, ';')
  577. cFeld = ENTRY(2, iphtviewer_ze::selecttabelle, ';')
  578. cAnzeige = ENTRY(3, iphtviewer_ze::selecttabelle, ';')
  579. oplcSelectWerte = ''
  580. oplcSelectTexte = ''
  581. NO-ERROR.
  582. CREATE QUERY hqTabelle.
  583. CREATE BUFFER hbTabelle FOR TABLE cTabelle.
  584. cWhere = SUBSTITUTE('FOR EACH &1 NO-LOCK WHERE &1.Firma = &2 ', cTabelle, QUOTER(iphtviewer_ze::mandant) ).
  585. hqTabelle:SET-BUFFERS (hbTabelle).
  586. hqTabelle:QUERY-PREPARE (cWhere).
  587. hqTabelle:QUERY-OPEN ().
  588. hqTabelle:GET-FIRST ().
  589. iFeldIndex = (IF hbTabelle:BUFFER-FIELD(cAnzeige):EXTENT = 0 THEN 0 ELSE iSprcd).
  590. DO WHILE NOT hqTabelle:QUERY-OFF-END:
  591. cString = hbTabelle:BUFFER-FIELD(cAnzeige):BUFFER-VALUE(iFeldIndex).
  592. oplcSelectTexte = oplcSelectTexte
  593. + (IF oplcSelectTexte = '' THEN '' ELSE ';')
  594. + cString.
  595. cString = hbTabelle:BUFFER-FIELD(cFeld):BUFFER-VALUE(0).
  596. oplcSelectWerte = oplcSelectWerte
  597. + (IF oplcSelectWerte = '' THEN '' ELSE ';')
  598. + cString.
  599. hqTabelle:GET-NEXT ().
  600. END.
  601. hqTabelle:QUERY-CLOSE ().
  602. DELETE OBJECT hbTabelle NO-ERROR.
  603. DELETE OBJECT hqTabelle NO-ERROR.
  604. RETURN TRUE .
  605. END METHOD.
  606. METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
  607. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  608. MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
  609. RETURN result.
  610. END METHOD.
  611. METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
  612. DEFINE VARIABLE result AS INTEGER NO-UNDO.
  613. MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
  614. RETURN result.
  615. END METHOD.
  616. END CLASS.