25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

239 lines
8.1 KiB

  1. global.gfiWebforms = (function () {
  2. return {
  3. goTo: function () {
  4. $("#captchaimg").click(function () {
  5. initCaptcha();
  6. return false;
  7. });
  8. this.initDatepicker();
  9. this.initCaptcha();
  10. // FeedbackForm
  11. var relatedContentId = $("#feedbackRelatedId").data("related-id");
  12. if (relatedContentId !== undefined) {
  13. $('input[name="relatedDocumentId"]').val(relatedContentId);
  14. }
  15. // this.removeMyWebformsDetailText();
  16. var keepAliveUrl = $(".mwf-form").data("keepalive-url");
  17. if (keepAliveUrl !== undefined) {
  18. setInterval(function () {
  19. $.ajax({url: keepAliveUrl})
  20. }, 120000); // 2 Minuten
  21. }
  22. var errorMessageDiv = $('.mwf-error');
  23. if (errorMessageDiv.length > 0) {
  24. $('html, body').animate({scrollTop: $('.mwf-error').first().offset().top - 200}, 1000);
  25. errorMessageDiv.parent().find("input").addClass("mwf-error-input");
  26. }
  27. $("input.mwf-error-input").change(function () {
  28. var currentElement = $(this);
  29. currentElement.removeClass("mwf-error-input");
  30. if (currentElement.hasClass("mwf-checkbox") || currentElement.hasClass("mwf-radio")) {
  31. currentElement.parents("fieldset").find("input").removeClass("mwf-error-input");
  32. }
  33. });
  34. $("a[title='externer Link']").addClass("extern");
  35. },
  36. initCaptcha: function () {
  37. var self = gfiWebforms;
  38. self.refreshCaptcha("-barrier-free");
  39. self.refreshCaptcha("");
  40. $("#refresh-captcha").click(function () {
  41. self.refreshCaptcha("");
  42. return false;
  43. });
  44. $("#refresh-captcha-barrier-free").click(function () {
  45. self.refreshCaptcha("-barrier-free");
  46. return false;
  47. });
  48. $('#tabs > ul a').on('click', function (e) {
  49. e.preventDefault();
  50. const a = $(this);
  51. a.parent('li').addClass('active').siblings().removeClass('active');
  52. $(a.attr('href')).addClass('active').siblings('.active').removeClass('active');
  53. if (a.text() === "Zeichencode") {
  54. $('#captchaSolution').prop('title', 'Beliebiger Text');
  55. $('#captchaSolution').prop('pattern', '.*');
  56. $('#captchaId').val($('#captchaId-img').val());
  57. } else if (a.text() === "Rechenaufgabe") {
  58. $('#captchaSolution').prop('title', 'Bitte nur Ziffern eingeben');
  59. $('#captchaSolution').prop('pattern', '[0-9][0-9]*');
  60. $('#captchaId').val($('#captchaId-calc').val());
  61. }
  62. }).first().trigger('click');
  63. /**
  64. * IHK-4797: Captcha-Probleme - falls der Inhalt von captchaId und captchaId-img (bzw. captchaId-calc)
  65. * aus irgendwelchen Gruenden nicht uebereinstimmen sollte, wird captchaId korrigiert.
  66. * (Das geschieht z.B wenn man den Back-Button drueckt)
  67. */
  68. $('#rw-security').submit(function () {
  69. let valmain = $("#captchaId").val();
  70. const valimg = $("#captchaId-img").val();
  71. const visimg = $("#tabs-1");
  72. const valcalc = $("#captchaId-calc").val();
  73. const viscalc = $("#tabs-2");
  74. if ((visimg.css("visibility") !== "hidden") && (valimg !== valmain)) {
  75. $("#captchaId").val(valimg);
  76. } else if ((viscalc.css("visibility") !== "hidden") && (valcalc !== valmain)) {
  77. $("#captchaId").val(valcalc);
  78. }
  79. return true;
  80. });
  81. /*
  82. $("#tabs").tabs();
  83. $(".ui-tabs-anchor").click(function () {
  84. var hiddenCaptchaId = $("#captchaId");
  85. var captchaId = "";
  86. if ($(this).text() === "Zeichencode") {
  87. captchaId = $("#captchaId-img").attr("value");
  88. $('#captchaSolution').prop('title', 'Beliebiger Text');
  89. $('#captchaSolution').prop('pattern', '.*');
  90. } else {
  91. captchaId = $("#captchaId-calc").attr("value");
  92. $('#captchaSolution').prop('title', 'Bitte nur Ziffern eingeben');
  93. $('#captchaSolution').prop('pattern', '[0-9][0-9]*');
  94. }
  95. hiddenCaptchaId.attr('value', captchaId);
  96. });
  97. */
  98. },
  99. refreshCaptcha: function (barrierFree) {
  100. var self = gfiWebforms;
  101. var hiddenCaptchaId = $("#captchaId");
  102. var captchaIdField = $("#captchaId-img");
  103. var jsonCaptchaSrc = hiddenCaptchaId.data("captcha-url");
  104. if (jsonCaptchaSrc !== undefined) {
  105. if (barrierFree == "-barrier-free") {
  106. captchaIdField = $("#captchaId-calc");
  107. jsonCaptchaSrc += "&barrierFree=true";
  108. }
  109. $.ajax(
  110. {
  111. url: jsonCaptchaSrc,
  112. type: 'get',
  113. dataType: "json",
  114. xhrFields: {withCredentials: true}
  115. }
  116. ).done(function (data) {
  117. hiddenCaptchaId.attr('value', data.id);
  118. captchaIdField.attr('value', data.id);
  119. self.showCaptcha(data, barrierFree);
  120. });
  121. // $.getJSON(jsonCaptchaSrc, function(data) {
  122. // hiddenCaptchaId.attr('value', data.id);
  123. // captchaIdField.attr('value', data.id);
  124. // self.showCaptcha(data, barrierFree);
  125. // });
  126. }
  127. },
  128. showCaptcha: function (data, barrierFree) {
  129. if (barrierFree === "") {
  130. $("#captcha-code").attr('src', 'data:image/jpg;base64,' + data.challenge).attr('alt', 'Geben sie die im Bild dargestellte Zeichenfolge in das ein');
  131. } else {
  132. $("#captcha-code-barrier-free").html(data.challenge);//.attr('alt', 'Lösen Sie die im Bild gestellte Rechenaufgabe und geben Sie die Lösung in Zahlen ein');
  133. }
  134. },
  135. removeMyWebformsDetailText: function () {
  136. var detailText = $("#webformsDetailText");
  137. if (detailText === null) {
  138. return;
  139. }
  140. $("#webformsDetailText").show();
  141. var pageCounter = $("#webformsPageCounter");
  142. if (pageCounter === null) {
  143. return;
  144. }
  145. var currentPage = pageCounter.data("page-number");
  146. if (currentPage !== undefined && currentPage < 2) {
  147. return;
  148. }
  149. $("#webformsDetailText").hide();
  150. $(".anchorlinks").hide();
  151. $(".text.initial").hide();
  152. $(window).scrollTop(0);
  153. },
  154. initDatepicker: function () {
  155. [].forEach.call(document.querySelectorAll('[data-format-datepicker]'), function (datepickerElement) {
  156. var self = gfiWebforms;
  157. var dateOptions = datepickerElement.dataset.formatDatepicker;
  158. var minDateVal = datepickerElement.dataset.mindateDatepicker;
  159. var maxDateVal = datepickerElement.dataset.maxdateDatepicker;
  160. if (dateOptions === "keine Auswahl") {
  161. self.validDateValues(datepickerElement, 'dd.mm.yy', minDateVal, maxDateVal);
  162. }
  163. if (dateOptions === "dd.MM.yyyy") {
  164. self.validDateValues(datepickerElement, 'dd.mm.yy', minDateVal, maxDateVal);
  165. }
  166. if (dateOptions === "yyyy-MM-dd") {
  167. self.validDateValues(datepickerElement, 'yy-mm-dd', minDateVal, maxDateVal);
  168. }
  169. if (dateOptions === "MM/dd/yy") {
  170. self.validDateValues(datepickerElement, 'mm/dd/y', minDateVal, maxDateVal);
  171. }
  172. });
  173. },
  174. validDateValues: function (datepickerElementVal, dateFormatVal, minDateVal, maxDateVal) {
  175. if ((minDateVal === undefined) && (maxDateVal === undefined)) {
  176. $(datepickerElementVal).datepicker({dateFormat: dateFormatVal, changeYear: true, changeMonth: true});
  177. }
  178. if ((minDateVal !== undefined) && (maxDateVal === undefined)) {
  179. $(datepickerElementVal).datepicker({
  180. dateFormat: dateFormatVal,
  181. minDate: new Date(minDateVal),
  182. changeYear: true,
  183. changeMonth: true
  184. });
  185. }
  186. if ((minDateVal === undefined) && (maxDateVal !== undefined)) {
  187. $(datepickerElementVal).datepicker({
  188. dateFormat: dateFormatVal,
  189. maxDate: new Date(maxDateVal),
  190. changeYear: true,
  191. changeMonth: true
  192. });
  193. }
  194. if ((minDateVal !== undefined) && (maxDateVal !== undefined)) {
  195. $(datepickerElementVal).datepicker({
  196. dateFormat: dateFormatVal,
  197. minDate: new Date(minDateVal),
  198. maxDate: new Date(maxDateVal),
  199. changeYear: true,
  200. changeMonth: true
  201. });
  202. }
  203. }
  204. }
  205. })();