├── CHANGELOG.md ├── CSSClasses ├── bootstrap5.json ├── none.json ├── pico2.json └── uikit3.json ├── Examples ├── ajaxform.php ├── complexForm.php ├── contactform-2.php ├── contactform.php ├── contactformWithPHPMailerModule.php ├── contactformWithWireMailPostmarkAppModule.php ├── contactformWithWireMailSMTPModule.php ├── default-inputs.php ├── examplequestions.txt ├── field-validation.php ├── fileuploadtopage.php ├── formwithGrid.php ├── inputfield_conditions │ ├── conditiontypes.php │ ├── multipleconditionsWithAndOr.php │ ├── multivaluefieldsconditions.php │ ├── operatortypes.php │ └── usingconditionsOnNonInputfields.php ├── inputfieldexamples.php └── setmultiplequestionsforcaptcha.php ├── Formelements ├── Captcha │ ├── AbstractCaptcha.php │ ├── AbstractCaptchaFactory.php │ ├── AbstractCharset.php │ ├── AbstractImageCaptcha.php │ ├── AbstractMath.php │ ├── AbstractQuestionCaptcha.php │ ├── AbstractSliderCaptcha.php │ ├── AbstractTextCaptcha.php │ ├── ImageCaptchaFactory.php │ ├── QuestionCaptchaFactory.php │ ├── SliderCaptchaFactory.php │ ├── TextCaptchaFactory.php │ ├── captchaimage.php │ ├── fonts │ │ └── OpenSans-SemiBold.ttf │ └── variants │ │ ├── DefaultImageCaptcha.php │ │ ├── DefaultTextCaptcha.php │ │ ├── EvenCharacterTextCaptcha.php │ │ ├── ReverseTextCaptcha.php │ │ ├── SimpleMathTextCaptcha.php │ │ ├── SimpleQuestionCaptcha.php │ │ └── SliderCaptcha.php ├── CustomRules.php ├── Element.php ├── Form.php ├── FormValidation.php ├── Images │ └── Image.php ├── Inputelements │ ├── Datalist │ │ └── Datalist.php │ ├── Inputfields.php │ ├── Inputs │ │ ├── Input.php │ │ ├── InputCheckbox.php │ │ ├── InputCheckboxMultiple.php │ │ ├── InputColor.php │ │ ├── InputDate.php │ │ ├── InputDateTime.php │ │ ├── InputEmail.php │ │ ├── InputFile.php │ │ ├── InputHidden.php │ │ ├── InputMonth.php │ │ ├── InputNumber.php │ │ ├── InputPassword.php │ │ ├── InputRadio.php │ │ ├── InputRadioCheckbox.php │ │ ├── InputRadioMultiple.php │ │ ├── InputRange.php │ │ ├── InputSearch.php │ │ ├── InputTel.php │ │ ├── InputText.php │ │ ├── InputTime.php │ │ ├── InputUrl.php │ │ ├── InputWeek.php │ │ └── defaults │ │ │ ├── Email.php │ │ │ ├── FileUploadMultiple.php │ │ │ ├── FileUploadSingle.php │ │ │ ├── Name.php │ │ │ ├── Password.php │ │ │ ├── PasswordConfirmation.php │ │ │ ├── Phone.php │ │ │ ├── Privacy.php │ │ │ ├── SendCopy.php │ │ │ ├── Subject.php │ │ │ ├── Surname.php │ │ │ └── Username.php │ ├── Select │ │ ├── Select.php │ │ ├── SelectMultiple.php │ │ └── defaults │ │ │ ├── Gender.php │ │ │ └── Language.php │ └── Textarea │ │ ├── Textarea.php │ │ └── defaults │ │ └── Message.php ├── Miscellaneous │ ├── Button.php │ ├── FieldsetClose.php │ ├── FieldsetOpen.php │ ├── Markup.php │ ├── Option.php │ ├── TraitCheckboxesAndRadios.php │ ├── TraitCheckboxesAndRadiosMultiple.php │ ├── TraitOption.php │ ├── TraitOptionElements.php │ ├── TraitPWOptions.php │ ├── TraitTags.php │ └── defaults │ │ └── ResetButton.php ├── Tag.php ├── Textelements │ ├── Alert.php │ ├── Defaults │ │ ├── DomainLink.php │ │ └── PrivacyText.php │ ├── Description.php │ ├── Errormessage.php │ ├── Label.php │ ├── Legend.php │ ├── Link.php │ ├── Notes.php │ ├── RequiredTextHint.php │ ├── Successmessage.php │ └── TextElements.php ├── ValitronAPI.php └── Wrapper │ ├── FieldWrapper.php │ ├── InputWrapper.php │ └── Wrapper.php ├── FrontendForms.module ├── FrontendFormsManager.module ├── LICENSE ├── README.md ├── RockLanguage ├── DE │ ├── site--modules--frontendforms--config--questionfields-php.json │ ├── site--modules--frontendforms--detail-view-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstractcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstractimagecaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstractslidercaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstracttextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--defaultimagecaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--defaulttextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--evencharactertextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--reversetextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--simplemathtextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--simplequestioncaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--slidercaptcha-php.json │ ├── site--modules--frontendforms--formelements--customrules-php.json │ ├── site--modules--frontendforms--formelements--form-php.json │ ├── site--modules--frontendforms--formelements--formvalidation-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputfields-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--email-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadmultiple-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadsingle-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--name-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--password-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--passwordconfirmation-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--phone-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--privacy-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--sendcopy-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--subject-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--surname-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--username-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--inputfile-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--inputpassword-php.json │ ├── site--modules--frontendforms--formelements--inputelements--select--defaults--gender-php.json │ ├── site--modules--frontendforms--formelements--inputelements--select--defaults--language-php.json │ ├── site--modules--frontendforms--formelements--inputelements--textarea--defaults--message-php.json │ ├── site--modules--frontendforms--formelements--inputelements--textarea--textarea-php.json │ ├── site--modules--frontendforms--formelements--miscellaneous--button-php.json │ ├── site--modules--frontendforms--formelements--miscellaneous--defaults--resetbutton-php.json │ ├── site--modules--frontendforms--formelements--textelements--defaults--privacytext-php.json │ ├── site--modules--frontendforms--formelements--textelements--link-php.json │ ├── site--modules--frontendforms--frontendforms-module.json │ ├── site--modules--frontendforms--frontendformsmanager-module.json │ └── site--modules--frontendforms--valitron--errormessages-php.json └── RU │ ├── site--modules--frontendforms--config--questionfields-php.json │ ├── site--modules--frontendforms--detail-view-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstractcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstractimagecaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstractslidercaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--abstracttextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--defaultimagecaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--defaulttextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--evencharactertextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--reversetextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--simplemathtextcaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--simplequestioncaptcha-php.json │ ├── site--modules--frontendforms--formelements--captcha--variants--slidercaptcha-php.json │ ├── site--modules--frontendforms--formelements--customrules-php.json │ ├── site--modules--frontendforms--formelements--form-php.json │ ├── site--modules--frontendforms--formelements--formvalidation-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputfields-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--email-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadmultiple-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadsingle-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--name-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--password-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--passwordconfirmation-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--phone-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--privacy-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--sendcopy-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--subject-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--surname-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--defaults--username-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--inputfile-php.json │ ├── site--modules--frontendforms--formelements--inputelements--inputs--inputpassword-php.json │ ├── site--modules--frontendforms--formelements--inputelements--select--defaults--gender-php.json │ ├── site--modules--frontendforms--formelements--inputelements--select--defaults--language-php.json │ ├── site--modules--frontendforms--formelements--inputelements--textarea--defaults--message-php.json │ ├── site--modules--frontendforms--formelements--inputelements--textarea--textarea-php.json │ ├── site--modules--frontendforms--formelements--miscellaneous--button-php.json │ ├── site--modules--frontendforms--formelements--textelements--defaults--privacytext-php.json │ ├── site--modules--frontendforms--formelements--textelements--link-php.json │ ├── site--modules--frontendforms--frontendforms-module.json │ ├── site--modules--frontendforms--frontendformsmanager-module.json │ └── site--modules--frontendforms--valitron--errormessages-php.json ├── assets └── template_2 │ └── logo.png ├── backend ├── frontendforms.css └── frontendforms.js ├── captchaimages ├── animal │ ├── animal1.jpg │ ├── animal10.jpg │ ├── animal11.jpg │ ├── animal12.jpg │ ├── animal13.jpg │ ├── animal14.jpg │ ├── animal2.jpg │ ├── animal3.jpg │ ├── animal4.jpg │ ├── animal5.jpg │ ├── animal6.jpg │ ├── animal7.jpg │ ├── animal8.jpg │ └── animal9.jpg ├── car │ ├── car1.jpg │ ├── car2.jpg │ ├── car3.jpg │ ├── car4.jpg │ └── car5.jpg ├── flower │ ├── flower1.jpg │ ├── flower10.jpg │ ├── flower11.jpg │ ├── flower12.jpg │ ├── flower13.jpg │ ├── flower14.jpg │ ├── flower15.jpg │ ├── flower2.jpg │ ├── flower3.jpg │ ├── flower4.jpg │ ├── flower5.jpg │ ├── flower6.jpg │ ├── flower7.jpg │ ├── flower8.jpg │ └── flower9.jpg ├── house │ ├── house1.jpg │ ├── house10.jpg │ ├── house11.jpg │ ├── house12.jpg │ ├── house2.jpg │ ├── house3.jpg │ ├── house4.jpg │ ├── house5.jpg │ ├── house6.jpg │ ├── house7.jpg │ ├── house8.jpg │ └── house9.jpg ├── lake │ ├── lake1.jpg │ ├── lake2.jpg │ ├── lake3.jpg │ ├── lake4.jpg │ ├── lake5.jpg │ ├── lake6.jpg │ ├── lake7.jpg │ ├── lake8.jpg │ └── lake9.jpg ├── mountain │ ├── mountain1.jpg │ ├── mountain10.jpg │ ├── mountain11.jpg │ ├── mountain12.jpg │ ├── mountain13.jpg │ ├── mountain2.jpg │ ├── mountain3.jpg │ ├── mountain4.jpg │ ├── mountain5.jpg │ ├── mountain6.jpg │ ├── mountain7.jpg │ ├── mountain8.jpg │ └── mountain9.jpg └── tree │ ├── tree1.jpg │ ├── tree10.jpg │ ├── tree2.jpg │ ├── tree3.jpg │ ├── tree4.jpg │ ├── tree5.jpg │ ├── tree6.jpg │ ├── tree7.jpg │ ├── tree8.jpg │ └── tree9.jpg ├── config └── questionFields.php ├── detail-view.php ├── email_templates ├── template_1.html ├── template_1.png ├── template_2.html ├── template_2.png ├── template_3.html ├── template_3.png ├── template_4.html └── template_4.png ├── frontendforms-slidercaptcha.js ├── frontendforms-slidercaptcha.min.js ├── frontendforms.css ├── frontendforms.js ├── frontendforms.min.css ├── frontendforms.min.js ├── image-picker ├── image-picker.css ├── image-picker.js └── image-picker.min.js ├── images ├── captchafield.png ├── dashboard.png ├── forminterests-backend.jpg ├── forminterests-frontend.jpg ├── installmodule.png ├── pagetree.png ├── questionpage.png ├── questiontable.png ├── setupmenupoint.png ├── template-select.png └── templatepreviews │ ├── emailtemplate-placeholder-image.png │ └── none.png ├── languages ├── de-frontendforms.csv └── de-frontendformsmanager.csv ├── mf-conditional-fields.js ├── mf-conditional-fields.min.js └── valitron ├── errormessages.php └── src ├── LICENSE.txt └── Validator.php /CSSClasses/bootstrap5.json: -------------------------------------------------------------------------------- 1 | { 2 | "alertClass": "alert", 3 | "alert_primaryClass": "alert-primary", 4 | "alert_dangerClass": "alert-danger", 5 | "alert_successClass": "alert-success", 6 | "alert_warningClass": "alert-warning", 7 | "buttonClass": "btn btn-primary", 8 | "checkboxClass": "form-check-input", 9 | "checkbox_horizontalClass": "form-check form-check-inline", 10 | "checkbox_verticalClass": "checkbox-vertical", 11 | "topLabelClass": "toplabel", 12 | "checkinputClass": "form-check", 13 | "checklabelClass": "form-check-label", 14 | "datalistClass": "", 15 | "descriptionClass": "description", 16 | "error_messageClass": "invalid-feedback", 17 | "success_messageClass": "valid-feedback", 18 | "field_wrapperClass": "mb-3", 19 | "field_wrapper_errorClass": "error", 20 | "field_wrapper_successClass": "success", 21 | "fieldsetClass": "", 22 | "formClass": "needs-validation", 23 | "formClassValidated": "was-validated", 24 | "inputClass": "form-control", 25 | "input_colorClass": "form-control-color", 26 | "input_errorClass": "is-invalid", 27 | "input_successClass": "is-valid", 28 | "input_rangeClass": "range", 29 | "input_wrapperClass": "", 30 | "labelClass": "form-label", 31 | "label_requiredClass": "required", 32 | "legendClass": "", 33 | "notesClass": "notes", 34 | "radioClass": "form-check-input", 35 | "requiredClass": "required", 36 | "requiredTextHintClass": "requiredHint", 37 | "selectClass": "form-select", 38 | "textareaClass": "form-control", 39 | "input_fileClass": "form-control", 40 | "reloadLinkClass": "reload", 41 | "captchaClass": "captcha", 42 | "verticalWrapperClass": "vertical-align-wrapper", 43 | "horizontalWrapperClass": "horizontal-align-wrapper" 44 | } 45 | -------------------------------------------------------------------------------- /CSSClasses/none.json: -------------------------------------------------------------------------------- 1 | { 2 | "alertClass": "alert", 3 | "alert_primaryClass": "alert-primary", 4 | "alert_dangerClass": "alert-danger", 5 | "alert_successClass": "alert-success", 6 | "alert_warningClass": "alert-warning", 7 | "buttonClass": "button", 8 | "checkboxClass": "checkbox", 9 | "checkbox_horizontalClass": "checkbox-horizontal", 10 | "checkbox_verticalClass": "checkbox-vertical", 11 | "topLabelClass": "toplabel", 12 | "datalistClass": "datalist", 13 | "descriptionClass": "description", 14 | "error_messageClass": "error", 15 | "success_messageClass": "valid", 16 | "field_wrapperClass": "fieldwrapper", 17 | "field_wrapper_errorClass": "error", 18 | "field_wrapper_successClass": "success", 19 | "fieldsetClass": "fieldset", 20 | "formClass": "form", 21 | "formClassValidated": "form-validated", 22 | "inputClass": "input", 23 | "input_colorClass": "input-color", 24 | "input_errorClass": "input-error", 25 | "input_successClass": "input-success", 26 | "input_rangeClass": "input-range", 27 | "input_wrapperClass": "inputwrapper", 28 | "labelClass": "label", 29 | "label_requiredClass": "required", 30 | "legendClass": "legend", 31 | "notesClass": "notes", 32 | "radioClass": "radio", 33 | "requiredClass": "required", 34 | "requiredTextHintClass": "requiredHint", 35 | "selectClass": "select", 36 | "textareaClass": "textarea", 37 | "input_fileClass": "input-file", 38 | "reloadLinkClass": "reload", 39 | "captchaClass": "captcha", 40 | "verticalWrapperClass": "vertical-align-wrapper", 41 | "horizontalWrapperClass": "horizontal-align-wrapper" 42 | } 43 | -------------------------------------------------------------------------------- /CSSClasses/pico2.json: -------------------------------------------------------------------------------- 1 | { 2 | "alertClass": "alert", 3 | "alert_primaryClass": "alert-primary", 4 | "alert_dangerClass": "alert-danger", 5 | "alert_successClass": "alert-success", 6 | "alert_warningClass": "alert-warning", 7 | "buttonClass": "button", 8 | "checkboxClass": "checkbox", 9 | "checkbox_horizontalClass": "checkbox-horizontal", 10 | "checkbox_verticalClass": "checkbox-vertical", 11 | "topLabelClass": "toplabel", 12 | "datalistClass": "datalist", 13 | "descriptionClass": "description", 14 | "error_messageClass": "error", 15 | "success_messageClass": "valid", 16 | "field_wrapperClass": "fieldwrapper", 17 | "field_wrapper_errorClass": "error", 18 | "field_wrapper_successClass": "success", 19 | "fieldsetClass": "fieldset", 20 | "formClass": "form", 21 | "formClassValidated": "form-validated", 22 | "inputClass": "input", 23 | "input_colorClass": "input-color", 24 | "input_errorClass": "input-error", 25 | "input_successClass": "input-success", 26 | "input_rangeClass": "input-range", 27 | "input_wrapperClass": "inputwrapper", 28 | "labelClass": "label", 29 | "label_requiredClass": "required", 30 | "legendClass": "legend", 31 | "notesClass": "notes", 32 | "radioClass": "radio", 33 | "requiredClass": "required", 34 | "requiredTextHintClass": "requiredHint", 35 | "selectClass": "select", 36 | "textareaClass": "textarea", 37 | "input_fileClass": "input-file", 38 | "reloadLinkClass": "reload", 39 | "captchaClass": "captcha", 40 | "verticalWrapperClass": "vertical-align-wrapper", 41 | "horizontalWrapperClass": "horizontal-align-wrapper" 42 | } 43 | -------------------------------------------------------------------------------- /CSSClasses/uikit3.json: -------------------------------------------------------------------------------- 1 | { 2 | "alertClass": "uk-alert", 3 | "alert_primaryClass": "uk-alert-primary", 4 | "alert_dangerClass": "uk-alert-danger", 5 | "alert_successClass": "uk-alert-success", 6 | "alert_warningClass": "uk-alert-warning", 7 | "buttonClass": "uk-button uk-button-default", 8 | "checkboxClass": "uk-checkbox", 9 | "checkbox_horizontalClass": "uk-margin uk-grid-small uk-child-width-auto uk-grid", 10 | "checkbox_verticalClass": "checkbox-vertical", 11 | "topLabelClass": "toplabel", 12 | "datalistClass": "", 13 | "descriptionClass": "description", 14 | "error_messageClass": "uk-text-danger", 15 | "success_messageClass": "uk-text-success", 16 | "field_wrapperClass": "uk-margin", 17 | "field_wrapper_errorClass": "error", 18 | "field_wrapper_successClass": "success", 19 | "fieldsetClass": "uk-fieldset", 20 | "formClass": "uk-form", 21 | "formClassValidated": "form-validated", 22 | "inputClass": "uk-input", 23 | "input_colorClass": "", 24 | "input_errorClass": "uk-form-danger", 25 | "input_successClass": "uk-form-success", 26 | "input_rangeClass": "uk-range", 27 | "input_wrapperClass": "uk-form-controls", 28 | "labelClass": "uk-form-label", 29 | "label_requiredClass": "required", 30 | "legendClass": "uk-legend", 31 | "notesClass": "notes", 32 | "radioClass": "uk-radio", 33 | "requiredClass": "required", 34 | "requiredTextHintClass": "requiredHint", 35 | "selectClass": "uk-select", 36 | "textareaClass": "uk-textarea", 37 | "input_fileClass": "uk-file", 38 | "reloadLinkClass": "reload", 39 | "captchaClass": "captcha", 40 | "verticalWrapperClass": "vertical-align-wrapper", 41 | "horizontalWrapperClass": "horizontal-align-wrapper" 42 | } 43 | -------------------------------------------------------------------------------- /Examples/ajaxform.php: -------------------------------------------------------------------------------- 1 | A simple form using Ajax for submission'; 22 | 23 | $form = new \FrontendForms\Form('ajax'); 24 | $form->setSubmitWithAjax(); // enable Ajax support if it has not been enabled inside the global configuration 25 | $form->setRedirectUrlAfterAjax($page->url . '#target'); // optional: force a redirect after the form has been validated successful 26 | /* 27 | Only to mention: this redirect makes not really a sense and is only for demonstration purposes 28 | A real life example could be using a redirect after login to redirect to a profile page or whatever. 29 | The internal anchor (#target) is also only for demo purposes to show the usage of an anchor inside a redirect 30 | */ 31 | 32 | $name = new \FrontendForms\InputText('name'); 33 | $name->setLabel('Name'); 34 | $name->setRule('required')->setCustomFieldName('The name'); 35 | $form->add($name); 36 | 37 | $button = new \FrontendForms\Button('submit'); 38 | $button->setAttribute('value', 'Send'); 39 | $form->add($button); 40 | 41 | if ($form->isValid()) { 42 | // do whatever you want 43 | 44 | } 45 | 46 | $content .= $form->render(); 47 | $content .= '
This is the target container for the redirect after the form has been validated successfully.
'; 48 | echo $content; 49 | 50 | -------------------------------------------------------------------------------- /Examples/examplequestions.txt: -------------------------------------------------------------------------------- 1 | Here you will find some examples of simple questions that can be used: 2 | 3 | - What color does a green apple have? 4 | - How many legs does a dog have? 5 | - What is the last day of the week called? 6 | - What is the last month of the year called? 7 | - How many letters does the alphabet have? 8 | - How many days does a week have? 9 | -------------------------------------------------------------------------------- /Examples/fileuploadtopage.php: -------------------------------------------------------------------------------- 1 | A simple working file upload form for uploading files to a page'; 22 | 23 | $folder = $page->id; // set page id as the folder name 24 | 25 | $content .= '

Files will be uploaded to site/assets/files/'.$folder.' by default, but you can choose 26 | another folder by using the setUploadPath() method. But be aware that the folder must be writable.

'; 27 | 28 | $form = new \FrontendForms\Form('upload'); 29 | 30 | $file1 = new \FrontendForms\InputFile('fileupload1'); 31 | $file1->setLabel('Multiple files upload'); 32 | $file1->setMultiple(true); // this method makes converts the upload field to be a multi-upload field 33 | $form->add($file1); 34 | 35 | $file2 = new \FrontendForms\InputFile('fileupload2'); 36 | $file2->setLabel('Single file upload'); 37 | $form->add($file2); 38 | 39 | $button = new \FrontendForms\Button('submit'); 40 | $button->setAttribute('value', 'Send'); 41 | $form->add($button); 42 | 43 | if ($form->isValid()) { 44 | $content .= '

The file(s) has/have been uploaded successfully.

'; 45 | } 46 | 47 | $content .= $form->render(); 48 | 49 | $page_files = $files->find($config->paths->assets.'files/'.$page->id); 50 | if($page_files){ 51 | $content .= '

List of page files inside the folder '.$folder.':

'; 52 | $content .= ''; 57 | } 58 | 59 | echo $content; 60 | -------------------------------------------------------------------------------- /Examples/formwithGrid.php: -------------------------------------------------------------------------------- 1 | Test page for a form inside a grid'; 13 | $content .= '

In this case a UiKit grid system is used.

'; 14 | 15 | $form = new \FrontendForms\Form('gridform'); 16 | $form->useInputWrapper(false); 17 | $form->setAttributes(['data-uk-grid', 'class' => 'uk-grid-small']); 18 | 19 | 20 | $test1 = new \FrontendForms\InputText('test1'); 21 | $test1->setLabel('Input 1'); 22 | $test1->setAttribute('placeholder', '100'); 23 | $test1->getFieldWrapper()->setAttribute('class', 'uk-width-1-1'); 24 | $form->add($test1); 25 | 26 | $test2 = new \FrontendForms\InputText('test2'); 27 | $test2->setLabel('Input 2'); 28 | $test2->setAttribute('placeholder', '50'); 29 | $test2->getFieldWrapper()->setAttribute('class', 'uk-width-1-2@s'); 30 | $form->add($test2); 31 | 32 | $test3 = new \FrontendForms\InputText('test3'); 33 | $test3->setLabel('Input 3'); 34 | $test3->setAttribute('placeholder', '25'); 35 | $test3->getFieldWrapper()->setAttribute('class', 'uk-width-1-4@s'); 36 | $form->add($test3); 37 | 38 | $test4 = new \FrontendForms\InputText('test4'); 39 | $test4->setLabel('Input 4'); 40 | $test4->setAttribute('placeholder', '25'); 41 | $test4->getFieldWrapper()->setAttribute('class', 'uk-width-1-4@s'); 42 | $form->add($test4); 43 | 44 | $test5 = new \FrontendForms\InputText('test5'); 45 | $test5->setLabel('Input 5'); 46 | $test5->setAttribute('placeholder', '50'); 47 | $test5->getFieldWrapper()->setAttribute('class', 'uk-width-1-2@s'); 48 | $form->add($test5); 49 | 50 | $test6 = new \FrontendForms\InputText('test6'); 51 | $test6->setLabel('Input 6'); 52 | $test6->setAttribute('placeholder', '50'); 53 | $test6->getFieldWrapper()->setAttribute('class', 'uk-width-1-2@s'); 54 | $form->add($test6); 55 | 56 | $button = new \FrontendForms\Button('submit'); 57 | $button->setAttribute('value', 'Send'); 58 | $button->prepend('
'); 59 | $button->append('
'); 60 | $form->add($button); 61 | 62 | if ($form->isValid()) { 63 | 64 | $content .= 'Submission was successful!'; 65 | // or do what you want 66 | 67 | } 68 | 69 | // render the form 70 | $content .= $form->render(); 71 | 72 | echo $content; 73 | -------------------------------------------------------------------------------- /Formelements/Captcha/AbstractCharset.php: -------------------------------------------------------------------------------- 1 | setCaptchaContent($this->createRandomString()); 32 | } 33 | 34 | 35 | /** 36 | * Get the string of the charset that will be used to create the captcha text 37 | * @return string 38 | */ 39 | protected function getCharset(): string 40 | { 41 | return $this->frontendforms['input_captchaCharset']; 42 | } 43 | 44 | /** 45 | * Get the number of characters 46 | * @return int 47 | */ 48 | protected function getNumberOfCharacters(): int 49 | { 50 | return $this->frontendforms['input_captchaNumberOfCharacters']; 51 | } 52 | 53 | /** 54 | * Create the random string for the captcha depending on the number and charset setting 55 | * @return string 56 | */ 57 | protected function createRandomString(): string 58 | { 59 | $randomString = ''; 60 | for ($i = 0; $i < $this->getNumberOfCharacters(); $i++) { 61 | $index = rand(0, strlen($this->getCharset()) - 1); 62 | $randomString .= $this->getCharset()[$index]; 63 | } 64 | return $randomString; 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /Formelements/Captcha/AbstractMath.php: -------------------------------------------------------------------------------- 1 | setCaptchaContent($this->createRandomCalculation()); // set a random calculation as content 30 | } 31 | 32 | protected function calculate(int $varOne, string $operator, int $varTwo): string 33 | { 34 | $result = match ($operator) { 35 | '+' => $varOne + $varTwo, 36 | '-' => $varOne - $varTwo, 37 | '*' => $varOne * $varTwo, 38 | default => 0, 39 | }; 40 | return (string) $result; 41 | } 42 | 43 | /** 44 | * Create the random calculation with numbers between 1 and 9 45 | * @return string 46 | */ 47 | protected function createRandomCalculation(): string 48 | { 49 | $operators = ['+', '-', '*']; 50 | $randOperator = $operators[rand(0,2)]; 51 | $num1 = rand(1,9); 52 | $num2 = rand(1,9); 53 | $this->result = $this->calculate($num1,$randOperator, $num2); 54 | return $num1.$randOperator.$num2; 55 | } 56 | 57 | } -------------------------------------------------------------------------------- /Formelements/Captcha/AbstractQuestionCaptcha.php: -------------------------------------------------------------------------------- 1 | wire('languages')){ 20 | $lang = $this->wire('user')->language(); 21 | $this->lang_id = $lang->isDefault() ? '' : $lang->id; 22 | } else { 23 | $this->lang_id = null; 24 | } 25 | 26 | $this->type = $this->className(); // set the name of the captcha from the class name 27 | } 28 | 29 | 30 | 31 | 32 | 33 | /** 34 | * Set the real captcha value for input validation 35 | * This depends on the captcha variant set, so this contains the value that should be entered into the input field 36 | * 37 | * @param string $content 38 | * @return $this 39 | */ 40 | protected function setCaptchaValidValue(array|null $content): self 41 | { 42 | $this->captchaValidValue = $content; 43 | return $this; 44 | } 45 | 46 | /** 47 | * Get the solution value of the captcha 48 | * @return string 49 | */ 50 | protected function getCaptchaValidValue(): array|null 51 | { 52 | return $this->captchaValidValue; 53 | } 54 | 55 | /** 56 | * Create the captcha inputfield for a captcha 57 | * The inputfield for the captcha is an object of type InputText 58 | * @param string $formID 59 | * @return InputText 60 | */ 61 | public function createCaptchaInputField(string $formID): InputText 62 | { 63 | // start creating the captcha input field 64 | $captchaInput = new InputText('captcha'); 65 | // Remove or add wrappers depending on settings 66 | $captchaInput->setAttribute('name', $formID . '-captcha'); 67 | $captchaInput->useInputWrapper($this->useInputWrapper); 68 | $captchaInput->useFieldWrapper($this->useFieldWrapper); 69 | $captchaInput->getFieldWrapper()->setAttribute('class', 'captcha'); 70 | $captchaInput->getInputWrapper()->setAttribute('class', 'captcha'); 71 | return $captchaInput; 72 | } 73 | 74 | 75 | } 76 | -------------------------------------------------------------------------------- /Formelements/Captcha/AbstractSliderCaptcha.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('I am a human')); 28 | $captchaInput->setAttribute('name', $formID . '-slider-captcha'); 29 | $captchaInput->setAttribute('class', 'ff-slidercaptcha-checkbox'); 30 | $captchaInput->setAttribute('data-formid', $formID); 31 | $captchaInput->setAttribute('value', '0'); 32 | $captchaInput->useInputWrapper($this->useInputWrapper); 33 | $captchaInput->useFieldWrapper($this->useFieldWrapper); 34 | $captchaInput->getFieldWrapper()->setAttribute('class', 'captcha'); 35 | $captchaInput->getInputWrapper()->setAttribute('class', 'captcha'); 36 | $captchaInput->prepend($this->createSliderCaptcha($formID)); 37 | return $captchaInput; 38 | 39 | } 40 | 41 | /** 42 | * Render the div container for the slider captcha 43 | * @param string $formID 44 | * @return string 45 | */ 46 | public function createSliderCaptcha(string $formID): string 47 | { 48 | return '
'; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /Formelements/Captcha/ImageCaptchaFactory.php: -------------------------------------------------------------------------------- 1 | new DefaultImageCaptcha() 21 | }; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /Formelements/Captcha/QuestionCaptchaFactory.php: -------------------------------------------------------------------------------- 1 | new SimpleQuestionCaptcha(), 23 | default => new SimpleQuestionCaptcha(), 24 | }; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Formelements/Captcha/SliderCaptchaFactory.php: -------------------------------------------------------------------------------- 1 | new SliderCaptcha(), 23 | default => new SliderCaptcha(), 24 | }; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /Formelements/Captcha/TextCaptchaFactory.php: -------------------------------------------------------------------------------- 1 | new ReverseTextCaptcha(), 23 | AbstractCaptchaFactory::EVENTEXTCAPTCHA => new EvenCharacterTextCaptcha(), 24 | AbstractCaptchaFactory::SIMPLEMATHCAPTCHA => new SimpleMathTextCaptcha(), 25 | default => new DefaultTextCaptcha(), 26 | }; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Formelements/Captcha/captchaimage.php: -------------------------------------------------------------------------------- 1 | queryString(); 17 | $parameter = parse_str($query, $output); 18 | $session->set('query', $query); 19 | $captchaType = $output['cat']; 20 | $captchaVariant = $output['type']; 21 | $formID = $output['formID']; 22 | 23 | header('Content-Type: image/png'); 24 | header("Expires: Tue, 01 Jan 2013 00:00:00 GMT"); 25 | header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 26 | header("Cache-Control: no-store, no-cache, must-revalidate"); 27 | header("Cache-Control: post-check=0, pre-check=0", false); 28 | header("Pragma: no-cache"); 29 | 30 | // create an object of the appropriate CAPTCHA class defined by $captchaType and $captchaVariant 31 | $captcha = AbstractCaptchaFactory::make($captchaType, $captchaVariant); 32 | $captcha->createCaptchaImage($formID); 33 | 34 | -------------------------------------------------------------------------------- /Formelements/Captcha/fonts/OpenSans-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/Formelements/Captcha/fonts/OpenSans-SemiBold.ttf -------------------------------------------------------------------------------- /Formelements/Captcha/variants/DefaultImageCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Image captcha'); 29 | $this->desc = $this->_('Assign the image to a category'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Captcha/variants/DefaultTextCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Random string captcha'); 30 | $this->desc = $this->_('Enter the text from the image in the input field.'); 31 | } 32 | 33 | /** 34 | * Customize the captcha input field for the default text captcha 35 | * @param string $formID 36 | * @return InputText 37 | */ 38 | public function createCaptchaInputField(string $formID): InputText 39 | { 40 | $parent = parent::createCaptchaInputField($formID); 41 | $parent->setNotes($this->desc); 42 | return $parent; 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /Formelements/Captcha/variants/EvenCharacterTextCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Even string captcha'); 30 | $this->desc = $this->_('Enter every second character of the text from the image in the input field.'); 31 | } 32 | 33 | /** 34 | * Set every second character inside the captcha as value for the captcha validation 35 | * @param string $content 36 | * @return AbstractTextCaptcha 37 | */ 38 | protected function setCaptchaValidValue(string $content): AbstractTextCaptcha 39 | { 40 | $newStr = ''; 41 | for( $i = 0; $i < strlen($content); $i++) { $newStr .= ( ( $i % 2 ) != 0 ? $content[ $i ] : '' );} 42 | return parent::setCaptchaValidValue($newStr); 43 | } 44 | 45 | /** 46 | * Customize the captcha input field for the default text captcha 47 | * @param string $formID 48 | * @return InputText 49 | */ 50 | public function createCaptchaInputField(string $formID): InputText 51 | { 52 | $parent = parent::createCaptchaInputField($formID); 53 | $parent->setNotes($this->desc); 54 | return $parent; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /Formelements/Captcha/variants/ReverseTextCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Reverse string captcha'); 31 | $this->desc = $this->_('Enter the text from the image in reverse order into the input field (from right to left).'); 32 | } 33 | 34 | /** 35 | * Set the characters inside the captcha in reverse order as value for the captcha validation 36 | * @param string $content 37 | * @return AbstractTextCaptcha 38 | */ 39 | protected function setCaptchaValidValue(string $content): AbstractTextCaptcha 40 | { 41 | $content = strrev($content); 42 | return parent::setCaptchaValidValue($content); 43 | } 44 | 45 | /** 46 | * Customize the captcha input field for the default text captcha 47 | * @param string $formID 48 | * @return InputText 49 | */ 50 | public function createCaptchaInputField(string $formID): InputText 51 | { 52 | $parent = parent::createCaptchaInputField($formID); 53 | $parent->setNotes($this->desc); 54 | return $parent; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /Formelements/Captcha/variants/SimpleMathTextCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Math captcha'); 31 | $this->desc = $this->_('Enter the result of the calculation in the input field.'); 32 | } 33 | 34 | /** 35 | * Set the characters inside the captcha in reverse order as value for the captcha validation 36 | * @param string $content 37 | * @return AbstractTextCaptcha 38 | */ 39 | protected function setCaptchaValidValue(string $content): AbstractTextCaptcha 40 | { 41 | return parent::setCaptchaValidValue($this->result); 42 | } 43 | 44 | /** 45 | * Customize the captcha input field for the simple math captcha 46 | * @param string $formID 47 | * @return InputText 48 | */ 49 | public function createCaptchaInputField(string $formID): InputText 50 | { 51 | $parent = parent::createCaptchaInputField($formID); 52 | $parent->setNotes($this->desc); 53 | return $parent; 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /Formelements/Captcha/variants/SimpleQuestionCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Simple question Captcha (Free text)'); 31 | $this->desc = $this->_('Please answer the question.'); 32 | 33 | } 34 | 35 | 36 | /** 37 | * Customize the captcha input field for the simple question captcha 38 | * @param string $formID 39 | * @return InputText 40 | */ 41 | public function createCaptchaInputField(string $formID): InputText 42 | { 43 | 44 | // get the question in the user language 45 | $fieldNameQuestion = ($this->lang_id) ? 'input_question__'.$this->lang_id : 'input_question'; 46 | $label = $this->frontendforms[$fieldNameQuestion]; 47 | 48 | $fieldNameAnswers = ($this->lang_id) ? 'input_answers__'.$this->lang_id : 'input_answers'; 49 | $answersText = $this->frontendforms[$fieldNameAnswers]; 50 | 51 | if($answersText) 52 | $answers = explode("\n", str_replace("\r", "", $answersText)); 53 | 54 | // set values from the module configuration 55 | $parent = parent::createCaptchaInputField($formID); 56 | if(!empty($label)) 57 | $parent->setLabel($label); 58 | if(isset($answers)) 59 | $this->setCaptchaValidValue($answers); 60 | $parent->removeRule('checkCaptcha'); 61 | 62 | $parent->setNotes($this->desc); 63 | return $parent; 64 | } 65 | 66 | } -------------------------------------------------------------------------------- /Formelements/Captcha/variants/SliderCaptcha.php: -------------------------------------------------------------------------------- 1 | title = $this->_('Slider Captcha'); 30 | $this->desc = $this->_('Move a puzzle piece.'); 31 | 32 | } 33 | 34 | 35 | 36 | 37 | } -------------------------------------------------------------------------------- /Formelements/Images/Image.php: -------------------------------------------------------------------------------- 1 | setTag('img'); 31 | } 32 | 33 | /** 34 | * Render the image tag 35 | * @return string 36 | */ 37 | public function ___render(): string 38 | { 39 | if ($this->wrapper) { 40 | $this->wrapper->setContent($this->renderSelfclosingTag($this->getTag())); 41 | return $this->wrapper->___render(); 42 | } 43 | return $this->renderSelfclosingTag($this->getTag()); 44 | } 45 | 46 | /** 47 | * @return string 48 | */ 49 | public function __toString(): string 50 | { 51 | return $this->___render(); 52 | } 53 | 54 | } -------------------------------------------------------------------------------- /Formelements/Inputelements/Datalist/Datalist.php: -------------------------------------------------------------------------------- 1 | listID = $id; 34 | $this->setAttribute('list', 'datalist-' . $id); 35 | } 36 | 37 | /** 38 | * Use a PW field of the type SelectOptions to create the options; 39 | * @param string $fieldName 40 | * @return void 41 | * @throws WireException 42 | * @throws WirePermissionException 43 | */ 44 | public function setOptionsFromField(string $fieldName): void 45 | { 46 | $this->setOptionsFromFieldType($fieldName, 'addOption'); 47 | } 48 | 49 | /** 50 | * Render the datalist input 51 | * @return string 52 | */ 53 | public function ___renderDatalist(): string 54 | { 55 | $out = ''; 56 | //set post value as value if present 57 | $this->setAttribute('value', $this->getPostValue()); 58 | 59 | if ($this->options) { 60 | $options = ''; 61 | 62 | foreach ($this->options as $option) { 63 | 64 | if ($option->hasAttribute('selected') && (!$this->hasAttribute('value'))) { 65 | $this->setAttribute('value', $option->getAttribute('value')); 66 | $option->removeAttribute('selected'); //data list option has no selected attribute 67 | } 68 | $options .= $option->render(); 69 | 70 | } 71 | // create and append datalist container 72 | $this->append('' . $options . ''); 73 | $out = $this->renderInput(); 74 | } 75 | return $out; 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/Input.php: -------------------------------------------------------------------------------- 1 | setTag('input'); 28 | $this->setAttribute('type', 'text');// set text as default type if no type was set 29 | $this->setCSSClass('inputClass'); 30 | } 31 | 32 | /** 33 | * Render the input tag 34 | * @return string 35 | */ 36 | public function renderInput(): string 37 | { 38 | return $this->renderSelfclosingTag($this->getTag()). PHP_EOL; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputCheckbox.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'checkbox'); 28 | $this->removeCSSClass('inputClass'); 29 | $this->setCSSClass('checkboxClass'); 30 | } 31 | 32 | /** 33 | * Method to set a single checkbox checked by default (on page load) 34 | * Independent if input has a value or not 35 | * @return $this; 36 | */ 37 | public function setChecked(): self 38 | { 39 | if ($this->getServerMethod()) { 40 | if (isset($_POST[$this->getAttribute('name')])) { 41 | $this->setAttribute('checked'); 42 | } 43 | } else { 44 | $this->setAttribute('checked'); 45 | } 46 | return $this; 47 | } 48 | 49 | 50 | /** 51 | * Render the input element 52 | * @return string 53 | */ 54 | public function ___renderInputCheckbox(): string 55 | { 56 | if (in_array($this->getAttribute('value'), $this->getDefaultValue())) { 57 | $this->setAttribute('checked'); 58 | } 59 | // post value is array -> multiple checkbox value 60 | if (is_array($this->getPostValue())) { 61 | // set checked if post value is contains the checkbox value 62 | if (in_array($this->getAttribute('value'), $this->getPostValue())) { 63 | $this->setAttribute('checked'); 64 | } 65 | } else { 66 | // set checked if post value is equal the checkbox value 67 | if ($this->getPostValue() === $this->getAttribute('value')) { 68 | $this->setAttribute('checked'); 69 | } 70 | } 71 | return $this->renderInput(); 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputColor.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'color'); 28 | $this->setCSSClass('input_colorClass'); 29 | } 30 | 31 | /** 32 | * Render the input element 33 | * @return string 34 | */ 35 | public function ___renderInputColor(): string 36 | { 37 | return $this->renderInput(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputDate.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'date'); 28 | $this->setRule('date'); 29 | } 30 | 31 | /** 32 | * Render the input element 33 | * @return string 34 | */ 35 | public function ___renderInputDate(): string 36 | { 37 | return $this->renderInput(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputDateTime.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'datetime-local'); 31 | $this->setRule('date'); 32 | } 33 | 34 | /** 35 | * Render the input element 36 | * @return string 37 | */ 38 | public function ___renderInputDateTime(): string 39 | { 40 | return $this->renderInput(); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputEmail.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'email'); 28 | //set default validators 29 | $this->setRule('email'); 30 | $this->setRule('emailDNS'); 31 | } 32 | 33 | /** 34 | * Render the input element 35 | * @return string 36 | */ 37 | public function ___renderInputEmail(): string 38 | { 39 | return parent::renderInputText(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputHidden.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'hidden'); 28 | // disable input and field wrapper by default on this input type 29 | $this->useInputWrapper(false); 30 | $this->useFieldWrapper(false); 31 | } 32 | 33 | /** 34 | * Render the input element 35 | * @return string 36 | */ 37 | public function renderInputHidden(): string 38 | { 39 | return $this->renderInput(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputMonth.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'month'); 28 | $this->setRule('month'); 29 | } 30 | 31 | /** 32 | * Render the input element 33 | * @return string 34 | */ 35 | public function ___renderInputMonth(): string 36 | { 37 | return $this->renderInput(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputNumber.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'number'); 28 | // set default validators 29 | $this->setRule('numeric'); 30 | } 31 | 32 | /** 33 | * Render the input element 34 | * @return string 35 | */ 36 | public function ___renderInputNumber(): string 37 | { 38 | return $this->renderInput(); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputRadio.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'radio'); 28 | $this->removeCSSClass('inputClass'); 29 | $this->setCSSClass('radioClass'); 30 | } 31 | 32 | /** 33 | * Render the input element 34 | * @return string 35 | */ 36 | public function ___renderInputRadio(): string 37 | { 38 | if (in_array($this->getAttribute('value'), $this->getDefaultValue())) { 39 | $this->setAttribute('checked'); 40 | } 41 | if (($this->hasAttribute('value')) && ($this->getPostValue() === $this->getAttribute('value'))) { 42 | $this->setAttribute('checked'); 43 | } 44 | return $this->renderInput(); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputRadioCheckbox.php: -------------------------------------------------------------------------------- 1 | removeAttribute('class'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputRange.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'range'); 28 | $this->setCSSClass('input_rangeClass'); // add special range input class 29 | $this->removeAttributeValue('class', $this->getCSSClass('inputClass')); // remove default input class 30 | } 31 | 32 | /** 33 | * Render the input element 34 | * @return string 35 | */ 36 | public function ___renderInputRange(): string 37 | { 38 | return $this->renderInput(); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputSearch.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'search'); 31 | } 32 | 33 | /** 34 | * Render the input element 35 | * @return string 36 | */ 37 | public function ___renderInputSearch(): string 38 | { 39 | return parent::renderInputText(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputTel.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'tel'); 28 | } 29 | 30 | /** 31 | * Render the input element 32 | * @return string 33 | */ 34 | public function ___renderInputTel(): string 35 | { 36 | return parent::renderInputText(); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputText.php: -------------------------------------------------------------------------------- 1 | renderInput(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputTime.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'time'); 28 | $this->setRule('time'); 29 | } 30 | 31 | /** 32 | * Render the input element 33 | * @return string 34 | */ 35 | public function ___renderInputTime(): string 36 | { 37 | return $this->renderInput(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputUrl.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'url'); 28 | $this->setRule('url'); 29 | $this->setRule('urlActive'); 30 | } 31 | 32 | /** 33 | * Render the input element 34 | * @return string 35 | */ 36 | public function ___renderInputUrl(): string 37 | { 38 | return $this->renderInput(); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/InputWeek.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'week'); 28 | $this->setRule('week'); 29 | } 30 | 31 | /** 32 | * Render the input element 33 | * @return string 34 | */ 35 | public function ___renderInputWeek(): string 36 | { 37 | return $this->renderInput(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Email.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Email')); 28 | $this->setRule('required'); 29 | } 30 | 31 | 32 | /** 33 | * Render the email field 34 | * @return string 35 | */ 36 | public function ___renderEmail(): string 37 | { 38 | return parent::renderInputEmail(); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/FileUploadMultiple.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Upload multiple files')); 29 | } 30 | 31 | /** 32 | * Render the file upload input field 33 | * @return string 34 | */ 35 | public function ___renderFileUploadMultiple(): string 36 | { 37 | return parent::renderInputFile(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/FileUploadSingle.php: -------------------------------------------------------------------------------- 1 | setMultiple(false); 28 | $this->setLabel($this->_('Upload single file')); 29 | } 30 | 31 | /** 32 | * Render the file upload input field 33 | * @return string 34 | */ 35 | public function ___renderFileUploadSingle(): string 36 | { 37 | return parent::renderInputFile(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Name.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Name')); 28 | $this->setRule('required'); 29 | } 30 | 31 | /** 32 | * Render the name input field 33 | * @return string 34 | */ 35 | public function ___renderName(): string 36 | { 37 | return parent::renderInputText(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Password.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Password')); // set default label 30 | $this->setRule('required'); 31 | $this->setRule('safePassword'); 32 | $this->setRule('lengthMin', $this->minLength); 33 | $this->setRule('lengthMax', '128'); 34 | } 35 | 36 | /** 37 | * @return string 38 | * @throws WireException 39 | * @throws WirePermissionException 40 | */ 41 | public function ___renderPassword(): string 42 | { 43 | 44 | return parent::renderInputPassword(); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/PasswordConfirmation.php: -------------------------------------------------------------------------------- 1 | the id of the password confirmation field 27 | * @param string $passwordfieldName -> the name of the password field to check against 28 | * @throws WireException 29 | * @throws WirePermissionException 30 | */ 31 | public function __construct(string $id, string $passwordfieldName) 32 | { 33 | parent::__construct($id); 34 | $this->setLabel($this->_('Password Confirmation')); // set default label 35 | $this->setRule('required'); // a confirmation field is required by default 36 | $this->setRule('equals', $passwordfieldName); 37 | $this->setRule('lengthMin', $this->minLength); 38 | $this->setRule('lengthMax', '128'); 39 | $this->showPasswordRequirements(false); 40 | } 41 | 42 | /** 43 | * Render the password confirmation input field 44 | * @return string 45 | * @throws WireException 46 | * @throws WirePermissionException 47 | */ 48 | public function ___renderPasswordConfirmation(): string 49 | { 50 | return parent::renderInputPassword(); 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Phone.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Phone')); 26 | } 27 | 28 | /** 29 | * Render the phone input field 30 | * @return string 31 | */ 32 | public function ___renderPhone(): string 33 | { 34 | return parent::renderInputTel(); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/SendCopy.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Send a copy of my message to me')); 27 | } 28 | 29 | /** 30 | * Render checkbox for sending a copy to the sender 31 | * @return string 32 | */ 33 | public function ___renderSendCopy(): string 34 | { 35 | return parent::renderInputCheckbox(); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Subject.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Subject')); 28 | $this->setRule('required'); 29 | } 30 | 31 | /** 32 | * Render the subject input field 33 | * @return string 34 | */ 35 | public function ___renderSubject(): string 36 | { 37 | return parent::renderInputText(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Surname.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Surname')); 28 | $this->setRule('required'); 29 | } 30 | 31 | /** 32 | * Render the surname input field 33 | * @return string 34 | */ 35 | public function ___renderSurname(): string 36 | { 37 | return parent::renderInputText(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Inputs/defaults/Username.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Username')); 33 | $this->setSanitizer('pageName'); 34 | $this->setRule('required'); 35 | $this->setRule('usernameSyntax'); 36 | if($this->wire('user')->isLoggedin()) 37 | $this->setDefaultValue($this->wire('user')->name); 38 | } 39 | 40 | /** 41 | * Render the username input field 42 | * @return string 43 | */ 44 | public function ___renderUsername(): string 45 | { 46 | return parent::renderInputText(); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Select/Select.php: -------------------------------------------------------------------------------- 1 | setTag('select'); 32 | $this->setCSSClass('selectClass'); 33 | } 34 | 35 | /** 36 | * Use a PW field of the type SelectOptions to create the options; 37 | * @param string $fieldName 38 | * @return void 39 | * @throws WireException 40 | * @throws WirePermissionException 41 | */ 42 | public function setOptionsFromField(string $fieldName): void 43 | { 44 | $this->setOptionsFromFieldType($fieldName, 'addOption'); 45 | } 46 | 47 | /** 48 | * Render the select input 49 | * @return string 50 | */ 51 | public function ___renderSelect(): string 52 | { 53 | $out = ''; 54 | if ($this->options) { 55 | $options = ''; 56 | foreach ($this->options as $option) { 57 | // check if option element is hr element 58 | if($option instanceof TextElements) { 59 | // add hr tag only to Select, but not to SelectMultiple 60 | if($option->getTag() === 'hr'){ 61 | $options .= $option->renderSelfclosingTag($option->getTag()); 62 | } 63 | } else { 64 | if (in_array($option->getAttribute('value'), $this->getDefaultValue())) { 65 | $option->setAttribute('selected'); 66 | if($this->useAriaAttr) $option->setAttribute('aria-selected', 'true'); 67 | } 68 | if (in_array($option->getAttribute('value'), (array)$this->getPostValue())) { 69 | $option->setAttribute('selected'); 70 | if($this->useAriaAttr) $option->setAttribute('aria-selected', 'true'); 71 | } 72 | $options .= $option->render(); 73 | } 74 | } 75 | $this->setContent($options); 76 | $out = $this->renderNonSelfclosingTag($this->getTag()); 77 | } 78 | return $out; 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Select/SelectMultiple.php: -------------------------------------------------------------------------------- 1 | setAttribute('multiple'); 30 | $this->removeSanitizers('text'); 31 | $this->setSanitizer('arrayVal'); 32 | 33 | } 34 | 35 | /** 36 | * Add brackets to the name attribute if not present 37 | * @return void 38 | */ 39 | private function convertNameAttribute(): void 40 | { 41 | $nameAttr = $this->getAttribute('name'); 42 | if (substr($nameAttr, -1) !== '[]') { 43 | $this->setAttribute('name', $nameAttr . '[]'); 44 | } 45 | } 46 | 47 | /** 48 | * Render the select input 49 | * @return string 50 | */ 51 | public function renderSelectMultiple(): string 52 | { 53 | // add brackets to the name for multiple values array 54 | $this->convertNameAttribute(); 55 | return $this->renderSelect(); 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Select/defaults/Gender.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Gender')); 37 | if ($fieldName) { 38 | $this->setOptionsFromField($fieldName); 39 | } else { 40 | $this->addEmptyOption($this->_('Please select')); 41 | $this->addOption($this->_('Mister'), $this->_('Mister')); 42 | $this->addOption($this->_('Miss'), $this->_('Miss')); 43 | $this->addOption($this->_('Diverse'), $this->_('Diverse')); 44 | } 45 | $this->setRule('required')->setCustomFieldName($this->_('Gender')); 46 | } 47 | 48 | /** 49 | * Render the gender select input field 50 | * @return string 51 | */ 52 | public function renderGender(): string 53 | { 54 | return parent::renderSelect(); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Select/defaults/Language.php: -------------------------------------------------------------------------------- 1 | user_lang_id = $this->user->language->id; 39 | $this->setLabel($this->_('Language')); 40 | 41 | // create all language options 42 | $languageIDs = []; 43 | foreach ($this->wire('languages') as $lang) { 44 | $languageIDs[] = $lang->id; 45 | if($lang->title instanceof LanguagesPageFieldValue) { 46 | $title = $lang->title->getLanguageValue($this->user_lang_id ); 47 | } else { 48 | $title = $lang->title; 49 | } 50 | $this->addOption($title, (string)$lang->id); 51 | } 52 | 53 | $this->setRule('required')->setCustomFieldName($this->_('Language')); 54 | $this->setRule('integer'); 55 | $this->setRule('In', $languageIDs); 56 | 57 | } 58 | 59 | /** 60 | * Set a fixed language to be selected 61 | * @param int $id 62 | * @return $this 63 | */ 64 | public function setFixedLanguageID(int $id):self 65 | { 66 | $this->fixed_lang_id = $id; 67 | return $this; 68 | } 69 | 70 | /** 71 | * Render the language select input field 72 | * Render it only if it is a multi-language site, otherwise output only an empty string 73 | * @return string 74 | * @throws WireException 75 | */ 76 | public function renderLanguage(): string 77 | { 78 | if(count($this->wire('languages')) > 1){ 79 | 80 | $value = (is_null($this->fixed_lang_id)) ? $this->user_lang_id : $this->fixed_lang_id; 81 | $this->setDefaultValue($value); 82 | return parent::renderSelect(); 83 | } 84 | return ''; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /Formelements/Inputelements/Textarea/defaults/Message.php: -------------------------------------------------------------------------------- 1 | setLabel($this->_('Message')); 30 | $this->setRule('required')->setCustomFieldName($this->_('Message')); 31 | } 32 | 33 | /** 34 | * Render the input field for message 35 | * @return string 36 | */ 37 | public function renderMessage(): string 38 | { 39 | return parent::renderTextarea(); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/FieldsetClose.php: -------------------------------------------------------------------------------- 1 | setTag('fieldset'); 21 | } 22 | 23 | public function __toString() 24 | { 25 | return $this->render(); 26 | } 27 | 28 | /** 29 | * Render the fieldset close tag 30 | * @return string 31 | */ 32 | public function render(): string 33 | { 34 | return 'getTag() . '>'; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/FieldsetOpen.php: -------------------------------------------------------------------------------- 1 | setTag('fieldset'); 23 | $this->setCSSClass('fieldsetClass'); 24 | } 25 | 26 | /** 27 | * Set the text for the legend 28 | * @param string $legendText 29 | * @return Legend 30 | */ 31 | public function setLegend(string $legendText): Legend 32 | { 33 | $this->legend = new Legend(); // instantiate legend object 34 | $this->legend->setText($legendText); 35 | return $this->legend; 36 | } 37 | 38 | public function __toString(): string 39 | { 40 | return $this->render(); 41 | } 42 | 43 | /** 44 | * Render the fieldset open tag 45 | * @return string 46 | */ 47 | public function ___render(): string 48 | { 49 | $this->append($this->legend->render()); 50 | return $this->renderSelfclosingTag($this->getTag()); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/Markup.php: -------------------------------------------------------------------------------- 1 | markup = $markup; 29 | return $this; 30 | } 31 | 32 | public function getMarkup(): string 33 | { 34 | return $this->markup; 35 | } 36 | 37 | // All those function needs to be defined, but they have no effect 38 | // If they are not defined, an error will occur during the rendering process of the form 39 | public function setAttribute(string $name, string $attribute): void 40 | { 41 | 42 | } 43 | 44 | /** 45 | * Do not check for conditions 46 | */ 47 | public function containsConditions(): bool 48 | { 49 | return false; 50 | } 51 | 52 | public function getID(): void 53 | { 54 | 55 | } 56 | public function getAttribute(): void 57 | { 58 | 59 | } 60 | 61 | public function render(): string 62 | { 63 | return $this->markup; 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/Option.php: -------------------------------------------------------------------------------- 1 | setTag('option'); 28 | } 29 | 30 | /** 31 | * Render an option tag 32 | * @return string 33 | */ 34 | public function render(): string 35 | { 36 | return $this->renderNonSelfclosingTag($this->getTag()); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/TraitCheckboxesAndRadios.php: -------------------------------------------------------------------------------- 1 | appendLabel = $append; 28 | return $this; 29 | } 30 | 31 | /** 32 | * Get if the value should be appended or not (bool true or false) 33 | * @return bool 34 | */ 35 | public function getAppendLabel(): bool 36 | { 37 | return $this->appendLabel; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/TraitCheckboxesAndRadiosMultiple.php: -------------------------------------------------------------------------------- 1 | multipleWrapper; 31 | } 32 | 33 | /** 34 | * Get the label wrapper for the top label for further manipulations 35 | * @return Wrapper 36 | */ 37 | public function getTopLabelWrapper(): Wrapper 38 | { 39 | return $this->topLabelWrapper; 40 | } 41 | 42 | /** 43 | * Set the value of the top label over all checkboxes 44 | * @param string $topLabelText 45 | * @return InputRadioMultiple|InputCheckboxMultiple|TraitCheckboxesAndRadiosMultiple 46 | */ 47 | public function setTopLabelText(string $topLabelText): self 48 | { 49 | $this->topLabelText = $topLabelText; 50 | return $this; 51 | } 52 | 53 | /** 54 | * Get the value of the top label 55 | * @return string 56 | */ 57 | public function getTopLabelText(): string 58 | { 59 | return $this->topLabelText; 60 | } 61 | 62 | /** 63 | * Change the markup and add the CSS class depending on if the alignment of radios or checkboxes (multiple) 64 | * is horizontal or vertical 65 | * @param string $markupType 66 | * @param InputCheckboxMultiple|InputRadioMultiple $input 67 | * @return string 68 | */ 69 | protected function setCheckBoxRadioAlignmentClass(string $markupType, InputCheckboxMultiple|InputRadioMultiple $input, string $out): string 70 | { 71 | 72 | $wrapper = $input->getMultipleWrapper(); 73 | if ($input->directionHorizontal) { 74 | $class = 'horizontalWrapperClass'; 75 | } else { 76 | $class = 'verticalWrapperClass'; 77 | } 78 | 79 | $wrapper->setCSSClass($class); 80 | $wrapper->setContent($out); 81 | 82 | return $wrapper->render(); 83 | 84 | } 85 | 86 | 87 | } 88 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/TraitOption.php: -------------------------------------------------------------------------------- 1 | setContent($label); 31 | $option->setAttribute('value', $value); 32 | $this->options = array_merge($this->options, [$option]); 33 | return $option; 34 | } 35 | 36 | /** 37 | * Create an empty option object 38 | * @param string $optionLabel 39 | * @return Option 40 | */ 41 | public function addEmptyOption(string $optionLabel = '-'): Option 42 | { 43 | $option = new Option(); 44 | $option->setContent($optionLabel); 45 | $option->setAttribute('value', ''); 46 | $this->options = array_merge($this->options, [$option]); 47 | return $option; 48 | } 49 | 50 | /** 51 | * Add hr tag to the options to help visually break up the options for a better user experience 52 | * https://developer.chrome.com/blog/hr-in-select 53 | * Not supported in all browsers - so please check it if it works 54 | * @return \FrontendForms\Option 55 | */ 56 | public function addHorizontalRule(): TextElements 57 | { 58 | $hr = new TextElements(); 59 | $hr->setTag('hr'); 60 | $this->options = array_merge($this->options, [$hr]); 61 | return $hr; 62 | } 63 | 64 | /** 65 | * This method deletes all options 66 | * @return void 67 | */ 68 | public function removeAllOptions(): void 69 | { 70 | $this->options = []; 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/TraitOptionElements.php: -------------------------------------------------------------------------------- 1 | className) { 26 | case 'InputRadioMultiple': 27 | $name = 'radios'; 28 | break; 29 | case 'InputCheckboxMultiple': 30 | $name = 'checkboxes'; 31 | break; 32 | default: 33 | $name = 'options'; 34 | } 35 | 36 | return $name; 37 | } 38 | 39 | /** 40 | * Get a specific option element by its value (for further manipulations) 41 | * @param string|int $value 42 | * @return \FrontendForms\InputRadio|\FrontendForms\InputCheckbox|\FrontendForms\Option|null 43 | */ 44 | public 45 | function getOptionByValue(string|int $value): null|InputRadio|InputCheckbox|Option 46 | { 47 | $option = null; 48 | $name = $this->getOptionsPropertyName(); 49 | 50 | foreach ($this->$name as $optionElement) { 51 | if ($value == $optionElement->getAttribute('value')) { 52 | $option = $optionElement; 53 | break; 54 | } 55 | } 56 | return $option; 57 | } 58 | 59 | /** 60 | * Remove a specific option element by its value 61 | * @param string|int $option -> option value can be a string or an integer 62 | * @return $this 63 | */ 64 | public 65 | function removeOptionByValue(string|int $value): void 66 | { 67 | 68 | $name = $this->getOptionsPropertyName(); 69 | 70 | foreach ($this->$name as $key => $optionElement) { 71 | if ($value == $optionElement->getAttribute('value')) { 72 | unset($this->$name[$key]); 73 | break; 74 | } 75 | } 76 | } 77 | 78 | 79 | } 80 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/TraitPWOptions.php: -------------------------------------------------------------------------------- 1 | wire('fields')->get($fieldName); 34 | if ($field) { 35 | // field must be a FieldtypeOptions field type 36 | if ($field->getFieldtype()->className() === 'FieldtypeOptions') { 37 | foreach ($field->type->getOptions($field) as $option) { 38 | $this->$addOptionMethodName($option->title, $option->title ?? $option->value); 39 | } 40 | } 41 | } 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/TraitTags.php: -------------------------------------------------------------------------------- 1 | customTag = $tag; 29 | return parent::setTag($tag); 30 | } 31 | 32 | /** 33 | * Get the custom tag if set or null 34 | * @return string|null 35 | */ 36 | public function getCustomTag(): null|string 37 | { 38 | return $this->customTag; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Formelements/Miscellaneous/defaults/ResetButton.php: -------------------------------------------------------------------------------- 1 | setAttribute('type', 'reset'); 22 | $this->setAttribute('value', $this->_('Reset')); 23 | } 24 | } -------------------------------------------------------------------------------- /Formelements/Textelements/Alert.php: -------------------------------------------------------------------------------- 1 | setTag('div'); 29 | $this->setCSSClass('alertClass'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Textelements/Defaults/DomainLink.php: -------------------------------------------------------------------------------- 1 | setCSSClass('home-link'); 34 | $this->setLinkText($this->wire('input')->httpHostUrl()); 35 | if($internal){ 36 | $this->setPageLink($this->wire('pages')->get('/')); 37 | } else { 38 | $this->setUrl($this->wire('input')->httpHostUrl()); 39 | } 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /Formelements/Textelements/Defaults/PrivacyText.php: -------------------------------------------------------------------------------- 1 | setText($this->_('By submitting this form you agree to our %s.')); 24 | $this->privacy = $this->_('Terms of use and Privacy Policy'); 25 | $this->setAttribute('class', 'privacy-text'); 26 | 27 | // create the link instance for the privacy link 28 | if (!array_key_exists('input_privacypageselect', $this->frontendforms)) 29 | $this->frontendforms['input_privacypageselect'] = 'int'; 30 | 31 | $this->policyLink = new Link(); 32 | $this->linkExists = Privacy::setPrivacyPageUrl($this->frontendforms, $this->policyLink); 33 | $this->policyLink->setLinkText($this->privacy); 34 | 35 | } 36 | 37 | /** 38 | * Get the privacy link object for further manipulations if needed 39 | * @return \FrontendForms\Link 40 | */ 41 | public function getPolicyLink(): Link 42 | { 43 | return $this->policyLink; 44 | } 45 | 46 | /** 47 | * Render the privacy policy link 48 | * @return string 49 | */ 50 | public function renderPolicyLink(): string 51 | { 52 | $out = ''; 53 | 54 | if ($this->linkExists) { 55 | $out = $this->policyLink->render(); 56 | } 57 | return $out; 58 | } 59 | 60 | /** 61 | * Set the page id of the privacy policy page 62 | * @param int $id 63 | * @return $this 64 | */ 65 | public function setPolicyPageId(int $id): self 66 | { 67 | $this->policyPageId = $id; 68 | return $this; 69 | } 70 | 71 | /** 72 | * Render the text string 73 | * @return string 74 | */ 75 | public function ___render(): string 76 | { 77 | $privacy = $this->renderPolicyLink() != '' ? $this->renderPolicyLink() : $this->privacy; 78 | $this->setText(sprintf($this->getText(), $privacy)); 79 | return parent::___render(); 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /Formelements/Textelements/Description.php: -------------------------------------------------------------------------------- 1 | setCSSClass('descriptionClass'); 32 | } 33 | 34 | /** 35 | * Set the position of the description on per field base 36 | * @param string $pos 37 | * @return self 38 | */ 39 | public function setPosition(string $pos): self 40 | { 41 | if (in_array($pos, ['beforeLabel', 'afterLabel', 'afterInput'])) { 42 | $this->desc_position = $pos; // set new position property 43 | $this->setAttribute('class', $pos . '-desc'); // add new position class 44 | } 45 | return $this; 46 | } 47 | 48 | /** 49 | * Get the position of the description 50 | * @return string|null 51 | */ 52 | public function getPosition(): ?string 53 | { 54 | return $this->desc_position; 55 | } 56 | 57 | 58 | } 59 | -------------------------------------------------------------------------------- /Formelements/Textelements/Errormessage.php: -------------------------------------------------------------------------------- 1 | setCSSClass('error_messageClass'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Textelements/Legend.php: -------------------------------------------------------------------------------- 1 | setTag('legend'); 29 | $this->setCSSClass('legendClass'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Textelements/Notes.php: -------------------------------------------------------------------------------- 1 | setCSSClass('notesClass'); 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Formelements/Textelements/RequiredTextHint.php: -------------------------------------------------------------------------------- 1 | setTag('p'); 29 | $this->setCSSClass('requiredTextHintClass'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Textelements/Successmessage.php: -------------------------------------------------------------------------------- 1 | setCSSClass('success_messageClass'); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Formelements/Textelements/TextElements.php: -------------------------------------------------------------------------------- 1 | setTag('p'); // default tag is paragraph - can be overwritten 31 | } 32 | 33 | /** 34 | * Set the text between the opening and closing tag 35 | * @param string $text 36 | * @return void 37 | */ 38 | public function setText(string $text): void 39 | { 40 | $this->setContent($text); 41 | } 42 | 43 | /** 44 | * Get the text for the text element 45 | * @return string 46 | */ 47 | public function getText(): string 48 | { 49 | return $this->getContent(); 50 | } 51 | 52 | public function __toString() 53 | { 54 | return $this->render(); 55 | } 56 | 57 | /** 58 | * Render the text element 59 | * @return string 60 | */ 61 | public function ___render(): string 62 | { 63 | 64 | if ($this->wrapper) { 65 | $this->wrapper->setContent($this->renderNonSelfclosingTag($this->getTag())); 66 | return $this->wrapper->render(); 67 | } 68 | return $this->renderNonSelfclosingTag($this->getTag()); 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /Formelements/ValitronAPI.php: -------------------------------------------------------------------------------- 1 | valitron = new Validator(array()); 31 | } 32 | 33 | /** 34 | * Get the name of the field validator (fe required) 35 | * @return string|null 36 | */ 37 | public function getValidator(): ?string 38 | { 39 | return $this->validator; 40 | } 41 | 42 | /** 43 | * Set the name of the field validator (fe required) 44 | * @param string $validator 45 | * @return void 46 | */ 47 | public function setValidator(string $validator): void 48 | { 49 | $this->validator = $validator; 50 | } 51 | 52 | /** 53 | * Set a validator rule to validate the input value 54 | * Checks first if the validator method exists, otherwise does nothing 55 | * Check https://processwire.com/api/ref/sanitizer/ for all sanitizer methods 56 | * @param string $validator - the name of the validator 57 | * @param array $options 58 | * @return array 59 | */ 60 | public function setRule(string $validator, array $options = []): array 61 | { 62 | $validator = trim($validator); 63 | return ['name' => $validator, 'options' => $options]; 64 | } 65 | 66 | 67 | /** 68 | * Set the custom error message of the field validator 69 | * @param string $msg 70 | * @return string 71 | */ 72 | public function setCustomMessage(string $msg): string 73 | { 74 | $this->customMessage = $msg; 75 | return $msg; 76 | } 77 | 78 | /** 79 | * Set the custom field name for the error message 80 | * @param string $fieldname 81 | * @return string 82 | */ 83 | public function setCustomFieldName(string $fieldname): string 84 | { 85 | $this->customFieldname = $fieldname; 86 | return $fieldname; 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /Formelements/Wrapper/FieldWrapper.php: -------------------------------------------------------------------------------- 1 | setCSSClass('field_wrapperClass'); 29 | } 30 | 31 | /** 32 | * Grab the CSS class for errors on form inputs 33 | * @return string 34 | */ 35 | protected function getErrorClass(): string 36 | { 37 | return $this->getCSSClass('field_wrapper_errorClass'); 38 | } 39 | 40 | protected function getSuccessClass(): string 41 | { 42 | return $this->getCSSClass('field_wrapper_successClass'); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /Formelements/Wrapper/InputWrapper.php: -------------------------------------------------------------------------------- 1 | setCSSClass('input_wrapperClass'); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /Formelements/Wrapper/Wrapper.php: -------------------------------------------------------------------------------- 1 | ... 9 | * 10 | * Created by Jürgen K. 11 | * https://github.com/juergenweb 12 | * File name: Wrapper.php 13 | * Created: 03.07.2022 14 | */ 15 | 16 | use ProcessWire\WireException; 17 | use ProcessWire\WirePermissionException; 18 | 19 | class Wrapper extends Tag 20 | { 21 | 22 | /** 23 | * @throws WireException 24 | * @throws WirePermissionException 25 | */ 26 | public function __construct() 27 | { 28 | parent::__construct(); 29 | $this->setTag('div'); 30 | } 31 | 32 | /** 33 | * Render the wrapper 34 | * @return string 35 | */ 36 | public function ___render(): string 37 | { 38 | return $this->renderNonSelfclosingTag($this->getTag()); 39 | } 40 | 41 | public function __toString() 42 | { 43 | return $this->render(); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 juergenweb 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--detail-view-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/detail-view.php", 3 | "textdomain": "site--modules--frontendforms--detail-view-php", 4 | "translations": { 5 | "77c41ffdf7bebe6e2f1896cf8ae78a73": { 6 | "text": "Zus\u00e4tzliche Informationen \u00fcber %s" 7 | }, 8 | "0f66316eff804ffa836d2214d80f3756": { 9 | "text": "Geographischer Standort" 10 | }, 11 | "59716c97497eb9694541f7c3d37b1a4d": { 12 | "text": "Land" 13 | }, 14 | "f447ac856e7e72435904956e3b15f433": { 15 | "text": "Region" 16 | }, 17 | "57d056ed0984166336b7879c2af3657f": { 18 | "text": "Stadt" 19 | }, 20 | "ac598c39fd0d78fb3eff40b3a5b5cbbd": { 21 | "text": "Es tut uns leid, aber ip-api.com hat keine Informationen \u00fcber diese IP-Adresse." 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--abstractcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstractcaptcha-php", 4 | "translations": { 5 | "b52dc33684da9e3d394738b7d0dd2725": { 6 | "text": "Bitte anklicken, um ein neues Captcha zu laden" 7 | }, 8 | "7c89feb583d9e778c3533017b111263d": { 9 | "text": "Bild neu laden" 10 | }, 11 | "45d048c35e3cfd449dc0a1b503cd103a": { 12 | "text": "=" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--abstractimagecaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractImageCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstractimagecaptcha-php", 4 | "translations": { 5 | "118f3464042a036c52a1087e923a307e": { 6 | "text": "Bitte w\u00e4hlen Sie aus, was sie im Bild oberhalb sehen." 7 | }, 8 | "161e7ce7bfdc89ab4b9f52c1d4c94212": { 9 | "text": "Tier" 10 | }, 11 | "e9989db5dabeea617f40c8dbfd07f5fb": { 12 | "text": "Auto" 13 | }, 14 | "338d1f8007f0c84287d9963d5ea36aeb": { 15 | "text": "Blume" 16 | }, 17 | "aebfe46795575772b7cf413e25caeab9": { 18 | "text": "Haus" 19 | }, 20 | "bc03219e367d3a4b7b1758c8af598174": { 21 | "text": "See" 22 | }, 23 | "ec9903c79dd510ffa43f69ee867a9002": { 24 | "text": "Berg" 25 | }, 26 | "3b0c14770e6bd663518496da60f524da": { 27 | "text": "Baum" 28 | }, 29 | "2caf429ed0a858c9cb2b6456d1914fe1": { 30 | "text": "CAPTCHA als SPAM-Schutz" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--abstractslidercaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractSliderCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstractslidercaptcha-php", 4 | "translations": { 5 | "da1e1af671e5b51f10c9fe3f494fbb3f": { 6 | "text": "Ich bin ein Mensch" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--abstracttextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstracttextcaptcha-php", 4 | "translations": { 5 | "ad1ca00ca558c196b2ffa224309706e4": { 6 | "text": "Diese Datei ist keine TrueType Schriftart Datei." 7 | }, 8 | "d472945618bae0b84ca5082c7d916966": { 9 | "text": "Diese Datei existiert nicht unter dem angegebenen Pfad" 10 | }, 11 | "f985413aacdc4d6e125cd3b6fb2a3eae": { 12 | "text": "CAPTCHA Sicherheitsabfrage" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--defaultimagecaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/DefaultImageCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--defaultimagecaptcha-php", 4 | "translations": { 5 | "1e27db1c7a9a959ca4cd75964525fa2d": { 6 | "text": "Bild CAPTCHA" 7 | }, 8 | "5972e22698d0e9faba6397ce1b6b6f74": { 9 | "text": "Ordnen sie das Bild einer Kategorie zu" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--defaulttextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/DefaultTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--defaulttextcaptcha-php", 4 | "translations": { 5 | "7c62e8d4b13ecc03f28bb44905a5ec51": { 6 | "text": "Zufallstext Captcha" 7 | }, 8 | "3c6c9439c3e38d0da29b7629a300c3c5": { 9 | "text": "Geben Sie den Text aus dem Bild in das Eingabefeld ein." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--evencharactertextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/EvenCharacterTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--evencharactertextcaptcha-php", 4 | "translations": { 5 | "07919a26035f7d7aaec32087cc2c0b4d": { 6 | "text": "Jedes zweite Zeichen Captcha" 7 | }, 8 | "923fb30f185465aa974330e30a9a97c7": { 9 | "text": "Geben Sie jedes zweite Zeichen vom Text aus dem Bild in das Eingabefeld ein." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--reversetextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/ReverseTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--reversetextcaptcha-php", 4 | "translations": { 5 | "d8c8728824019c0866b958d0b2562edd": { 6 | "text": "Umgekehrter Text Captcha" 7 | }, 8 | "167b8554feab7647d47863b05a0da92f": { 9 | "text": "Geben Sie den Text aus dem Bild in umgekehrter Reihenfolge (von rechts nach links) in das Eingabefeld ein." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--simplemathtextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/SimpleMathTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--simplemathtextcaptcha-php", 4 | "translations": { 5 | "d0995c2ec8c5df0820426833eb777396": { 6 | "text": "Mathematik Captcha" 7 | }, 8 | "dc841e6076d43a6c8b03338a39a97e68": { 9 | "text": "Geben Sie das Ergebnis der Berechnung in das Eingabefeld ein." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--simplequestioncaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/SimpleQuestionCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--simplequestioncaptcha-php", 4 | "translations": { 5 | "dd037cafd7ea6b996985f42b3598e6d6": { 6 | "text": "Bitte beantworten Sie die Frage" 7 | }, 8 | "7f8c93e381be10c3cb9bebaa31387873": { 9 | "text": "Einfache-Frage-Captcha (Freitext)" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--captcha--variants--slidercaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/SliderCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--slidercaptcha-php", 4 | "translations": { 5 | "c323bd0275e1fed3b8343e450e3c7378": { 6 | "text": "=" 7 | }, 8 | "eff39d161054adaf3995f2c7988aaef2": { 9 | "text": "Bewegen Sie ein Puzzle-St\u00fcck" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--formvalidation-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/FormValidation.php", 3 | "textdomain": "site--modules--frontendforms--formelements--formvalidation-php", 4 | "translations": { 5 | "c2d918e53348ee8896137bec79036f84": { 6 | "text": "Sekunden \u00fcbrig" 7 | }, 8 | "1793e600a6822489f25244c196a05085": { 9 | "text": "Sekunde \u00fcbrig" 10 | }, 11 | "1196c16ef68e26acc46dae99fcc50522": { 12 | "text": "Sie haben das Formular innerhalb von %s abgeschickt. Das scheint f\u00fcr einen Menschen ziemlich schnell zu sein. Ihr Verhalten \u00e4hnelt eher einem Spam-Bot. Bitte warten Sie mindestens %s, bis Sie das Formular erneut absenden." 13 | }, 14 | "2447d344db3fb15973b24ddd51a615b8": { 15 | "text": "Sie haben das Formular nach %s abgeschickt. Das scheint f\u00fcr einen Menschen ziemlich langsam zu sein. Ihr Verhalten \u00e4hnelt eher einem Spam-Bot. Bitte reichen Sie das Formular das n\u00e4chste Mal innerhalb von %s ein. Sie sind jetzt blockiert und m\u00fcssen den Browser schlie\u00dfen. Um die Sperrung aufzuheben, \u00f6ffnen Sie danach diese Seite erneut." 16 | }, 17 | "7436f942d5ea836cb84f1bb2527d8286": { 18 | "text": "Monat" 19 | }, 20 | "172a8327fcd3685ab3c0f740d031da09": { 21 | "text": "Woche" 22 | }, 23 | "628b7db04235f228d40adc671413a8c8": { 24 | "text": "Tag" 25 | }, 26 | "896c55cc5e46fab38ce9f51ebf7bfcd3": { 27 | "text": "Stunde" 28 | }, 29 | "0a7d55be9d12a369a6a8da0fb517fba4": { 30 | "text": "Minute" 31 | }, 32 | "a9f0e61a137d86aa9db53465e0801612": { 33 | "text": "Sekunde" 34 | }, 35 | "da36cfaf48b9e19896e23e1207040d1e": { 36 | "text": "Monate" 37 | }, 38 | "ae60f11ab51860bdb22794a943335a34": { 39 | "text": "Wochen" 40 | }, 41 | "44fdec47036f482b68b748f9d786801b": { 42 | "text": "Tage" 43 | }, 44 | "73cdddd7730abfc13a55efb9f5685a3b": { 45 | "text": "Stunden" 46 | }, 47 | "640fd0cc0ffa0316ae087652871f4486": { 48 | "text": "Minuten" 49 | }, 50 | "783e8e29e6a8c3e22baa58a19420eb4f": { 51 | "text": "Sekunden" 52 | }, 53 | "be5d5d37542d75f93a87094459f76678": { 54 | "text": "und" 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--email-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Email.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--email-php", 4 | "translations": { 5 | "ce8ae9da5b7cd6c3df2929543a9af92d": { 6 | "text": "E-Mail" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadmultiple-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/FileUploadMultiple.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadmultiple-php", 4 | "translations": { 5 | "c837009ce96fdfc1615d310bc667f996": { 6 | "text": "Laden Sie mehrere Dateien hoch" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadsingle-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/FileUploadSingle.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadsingle-php", 4 | "translations": { 5 | "e14f1d680e8b3d40bc2744468332eb46": { 6 | "text": "Laden Sie eine Datei hoch" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--name-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Name.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--name-php", 4 | "translations": { 5 | "49ee3087348e8d44e1feda1917443987": { 6 | "text": "Vorname" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--password-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Password.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--password-php", 4 | "translations": { 5 | "dc647eb65e6711e155375218212b3964": { 6 | "text": "Passwort" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--passwordconfirmation-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/PasswordConfirmation.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--passwordconfirmation-php", 4 | "translations": { 5 | "c2b7527a6421ad4a0c0089d87290d1cd": { 6 | "text": "Passwort Best\u00e4tigung" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--phone-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Phone.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--phone-php", 4 | "translations": { 5 | "bcc254b55c4a1babdf1dcb82c207506b": { 6 | "text": "Telefon" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--privacy-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Privacy.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--privacy-php", 4 | "translations": { 5 | "28f678f8feb29d236b6dfcb02190ba21": { 6 | "text": "Ich akzeptiere die Datenschutzrichtlinien" 7 | }, 8 | "9a5b98e025ebe5fd1adbddccc94ad638": { 9 | "text": "Sie m\u00fcssen die Datenschutzrichtlinien akzeptieren" 10 | }, 11 | "fa2ead697d9998cbc65c81384e6533d5": { 12 | "text": "Datenschutz-Richtlinien" 13 | }, 14 | "2b91037b0240c93155085ce8c0768cb9": { 15 | "text": "Zur Seite mit den Datenschutz-Richtlininen" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--sendcopy-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/SendCopy.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--sendcopy-php", 4 | "translations": { 5 | "7313e5cce02f10d1d6a22dea1aedc9eb": { 6 | "text": "Eine Kopie dieser Nachricht an mich senden" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--subject-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Subject.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--subject-php", 4 | "translations": { 5 | "c7892ebbb139886662c6f2fc8c450710": { 6 | "text": "Betreff" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--surname-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Surname.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--surname-php", 4 | "translations": { 5 | "8e55577a8ed3b20bff65d23c000280d4": { 6 | "text": "Nachname" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--defaults--username-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Username.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--username-php", 4 | "translations": { 5 | "f6039d44b29456b20f8f373155ae4973": { 6 | "text": "Benutzername" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--inputfile-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/InputFile.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--inputfile-php", 4 | "translations": { 5 | "c4265549c1f4d79aea1e279149a6a084": { 6 | "text": "Datei Upload" 7 | }, 8 | "1afe200fa26ba361f59b603b22ad6392": { 9 | "text": "W\u00e4hlen Sie die Dateien aus" 10 | }, 11 | "86a135398368af9fbb0a9d3f966e3706": { 12 | "text": "Das Datei-Upload-Feld leeren" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--inputs--inputpassword-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/InputPassword.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--inputpassword-php", 4 | "translations": { 5 | "a1cc7ba89ca3016cf59d7c31506a9681": { 6 | "text": "Passwort anzeigen" 7 | }, 8 | "8bc6641f570b88866300ca703223bf6b": { 9 | "text": "Das Passwort muss mindestes %s Zeichen lang sein und folgende Zeichen enthalten: %s." 10 | }, 11 | "3d55c273179acb11e30d1a53f8d8625e": { 12 | "text": "Das Passwort muss mindestes %s Zeichen lang sein." 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--select--defaults--gender-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Select\/defaults\/Gender.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--select--defaults--gender-php", 4 | "translations": { 5 | "019ec3132cdf8ee0f2e2a75cf5d3e459": { 6 | "text": "Anrede" 7 | }, 8 | "992eda0d64a430fa5c7925d23ef9d0a3": { 9 | "text": "Bitte ausw\u00e4hlen" 10 | }, 11 | "c4f448df316abb13eb7eada722c57902": { 12 | "text": "Herr" 13 | }, 14 | "e7ddb7cd777b59610b220bcfa80bd95f": { 15 | "text": "Frau" 16 | }, 17 | "e67561dfc51195ce1ac515406291900e": { 18 | "text": "Divers" 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--select--defaults--language-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Select\/defaults\/Language.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--select--defaults--language-php", 4 | "translations": { 5 | "4994a8ffeba4ac3140beb89e8d41f174": { 6 | "text": "Sprache" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--textarea--defaults--message-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Textarea\/defaults\/Message.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--textarea--defaults--message-php", 4 | "translations": { 5 | "4c2a8fe7eaf24721cc7a9f0175115bd4": { 6 | "text": "Nachricht" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--inputelements--textarea--textarea-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Textarea\/Textarea.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--textarea--textarea-php", 4 | "translations": { 5 | "ef4384b98530cb2c2cdd7f9828d0ada2": { 6 | "text": "Sie haben die maximale Anzahl von Zeichen erreicht." 7 | }, 8 | "c265a6b5fe0229c56cdf89d9ff9d7754": { 9 | "text": "Sie haben noch %s Zeichen \u00fcbrig." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--miscellaneous--button-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Miscellaneous\/Button.php", 3 | "textdomain": "site--modules--frontendforms--formelements--miscellaneous--button-php", 4 | "translations": { 5 | "94966d90747b97d1f0f206c98a8b1ac3": { 6 | "text": "Senden" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--miscellaneous--defaults--resetbutton-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Miscellaneous\/defaults\/ResetButton.php", 3 | "textdomain": "site--modules--frontendforms--formelements--miscellaneous--defaults--resetbutton-php", 4 | "translations": [] 5 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--textelements--defaults--privacytext-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Textelements\/Defaults\/PrivacyText.php", 3 | "textdomain": "site--modules--frontendforms--formelements--textelements--defaults--privacytext-php", 4 | "translations": { 5 | "2c34ad3fc22ef60c91a73189e7f26e8e": { 6 | "text": "Durch das Absenden des Formulars stimmen sie unseren %s zu." 7 | }, 8 | "953a9a5b5747639204478270493a532d": { 9 | "text": "Bedingungen und Datenschutzbestimmungen" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/DE/site--modules--frontendforms--formelements--textelements--link-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Textelements\/Link.php", 3 | "textdomain": "site--modules--frontendforms--formelements--textelements--link-php", 4 | "translations": { 5 | "bea7931fd2f2e37616d0be40dd825860": { 6 | "text": "Zur Seite" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--detail-view-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/detail-view.php", 3 | "textdomain": "site--modules--frontendforms--detail-view-php", 4 | "translations": { 5 | "77c41ffdf7bebe6e2f1896cf8ae78a73": { 6 | "text": "\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e %s" 7 | }, 8 | "0f66316eff804ffa836d2214d80f3756": { 9 | "text": "\u0413\u0435\u043e\u043b\u043e\u043a\u0430\u0446\u0438\u044f" 10 | }, 11 | "59716c97497eb9694541f7c3d37b1a4d": { 12 | "text": "\u0421\u0442\u0440\u0430\u043d\u0430" 13 | }, 14 | "f447ac856e7e72435904956e3b15f433": { 15 | "text": "\u0420\u0435\u0433\u0438\u043e\u043d" 16 | }, 17 | "57d056ed0984166336b7879c2af3657f": { 18 | "text": "\u0413\u043e\u0440\u043e\u0434" 19 | }, 20 | "ac598c39fd0d78fb3eff40b3a5b5cbbd": { 21 | "text": "\u041c\u044b \u0441\u043e\u0436\u0430\u043b\u0435\u0435\u043c, \u043d\u043e ip-api.com \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e\u0431 \u044d\u0442\u043e\u043c IP-\u0430\u0434\u0440\u0435\u0441\u0435." 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--abstractcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstractcaptcha-php", 4 | "translations": { 5 | "b52dc33684da9e3d394738b7d0dd2725": { 6 | "text": "\u041d\u0430\u0436\u043c\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u0430\u043f\u0447\u0443" 7 | }, 8 | "7c89feb583d9e778c3533017b111263d": { 9 | "text": "\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435" 10 | }, 11 | "45d048c35e3cfd449dc0a1b503cd103a": { 12 | "text": "\u041a\u0430\u043f\u0447\u0430" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--abstractimagecaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractImageCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstractimagecaptcha-php", 4 | "translations": { 5 | "118f3464042a036c52a1087e923a307e": { 6 | "text": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \u0432\u044b\u0448\u0435." 7 | }, 8 | "161e7ce7bfdc89ab4b9f52c1d4c94212": { 9 | "text": "\u0416\u0438\u0432\u043e\u0442\u043d\u043e\u0435" 10 | }, 11 | "e9989db5dabeea617f40c8dbfd07f5fb": { 12 | "text": "\u0410\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c" 13 | }, 14 | "338d1f8007f0c84287d9963d5ea36aeb": { 15 | "text": "\u0426\u0432\u0435\u0442\u043e\u043a" 16 | }, 17 | "aebfe46795575772b7cf413e25caeab9": { 18 | "text": "\u0414\u043e\u043c" 19 | }, 20 | "bc03219e367d3a4b7b1758c8af598174": { 21 | "text": "\u041e\u0437\u0435\u0440\u043e" 22 | }, 23 | "ec9903c79dd510ffa43f69ee867a9002": { 24 | "text": "\u0413\u043e\u0440\u0430" 25 | }, 26 | "3b0c14770e6bd663518496da60f524da": { 27 | "text": "\u0414\u0435\u0440\u0435\u0432\u043e" 28 | }, 29 | "2caf429ed0a858c9cb2b6456d1914fe1": { 30 | "text": "\u041f\u043e\u043b\u0435 \u043a\u0430\u043f\u0442\u0447\u0430 \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u043e\u0442 \u0441\u043f\u0430\u043c\u0430" 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--abstractslidercaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractSliderCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstractslidercaptcha-php", 4 | "translations": { 5 | "da1e1af671e5b51f10c9fe3f494fbb3f": { 6 | "text": "\u042f - \u0447\u0435\u043b\u043e\u0432\u0435\u043a" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--abstracttextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/AbstractTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--abstracttextcaptcha-php", 4 | "translations": { 5 | "ad1ca00ca558c196b2ffa224309706e4": { 6 | "text": "\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0448\u0440\u0438\u0444\u0442\u043e\u043c TrueType." 7 | }, 8 | "d472945618bae0b84ca5082c7d916966": { 9 | "text": "\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u0443\u0442\u0438" 10 | }, 11 | "f985413aacdc4d6e125cd3b6fb2a3eae": { 12 | "text": "\u041f\u043e\u043b\u0435 \u043a\u0430\u043f\u0447\u0438 \u0434\u043b\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--defaultimagecaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/DefaultImageCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--defaultimagecaptcha-php", 4 | "translations": { 5 | "1e27db1c7a9a959ca4cd75964525fa2d": { 6 | "text": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043f\u0447\u0438" 7 | }, 8 | "5972e22698d0e9faba6397ce1b6b6f74": { 9 | "text": "\u041f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--defaulttextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/DefaultTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--defaulttextcaptcha-php", 4 | "translations": { 5 | "7c62e8d4b13ecc03f28bb44905a5ec51": { 6 | "text": "\u041a\u0430\u043f\u0447\u0430 \u0438\u0437 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438" 7 | }, 8 | "3c6c9439c3e38d0da29b7629a300c3c5": { 9 | "text": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--evencharactertextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/EvenCharacterTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--evencharactertextcaptcha-php", 4 | "translations": { 5 | "07919a26035f7d7aaec32087cc2c0b4d": { 6 | "text": "\u0415\u0449\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 \u043a\u0430\u043f\u0447\u0438" 7 | }, 8 | "923fb30f185465aa974330e30a9a97c7": { 9 | "text": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--reversetextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/ReverseTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--reversetextcaptcha-php", 4 | "translations": { 5 | "d8c8728824019c0866b958d0b2562edd": { 6 | "text": "\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u043a\u0430\u043f\u0447\u0430" 7 | }, 8 | "167b8554feab7647d47863b05a0da92f": { 9 | "text": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 (\u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e)." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--simplemathtextcaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/SimpleMathTextCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--simplemathtextcaptcha-php", 4 | "translations": { 5 | "d0995c2ec8c5df0820426833eb777396": { 6 | "text": "\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u043f\u0447\u0430" 7 | }, 8 | "dc841e6076d43a6c8b03338a39a97e68": { 9 | "text": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0432 \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--simplequestioncaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/SimpleQuestionCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--simplequestioncaptcha-php", 4 | "translations": { 5 | "7f8c93e381be10c3cb9bebaa31387873": { 6 | "text": "\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 Captcha (\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442)" 7 | }, 8 | "dd037cafd7ea6b996985f42b3598e6d6": { 9 | "text": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--captcha--variants--slidercaptcha-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Captcha\/variants\/SliderCaptcha.php", 3 | "textdomain": "site--modules--frontendforms--formelements--captcha--variants--slidercaptcha-php", 4 | "translations": { 5 | "c323bd0275e1fed3b8343e450e3c7378": { 6 | "text": "\u0421\u043b\u0430\u0439\u0434\u0435\u0440 \u041a\u0430\u043f\u0447\u0430" 7 | }, 8 | "eff39d161054adaf3995f2c7988aaef2": { 9 | "text": "\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--email-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Email.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--email-php", 4 | "translations": { 5 | "ce8ae9da5b7cd6c3df2929543a9af92d": { 6 | "text": "\u0415-\u043c\u0435\u0439\u043b" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadmultiple-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/FileUploadMultiple.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadmultiple-php", 4 | "translations": { 5 | "c837009ce96fdfc1615d310bc667f996": { 6 | "text": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadsingle-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/FileUploadSingle.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--fileuploadsingle-php", 4 | "translations": { 5 | "e14f1d680e8b3d40bc2744468332eb46": { 6 | "text": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--name-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Name.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--name-php", 4 | "translations": { 5 | "49ee3087348e8d44e1feda1917443987": { 6 | "text": "+" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--password-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Password.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--password-php", 4 | "translations": { 5 | "dc647eb65e6711e155375218212b3964": { 6 | "text": "\u041f\u0430\u0440\u043e\u043b\u044c" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--passwordconfirmation-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/PasswordConfirmation.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--passwordconfirmation-php", 4 | "translations": { 5 | "c2b7527a6421ad4a0c0089d87290d1cd": { 6 | "text": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--phone-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Phone.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--phone-php", 4 | "translations": { 5 | "bcc254b55c4a1babdf1dcb82c207506b": { 6 | "text": "\u0422\u0435\u043b\u0435\u0444\u043e\u043d" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--privacy-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Privacy.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--privacy-php", 4 | "translations": { 5 | "28f678f8feb29d236b6dfcb02190ba21": { 6 | "text": "\u042f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438" 7 | }, 8 | "9a5b98e025ebe5fd1adbddccc94ad638": { 9 | "text": "\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u043d\u0430\u0448\u0443 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438" 10 | }, 11 | "fa2ead697d9998cbc65c81384e6533d5": { 12 | "text": "\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438" 13 | }, 14 | "2b91037b0240c93155085ce8c0768cb9": { 15 | "text": "\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438" 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--sendcopy-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/SendCopy.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--sendcopy-php", 4 | "translations": { 5 | "7313e5cce02f10d1d6a22dea1aedc9eb": { 6 | "text": "\u041e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043c\u043d\u0435 \u043a\u043e\u043f\u0438\u044e \u043c\u043e\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--subject-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Subject.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--subject-php", 4 | "translations": { 5 | "c7892ebbb139886662c6f2fc8c450710": { 6 | "text": "\u0422\u0435\u043c\u0430 \u043f\u0438\u0441\u044c\u043c\u0430" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--surname-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Surname.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--surname-php", 4 | "translations": { 5 | "8e55577a8ed3b20bff65d23c000280d4": { 6 | "text": "\u0424\u0430\u043c\u0438\u043b\u0438\u044f" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--defaults--username-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/defaults\/Username.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--defaults--username-php", 4 | "translations": { 5 | "f6039d44b29456b20f8f373155ae4973": { 6 | "text": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--inputfile-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/InputFile.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--inputfile-php", 4 | "translations": { 5 | "c4265549c1f4d79aea1e279149a6a084": { 6 | "text": "\u0424\u0430\u0439\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d" 7 | }, 8 | "1afe200fa26ba361f59b603b22ad6392": { 9 | "text": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b" 10 | }, 11 | "86a135398368af9fbb0a9d3f966e3706": { 12 | "text": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u0435 \u0432\u0432\u043e\u0434\u0430" 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--inputs--inputpassword-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Inputs\/InputPassword.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--inputs--inputpassword-php", 4 | "translations": { 5 | "a1cc7ba89ca3016cf59d7c31506a9681": { 6 | "text": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c" 7 | }, 8 | "8bc6641f570b88866300ca703223bf6b": { 9 | "text": "\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 %s \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439: %s." 10 | }, 11 | "3d55c273179acb11e30d1a53f8d8625e": { 12 | "text": "\u041f\u0430\u0440\u043e\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 %s \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432." 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--select--defaults--gender-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Select\/defaults\/Gender.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--select--defaults--gender-php", 4 | "translations": { 5 | "019ec3132cdf8ee0f2e2a75cf5d3e459": { 6 | "text": "\u041f\u043e\u043b" 7 | }, 8 | "992eda0d64a430fa5c7925d23ef9d0a3": { 9 | "text": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435" 10 | }, 11 | "c4f448df316abb13eb7eada722c57902": { 12 | "text": "\u041c\u0443\u0436\u0447\u0438\u043d\u0430" 13 | }, 14 | "e7ddb7cd777b59610b220bcfa80bd95f": { 15 | "text": "\u0416\u0435\u043d\u0449\u0438\u043d\u0430" 16 | }, 17 | "e67561dfc51195ce1ac515406291900e": { 18 | "text": "\u0414\u0440\u0443\u0433\u043e\u0435" 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--select--defaults--language-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Select\/defaults\/Language.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--select--defaults--language-php", 4 | "translations": { 5 | "4994a8ffeba4ac3140beb89e8d41f174": { 6 | "text": "\u042f\u0437\u044b\u043a" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--textarea--defaults--message-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Textarea\/defaults\/Message.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--textarea--defaults--message-php", 4 | "translations": { 5 | "4c2a8fe7eaf24721cc7a9f0175115bd4": { 6 | "text": "\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--inputelements--textarea--textarea-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Inputelements\/Textarea\/Textarea.php", 3 | "textdomain": "site--modules--frontendforms--formelements--inputelements--textarea--textarea-php", 4 | "translations": { 5 | "ef4384b98530cb2c2cdd7f9828d0ada2": { 6 | "text": "\u0412\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432." 7 | }, 8 | "c265a6b5fe0229c56cdf89d9ff9d7754": { 9 | "text": "\u0423 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c %s \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432." 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--miscellaneous--button-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Miscellaneous\/Button.php", 3 | "textdomain": "site--modules--frontendforms--formelements--miscellaneous--button-php", 4 | "translations": { 5 | "94966d90747b97d1f0f206c98a8b1ac3": { 6 | "text": "\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--textelements--defaults--privacytext-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Textelements\/Defaults\/PrivacyText.php", 3 | "textdomain": "site--modules--frontendforms--formelements--textelements--defaults--privacytext-php", 4 | "translations": { 5 | "2c34ad3fc22ef60c91a73189e7f26e8e": { 6 | "text": "\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u044d\u0442\u0443 \u0444\u043e\u0440\u043c\u0443, \u0432\u044b \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044c \u0441 \u043d\u0430\u0448\u0438\u043c\u0438 %s." 7 | }, 8 | "953a9a5b5747639204478270493a532d": { 9 | "text": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438" 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /RockLanguage/RU/site--modules--frontendforms--formelements--textelements--link-php.json: -------------------------------------------------------------------------------- 1 | { 2 | "file": "site\/modules\/FrontendForms\/Formelements\/Textelements\/Link.php", 3 | "textdomain": "site--modules--frontendforms--formelements--textelements--link-php", 4 | "translations": { 5 | "bea7931fd2f2e37616d0be40dd825860": { 6 | "text": "\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /assets/template_2/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/assets/template_2/logo.png -------------------------------------------------------------------------------- /backend/frontendforms.js: -------------------------------------------------------------------------------- 1 | /* 2 | Javascript file for the backend 3 | 4 | Created by Jürgen K. 5 | https://github.com/juergenweb 6 | File name: frontendforms.js 7 | Created: 17.07.2022 8 | */ 9 | 10 | /*jslint browser:true */ 11 | 12 | function openFieldset(event){ 13 | 14 | const fieldset_spam = document.getElementById("spam"); 15 | const fieldset_attempts = document.getElementById("failed-attempts"); 16 | 17 | if(fieldset_attempts){ 18 | if(fieldset_attempts.classList.contains("InputfieldStateCollapsed")){ 19 | // open the fieldset by removing InputfieldStateCollapsed class attribute 20 | fieldset_spam.classList.remove("InputfieldStateCollapsed"); 21 | fieldset_attempts.classList.remove("InputfieldStateCollapsed"); 22 | } 23 | } 24 | } 25 | 26 | 27 | window.onload = function () { 28 | 29 | const loggin_enable_link = document.getElementById("enable-logging"); 30 | 31 | if(loggin_enable_link){ 32 | 33 | // add event listener 34 | loggin_enable_link.addEventListener("click", openFieldset); 35 | 36 | } 37 | 38 | }; 39 | 40 | // Ajax calls for FrontendForms Manager 41 | $( document ).ready(function() { 42 | 43 | if ($("button.statistics").length > 0) { 44 | 45 | $("button.statistics").click(function(event){ 46 | event.preventDefault(); 47 | 48 | $.ajax({ 49 | url: $(location).attr("href"), 50 | type: 'post', // performing a POST request 51 | data : { 52 | type : $(this).data('statistic')// will be accessible in $_POST 53 | }, 54 | success: function(result) 55 | { 56 | // remove pageload container first 57 | $('#pageload').remove(); 58 | $("#questionsstatistic").html(result); 59 | } 60 | }); 61 | 62 | }); 63 | } 64 | 65 | }); 66 | -------------------------------------------------------------------------------- /captchaimages/animal/animal1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal1.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal10.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal11.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal12.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal13.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal14.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal2.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal3.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal4.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal5.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal6.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal7.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal8.jpg -------------------------------------------------------------------------------- /captchaimages/animal/animal9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/animal/animal9.jpg -------------------------------------------------------------------------------- /captchaimages/car/car1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/car/car1.jpg -------------------------------------------------------------------------------- /captchaimages/car/car2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/car/car2.jpg -------------------------------------------------------------------------------- /captchaimages/car/car3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/car/car3.jpg -------------------------------------------------------------------------------- /captchaimages/car/car4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/car/car4.jpg -------------------------------------------------------------------------------- /captchaimages/car/car5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/car/car5.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower1.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower10.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower11.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower12.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower13.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower14.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower15.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower2.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower3.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower4.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower5.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower6.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower7.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower8.jpg -------------------------------------------------------------------------------- /captchaimages/flower/flower9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/flower/flower9.jpg -------------------------------------------------------------------------------- /captchaimages/house/house1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house1.jpg -------------------------------------------------------------------------------- /captchaimages/house/house10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house10.jpg -------------------------------------------------------------------------------- /captchaimages/house/house11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house11.jpg -------------------------------------------------------------------------------- /captchaimages/house/house12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house12.jpg -------------------------------------------------------------------------------- /captchaimages/house/house2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house2.jpg -------------------------------------------------------------------------------- /captchaimages/house/house3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house3.jpg -------------------------------------------------------------------------------- /captchaimages/house/house4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house4.jpg -------------------------------------------------------------------------------- /captchaimages/house/house5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house5.jpg -------------------------------------------------------------------------------- /captchaimages/house/house6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house6.jpg -------------------------------------------------------------------------------- /captchaimages/house/house7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house7.jpg -------------------------------------------------------------------------------- /captchaimages/house/house8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house8.jpg -------------------------------------------------------------------------------- /captchaimages/house/house9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/house/house9.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake1.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake2.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake3.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake4.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake5.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake6.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake7.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake8.jpg -------------------------------------------------------------------------------- /captchaimages/lake/lake9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/lake/lake9.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain1.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain10.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain11.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain12.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain13.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain2.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain3.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain4.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain5.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain6.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain7.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain8.jpg -------------------------------------------------------------------------------- /captchaimages/mountain/mountain9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/mountain/mountain9.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree1.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree10.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree2.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree3.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree4.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree5.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree6.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree7.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree8.jpg -------------------------------------------------------------------------------- /captchaimages/tree/tree9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/captchaimages/tree/tree9.jpg -------------------------------------------------------------------------------- /config/questionFields.php: -------------------------------------------------------------------------------- 1 | questionFields = [ 16 | 'ff_answers' => [ 17 | 'fieldtype' => 'FieldtypeTextarea', 18 | 'label' => $this->_("Accepted answers"), 19 | 'description' => $this->_("Add all accepted answers (each on a new line)."), 20 | 'required' => 1, 21 | 'textformatters' => ["TextformatterEntities"], 22 | 'stripTags' => 1 23 | ], 24 | 'ff_errormsg' => [ 25 | 'fieldtype' => 'FieldtypeText', 26 | 'label' => $this->_("Custom error message"), 27 | 'description' => $this->_("Set a custom error message if you want."), 28 | 'notes' => $this->_("This will overwrite the default error message if the CAPTCHA answer was wrong.") 29 | ], 30 | 'ff_successmsg' => [ 31 | 'fieldtype' => 'FieldtypeText', 32 | 'label' => $this->_("Success message"), 33 | 'description' => $this->_("Set a custom success message if you want."), 34 | 'notes' => $this->_("This message will be shown, if the answer of the CAPTCHA was correct, but there were other errors.") 35 | ], 36 | 'ff_placeholder' => [ 37 | 'fieldtype' => 'FieldtypeText', 38 | 'label' => $this->_("Placeholder text"), 39 | 'description' => $this->_("Set a placeholder text if you want.") 40 | ], 41 | 'ff_notes' => [ 42 | 'fieldtype' => 'FieldtypeText', 43 | 'label' => $this->_("Notes text"), 44 | 'description' => $this->_("Set a notes text if you want."), 45 | 'notes' => $this->_("The notes text will be displayed below the input field.") 46 | ], 47 | 'ff_description' => [ 48 | 'fieldtype' => 'FieldtypeText', 49 | 'label' => $this->_("Description text"), 50 | 'description' => $this->_("Set a description text if you want."), 51 | 'notes' => $this->_("The description text will be displayed below or above the label or below the input field.") 52 | ], 53 | 'ff_descposition' => [ 54 | 'fieldtype' => 'FieldtypeOptions', 55 | 'label' => $this->_("Description position"), 56 | 'description' => $this->_("You can change the position of the description text if you want."), 57 | 'notes' => $this->_("This will overwrite the default description position."), 58 | 'defaultValue' => '1', 59 | 'required' => 1 60 | ] 61 | ]; 62 | -------------------------------------------------------------------------------- /email_templates/template_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/email_templates/template_1.png -------------------------------------------------------------------------------- /email_templates/template_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/email_templates/template_2.png -------------------------------------------------------------------------------- /email_templates/template_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/email_templates/template_3.png -------------------------------------------------------------------------------- /email_templates/template_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/email_templates/template_4.png -------------------------------------------------------------------------------- /image-picker/image-picker.css: -------------------------------------------------------------------------------- 1 | /* line 6, source/sass/image-picker.scss */ 2 | ul.thumbnails.image_picker_selector { 3 | overflow: auto; 4 | clear:both; 5 | list-style-image: none; 6 | list-style-position: outside; 7 | list-style-type: none; 8 | padding: 0px; 9 | margin: 0px; } 10 | /* line 15, source/sass/image-picker.scss */ 11 | ul.thumbnails .thumbnail .ff-email-template-selected { 12 | background:#ffd; 13 | color: #8d939e; 14 | position:absolute; 15 | width: 90%; 16 | padding: 7px 0; 17 | top: 7px; 18 | left: 5% 19 | } 20 | ul.thumbnails.image_picker_selector ul { 21 | overflow: auto; 22 | list-style-image: none; 23 | list-style-position: outside; 24 | list-style-type: none; 25 | padding: 0px; 26 | margin: 0px; } 27 | /* line 25, source/sass/image-picker.scss */ 28 | ul.thumbnails.image_picker_selector li.group_title { 29 | float: none; } 30 | /* line 30, source/sass/image-picker.scss */ 31 | ul.thumbnails.image_picker_selector li { 32 | position:relative; 33 | margin: 0px 12px 12px 0px; 34 | text-align: center; 35 | font-size: 12px; 36 | float: left; } 37 | /* line 35, source/sass/image-picker.scss */ 38 | ul.thumbnails.image_picker_selector li .thumbnail { 39 | padding: 6px; 40 | border: 1px solid #DDD; 41 | -webkit-user-select: none; 42 | -moz-user-select: none; 43 | -ms-user-select: none; } 44 | /* line 42, source/sass/image-picker.scss */ 45 | ul.thumbnails.image_picker_selector li .thumbnail img { 46 | -webkit-user-drag: none; } 47 | /* line 48, source/sass/image-picker.scss */ 48 | ul.thumbnails.image_picker_selector li .thumbnail.selected { 49 | background: #08C; } 50 | ul.thumbnails.image_picker_selector li .thumbnail p { 51 | text-align: center; 52 | } 53 | 54 | ul.thumbnails.image_picker_selector li .thumbnail.selected p { 55 | color: #fff; 56 | } 57 | -------------------------------------------------------------------------------- /images/captchafield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/captchafield.png -------------------------------------------------------------------------------- /images/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/dashboard.png -------------------------------------------------------------------------------- /images/forminterests-backend.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/forminterests-backend.jpg -------------------------------------------------------------------------------- /images/forminterests-frontend.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/forminterests-frontend.jpg -------------------------------------------------------------------------------- /images/installmodule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/installmodule.png -------------------------------------------------------------------------------- /images/pagetree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/pagetree.png -------------------------------------------------------------------------------- /images/questionpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/questionpage.png -------------------------------------------------------------------------------- /images/questiontable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/questiontable.png -------------------------------------------------------------------------------- /images/setupmenupoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/setupmenupoint.png -------------------------------------------------------------------------------- /images/template-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/template-select.png -------------------------------------------------------------------------------- /images/templatepreviews/emailtemplate-placeholder-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/templatepreviews/emailtemplate-placeholder-image.png -------------------------------------------------------------------------------- /images/templatepreviews/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/juergenweb/FrontendForms/ff78e9020c76dec40d4a56fa3414c7489797e103/images/templatepreviews/none.png -------------------------------------------------------------------------------- /valitron/errormessages.php: -------------------------------------------------------------------------------- 1 | __('contains non-ascii characters.'), 18 | 'required' => __('is required.'), 19 | 'equals' => __('must be the same as %s.'), 20 | 'different' => __('must be different than %s.'), 21 | 'accepted' => __('must be accepted.'), 22 | 'numeric' => __('must be numeric.'), 23 | 'integer' => __('must be an integer.'), 24 | 'length' => __('must be %s characters long.'), 25 | 'min' => __('must be at least %s.'), 26 | 'max' => __('must be no more than %s.'), 27 | 'listcontains' => __('contains invalid value.'), 28 | 'in' => __('contains invalid value.'), 29 | 'notin' => __('contains invalid value.'), 30 | 'ip' => __('is not a valid IP address.'), 31 | 'ipv4' => __('is not a valid IPv4 address.'), 32 | 'ipv6' => __('is not a valid IPv6 address.'), 33 | 'email' => __('is not a valid email address.'), 34 | 'emailDNS' => __('is not a valid email address, because an active DNS record could not be found.'), 35 | 'url' => __('is not a valid URL.'), 36 | 'urlActive' => __('must be an active domain.'), 37 | 'alpha' => __('must contain only letters a-z.'), 38 | 'alphanum' => __('must contain only letters a-z and/or numbers 0-9.'), 39 | 'slug' => __('must contain only letters a-z, numbers 0-9, dashes and underscores.'), 40 | 'regex' => __('contains invalid characters.'), 41 | 'date' => __('is not a valid date.'), 42 | 'dateformat' => __('must be a date in the format %s.'), 43 | 'dateBefore' => __('must be a date before %s.'), 44 | 'dateAfter' => __('must be a date after %s.'), 45 | 'contains' => __('must contain %s.'), 46 | 'boolean' => __('must be a boolean.'), 47 | 'lengthbetween' => __('must be between %s and %s characters.'), 48 | 'creditCard' => __('must be a valid credit card number.'), 49 | 'lengthMin' => __('must be at least %s characters long.'), 50 | 'lengthMax' => __('must not exceed %s characters.'), 51 | 'instanceOf' => __('must be an instance of %s.'), 52 | 'containsunique' => __('must contain unique elements only.'), 53 | 'requiredWith' => __('is required.'), 54 | 'requiredwithout'=> __('is required.'), 55 | 'subset' => __('contains an item that is not in the list.'), 56 | 'arrayhaskeys' => __('does not contain all required keys.'), 57 | ]; 58 | -------------------------------------------------------------------------------- /valitron/src/LICENSE.txt: -------------------------------------------------------------------------------- 1 | The BSD 3-Clause License 2 | http://opensource.org/licenses/BSD-3-Clause 3 | 4 | Copyright (c) 2013, Vance Lucas 5 | All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are 9 | met: 10 | 11 | * Redistributions of source code must retain the above copyright 12 | notice, 13 | this list of conditions and the following disclaimer. 14 | * Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in the 16 | documentation and/or other materials provided with the distribution. 17 | * Neither the name of the Vance Lucas nor the names of its contributors 18 | may be used to endorse or promote products derived from this software 19 | without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 22 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 23 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 24 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 27 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | --------------------------------------------------------------------------------