From 182261273a891f49627ef42fd657f31b1289afd9 Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Fri, 8 Feb 2019 14:00:23 +0530 Subject: [PATCH 01/15] Revert "MInor fix" This reverts commit 7e5c8fa3da6126b913f58298629b2d5fa12f141c. --- tmpl/default.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tmpl/default.php b/tmpl/default.php index 4c26f69..4546670 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -81,10 +81,10 @@ - - id) as $js) { - echo $js; - } - ?> - }); - })(jQuery_3_3_1); - From 177b51695c5a62ef5e961add9a85c3179b769d8c Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Mon, 11 Feb 2019 17:16:44 +0530 Subject: [PATCH 02/15] Added checkbox for CC functionality for clients --- helper.php | 35 +++++++++++++++---- .../en-GB/en-GB.mod_jdsimplecontactform.ini | 7 ++++ layouts/fields/text.php | 8 ++++- mod_jdsimplecontactform.xml | 32 ++++++++++++++++- tmpl/default.php | 4 +-- 5 files changed, 76 insertions(+), 10 deletions(-) diff --git a/helper.php b/helper.php index 909f7cc..53f9ff0 100644 --- a/helper.php +++ b/helper.php @@ -15,11 +15,11 @@ public static function renderForm($params, $module) { $fields = $params->get('fields', []); foreach ($fields as $field) { $field->id = \JFilterOutput::stringURLSafe('jdscf-' . $module->id . '-' . $field->name); - self::renderField($field, $module); + self::renderField($field, $module, $params); } } - public static function renderField($field, $module) { + public static function renderField($field, $module, $params) { $label = new JLayoutFile('label', JPATH_SITE . '/modules/mod_jdsimplecontactform/layouts'); $field_layout = self::getFieldLayout($field->type); $input = new JLayoutFile('fields.' . $field_layout, JPATH_SITE . '/modules/mod_jdsimplecontactform/layouts'); @@ -27,7 +27,7 @@ public static function renderField($field, $module) { if ($field->type == 'checkbox') { $field->show_label = 0; } - echo $layout->render(['field' => $field, 'label' => $label->render(['field' => $field]), 'input' => $input->render(['field' => $field, 'label' => self::getLabelText($field), 'module' => $module]), 'module' => $module]); + echo $layout->render(['field' => $field, 'label' => $label->render(['field' => $field]), 'input' => $input->render(['field' => $field, 'label' => self::getLabelText($field), 'module' => $module, 'params' => $params]), 'module' => $module]); } public static function getOptions($options) { @@ -88,10 +88,17 @@ public static function submitForm($ajax = false) { foreach ($params->get('fields', []) as $field) { $labels[$field->name] = ['label' => self::getLabelText($field), 'type' => $field->type]; } - + $cc_emails = []; $values = []; foreach ($jdscf as $name => $value) { - $values[$name] = $value; + if(is_array($value)){ + $values[$name] = $value['email']; + if(isset($value['cc']) && $value['cc'] == 1){ + $cc_emails[] = $value['email']; + } + }else{ + $values[$name] = $value; + } } @@ -163,7 +170,12 @@ public static function submitForm($ajax = false) { } // CC $cc = !empty($params->get('email_cc', '')) ? $params->get('email_cc') : ''; - $cc = explode(',', $cc); + $cc = empty($cc) ? [] : explode(",", $cc); + if(!empty($cc_emails)){ + $cc = array_merge($cc, $cc_emails); + $cc = array_unique($cc); + } + if (!empty($cc)) { $mailer->addCc($cc); } @@ -279,4 +291,15 @@ public static function getJS($moduleid) { return $GLOBALS['mod_jdscf_js_' . $moduleid]; } + public static function isCCMail($field, $params){ + $sendcopy_email = $params->get('sendcopy_email', 0); + $sendcopyemail_field = $params->get('sendcopyemail_field', ''); + $sendcopyemail_fields = explode(",", $sendcopyemail_field); + if($sendcopy_email && !empty($sendcopyemail_fields) && in_array($field->name, $sendcopyemail_fields)){ + return true; + }else{ + return false; + } + } + } diff --git a/language/en-GB/en-GB.mod_jdsimplecontactform.ini b/language/en-GB/en-GB.mod_jdsimplecontactform.ini index 19a0013..bdddf41 100644 --- a/language/en-GB/en-GB.mod_jdsimplecontactform.ini +++ b/language/en-GB/en-GB.mod_jdsimplecontactform.ini @@ -123,6 +123,13 @@ MOD_JDSCF_EMAIL_BCC_DESC="BCC email address to recieve submissions. Use comma to MOD_JDSCF_EMAIL_TEMPLATE_LBL="Email Template" MOD_JDSCF_EMAIL_TEMPLATE_DESC="Select the email template, The default template lists all fields in the order they exist in
{field:label}: {field:value}
format." +MOD_JDSCF_SEND_COPY="Send Copy of Email" +MOD_JDSCF_SEND_COPY_LBL_TITLE="Send me a copy" +MOD_JDSCF_SEND_COPY_DESCRIPTION="Displays a checkbox for users to send a copy of email to themselves." + +MOD_JDSCF_EMAIL_NAME="Enter name of email" +MOD_JDSCF_EMAIL_NAME_DESCRIPTION="Name of email input field to send a copy to." + MOD_JDSCF_EMAIL_CUSTOM_TEMPLATE_LBL="Custom Email Template" MOD_JDSCF_EMAIL_CUSTOM_TEMPLATE_DESC="Enter your custom email template. You can use {field:label} for the field name, and {field:value} for user input value. Change field to the actual name of your input field." diff --git a/layouts/fields/text.php b/layouts/fields/text.php index 0a6b727..1bc4f9f 100644 --- a/layouts/fields/text.php +++ b/layouts/fields/text.php @@ -12,6 +12,7 @@ switch ($field->type) { case 'email': $attrs[] = 'data-parsley-type="email"'; + $isCCMail = ModJDSimpleContactFormHelper::isCCMail($field, $params); break; case 'number': $attrs[] = 'data-parsley-type="number"'; @@ -49,4 +50,9 @@ $attrs[] = 'data-parsley-required-message="' . JText::sprintf('MOD_JDSCF_REQUIRED_ERROR', strip_tags($label)) . '"'; } ?> - /> \ No newline at end of file + /> +type == 'email' && $isCCMail){ ?> + + \ No newline at end of file diff --git a/mod_jdsimplecontactform.xml b/mod_jdsimplecontactform.xml index 0e1e53b..e3868b5 100644 --- a/mod_jdsimplecontactform.xml +++ b/mod_jdsimplecontactform.xml @@ -144,6 +144,36 @@ + + + + + + + + + + /> diff --git a/tmpl/default.php b/tmpl/default.php index 4c26f69..efe67e0 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -67,8 +67,8 @@
render(['params' => $params]); + $submit = new JLayoutFile('fields.submit', JPATH_SITE . '/modules/mod_jdsimplecontactform/layouts'); + echo $submit->render(['params' => $params]); ?>
From ec8088d3fcb6cb5bd924fc80dc99ecdadd81033b Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Thu, 14 Feb 2019 11:49:11 +0530 Subject: [PATCH 03/15] file upload work --- forms/fielditem.xml | 1 + helper.php | 37 ++++++++++++++++++++++++++++++++++++- tmpl/default.php | 10 ++++++++-- 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/forms/fielditem.xml b/forms/fielditem.xml index e5dd791..23140d2 100644 --- a/forms/fielditem.xml +++ b/forms/fielditem.xml @@ -27,6 +27,7 @@ +
get('fields', []) as $field) { $labels[$field->name] = ['label' => self::getLabelText($field), 'type' => $field->type]; } + $cc_emails = []; $values = []; foreach ($jdscf as $name => $value) { @@ -101,8 +102,8 @@ public static function submitForm($ajax = false) { } } - $contents = []; + $attachments = []; foreach ($labels as $name => $fld) { $value = isset($values[$name]) ? $values[$name] : ''; if ($fld['type'] == 'checkbox') { @@ -111,11 +112,21 @@ public static function submitForm($ajax = false) { } $value = empty($value) ? 'unchecked' : 'checked'; } + if ($fld['type'] == 'file') { + if(isset($_FILES['jdscf']['name'][$name])){ + $value = $_FILES['jdscf']['name'][$name]; + $uploaded = self::uploadFile($_FILES['jdscf']['name'][$name], $_FILES['jdscf']['tmp_name'][$name]); + if(!empty($uploaded)){ + $attachments[] = $uploaded; + } + } + } if ($fld['type'] == 'textarea') { if ($value) { $value = nl2br($value); } } + $contents[] = [ "value" => $value, "label" => $fld['label'], @@ -192,6 +203,9 @@ public static function submitForm($ajax = false) { $mailer->isHtml(true); $mailer->Encoding = 'base64'; $mailer->setBody($html); + foreach($attachments as $attachment){ + $mailer->addAttachment($attachment); + } $send = $mailer->Send(); if ($send !== true) { throw new \Exception(JText::_('MOD_JDSCFEMAIL_SEND_ERROR')); @@ -306,4 +320,25 @@ public static function isCCMail($field, $params){ } } + public static function uploadFile($name, $src) { + jimport('joomla.filesystem.file'); + $filename = JFile::makeSafe($name); + + $tmppath = JPATH_SITE . '/tmp'; + if(!file_exists($tmppath.'/jdscf')){ + mkdir($tmppath.'/jdscf',0777); + } + $folder = md5(time().'-'.$filename.rand(0,99999)); + if(!file_exists($tmppath.'/jdscf/'.$folder)){ + mkdir($tmppath.'/jdscf/'.$folder,0777); + } + $dest = $tmppath.'/jdscf/'.$folder.'/'.$filename; + + $return = null; + if (JFile::upload($src, $dest)){ + $return = $dest; + } + return $return; + } + } diff --git a/tmpl/default.php b/tmpl/default.php index 47e5a8d..73f1a48 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -12,6 +12,8 @@ $session = JFactory::getSession(); $message = $session->get('jdscf-message-' . $module->id, ''); $captcha = $params->get('captcha', 0); +echo JPATH_SITE .'\tmp\test.pdf'; +echo "
"; ?>

-
+
id; ?>').on('submit', function (e) { e.preventDefault(); + var formData = new FormData(this); var _form = $(this); var _id = 'simple-contact-form-id; ?>'; var _loading = $('.simple-contact-form-loader.module-id; ?>'); if (_form.parsley().isValid()) { $.ajax({ url: 'index.php?option=com_ajax&module=jdsimplecontactform&format=json&method=submitForm', - data: $(this).serialize(), + data: formData, type: 'POST', beforeSend: function () { _loading.removeClass('d-none'); }, + cache: false, + contentType: false, + processData: false, success: function (response) { if (response.status == 'success') { From ea21efe358bf4dc6a1ecc35d666e4fc1bd276ecc Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Thu, 14 Feb 2019 12:03:44 +0530 Subject: [PATCH 04/15] Code refactored Removed code used for testing purposes. --- helper.php | 2 +- tmpl/default.php | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/helper.php b/helper.php index ac24610..600933f 100644 --- a/helper.php +++ b/helper.php @@ -113,7 +113,7 @@ public static function submitForm($ajax = false) { $value = empty($value) ? 'unchecked' : 'checked'; } if ($fld['type'] == 'file') { - if(isset($_FILES['jdscf']['name'][$name])){ + if(isset($_FILES['jdscf']['name'][$name])) { $value = $_FILES['jdscf']['name'][$name]; $uploaded = self::uploadFile($_FILES['jdscf']['name'][$name], $_FILES['jdscf']['tmp_name'][$name]); if(!empty($uploaded)){ diff --git a/tmpl/default.php b/tmpl/default.php index 73f1a48..957e1f7 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -12,8 +12,6 @@ $session = JFactory::getSession(); $message = $session->get('jdscf-message-' . $module->id, ''); $captcha = $params->get('captcha', 0); -echo JPATH_SITE .'\tmp\test.pdf'; -echo "
"; ?> Date: Fri, 15 Feb 2019 10:03:14 +0530 Subject: [PATCH 05/15] Added language variables Added language variables *Send copy* labels. --- language/en-GB/en-GB.mod_jdsimplecontactform.ini | 3 +++ mod_jdsimplecontactform.xml | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/language/en-GB/en-GB.mod_jdsimplecontactform.ini b/language/en-GB/en-GB.mod_jdsimplecontactform.ini index bdddf41..1a5e3c6 100644 --- a/language/en-GB/en-GB.mod_jdsimplecontactform.ini +++ b/language/en-GB/en-GB.mod_jdsimplecontactform.ini @@ -127,6 +127,9 @@ MOD_JDSCF_SEND_COPY="Send Copy of Email" MOD_JDSCF_SEND_COPY_LBL_TITLE="Send me a copy" MOD_JDSCF_SEND_COPY_DESCRIPTION="Displays a checkbox for users to send a copy of email to themselves." +MOD_JDSCF_SEND_COPY_EMAIL_FIELD="Enter Email Field Name" +MOD_JDSCF_SEND_COPY_LABEL="Enter Send Copy Label" + MOD_JDSCF_EMAIL_NAME="Enter name of email" MOD_JDSCF_EMAIL_NAME_DESCRIPTION="Name of email input field to send a copy to." diff --git a/mod_jdsimplecontactform.xml b/mod_jdsimplecontactform.xml index e3868b5..4d1a4a8 100644 --- a/mod_jdsimplecontactform.xml +++ b/mod_jdsimplecontactform.xml @@ -161,7 +161,7 @@ name="sendcopyemail_field" default="" type="text" - label="Enter Email Field Name" + label="MOD_JDSCF_SEND_COPY_EMAIL_FIELD" description="" /> @@ -170,7 +170,7 @@ name="sendcopyemailfield_title" default="" type="text" - label="Enter Send Copy Label" + label="MOD_JDSCF_SEND_COPY_LABEL" description="" /> From ea67d694a41362ef3a1fabe5cc50c4e58dd8e75f Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Mon, 18 Feb 2019 14:05:53 +0530 Subject: [PATCH 06/15] Updated file types functionality Now the file types are checked through **files in media manager**. --- helper.php | 59 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/helper.php b/helper.php index 600933f..64e09c4 100644 --- a/helper.php +++ b/helper.php @@ -104,6 +104,7 @@ public static function submitForm($ajax = false) { $contents = []; $attachments = []; + $errors = []; foreach ($labels as $name => $fld) { $value = isset($values[$name]) ? $values[$name] : ''; if ($fld['type'] == 'checkbox') { @@ -116,7 +117,11 @@ public static function submitForm($ajax = false) { if(isset($_FILES['jdscf']['name'][$name])) { $value = $_FILES['jdscf']['name'][$name]; $uploaded = self::uploadFile($_FILES['jdscf']['name'][$name], $_FILES['jdscf']['tmp_name'][$name]); - if(!empty($uploaded)){ + //filetype error + if(!$uploaded) { + $errors = ['Unsupported Filetype']; + } + if(!empty($uploaded)) { $attachments[] = $uploaded; } } @@ -206,7 +211,17 @@ public static function submitForm($ajax = false) { foreach($attachments as $attachment){ $mailer->addAttachment($attachment); } - $send = $mailer->Send(); + if(!empty($errors)) { + $app = JFactory::getApplication(); + //showing all the validation errors + foreach ($errors as $error) { + $app->enqueueMessage(\JText::_($error), 'error'); + } + } + else { + $send = $mailer->Send(); + } + if ($send !== true) { throw new \Exception(JText::_('MOD_JDSCFEMAIL_SEND_ERROR')); } @@ -322,23 +337,35 @@ public static function isCCMail($field, $params){ public static function uploadFile($name, $src) { jimport('joomla.filesystem.file'); + jimport('joomla.application.component.helper'); + $filename = JFile::makeSafe($name); + $filetype = JFile::getExt($filename); - $tmppath = JPATH_SITE . '/tmp'; - if(!file_exists($tmppath.'/jdscf')){ - mkdir($tmppath.'/jdscf',0777); - } - $folder = md5(time().'-'.$filename.rand(0,99999)); - if(!file_exists($tmppath.'/jdscf/'.$folder)){ - mkdir($tmppath.'/jdscf/'.$folder,0777); - } - $dest = $tmppath.'/jdscf/'.$folder.'/'.$filename; + $params = JComponentHelper::getParams('com_media'); + $allowable = array_map('trim', explode(',', $params->get('upload_extensions'))); - $return = null; - if (JFile::upload($src, $dest)){ - $return = $dest; + if ($filetype == '' || $filetype == false || (!in_array($filetype, $allowable) )) + { + return false; } - return $return; - } + else + { + $tmppath = JPATH_SITE . '/tmp'; + if(!file_exists($tmppath.'/jdscf')){ + mkdir($tmppath.'/jdscf',0777); + } + $folder = md5(time().'-'.$filename.rand(0,99999)); + if(!file_exists($tmppath.'/jdscf/'.$folder)){ + mkdir($tmppath.'/jdscf/'.$folder,0777); + } + $dest = $tmppath.'/jdscf/'.$folder.'/'.$filename; + $return = null; + if (JFile::upload($src, $dest)){ + $return = $dest; + } + return $return; + } + } } From 5ab3f0bc52787b82d4159b4a647e22b36a2dee8e Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Tue, 19 Feb 2019 13:46:42 +0530 Subject: [PATCH 07/15] Removed error undefined Replaced undefined message while using AJAX with "Something went wrong! Please try again." --- helper.php | 8 ++++---- tmpl/default.php | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/helper.php b/helper.php index 64e09c4..f84a471 100644 --- a/helper.php +++ b/helper.php @@ -119,7 +119,7 @@ public static function submitForm($ajax = false) { $uploaded = self::uploadFile($_FILES['jdscf']['name'][$name], $_FILES['jdscf']['tmp_name'][$name]); //filetype error if(!$uploaded) { - $errors = ['Unsupported Filetype']; + $errors[] = ['Unsupported Filetype']; } if(!empty($uploaded)) { $attachments[] = $uploaded; @@ -195,7 +195,7 @@ public static function submitForm($ajax = false) { $cc = array_merge($cc, $cc_emails); $cc = array_unique($cc); } - + if (!empty($cc)) { $mailer->addCc($cc); } @@ -221,7 +221,7 @@ public static function submitForm($ajax = false) { else { $send = $mailer->Send(); } - + if ($send !== true) { throw new \Exception(JText::_('MOD_JDSCFEMAIL_SEND_ERROR')); } @@ -366,6 +366,6 @@ public static function uploadFile($name, $src) { $return = $dest; } return $return; - } + } } } diff --git a/tmpl/default.php b/tmpl/default.php index 957e1f7..44e13bd 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -80,6 +80,16 @@ + get('ajaxsubmit', 0)) { ?> - + get('ajaxsubmit', 0)) { ?> From b90660f6bb802798fe4dc0150380822afa82e021 Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Tue, 19 Feb 2019 16:32:19 +0530 Subject: [PATCH 09/15] Updated: version & year --- helper.php | 2 +- layouts/emails/default.php | 2 +- layouts/field.php | 2 +- layouts/fields/calendar.php | 2 +- layouts/fields/checkbox.php | 2 +- layouts/fields/checkboxes.php | 2 +- layouts/fields/file.php | 2 +- layouts/fields/list.php | 2 +- layouts/fields/radio.php | 2 +- layouts/fields/submit.php | 2 +- layouts/fields/text.php | 2 +- layouts/fields/textarea.php | 2 +- layouts/label.php | 2 +- mod_jdsimplecontactform.php | 2 +- mod_jdsimplecontactform.xml | 6 +++--- tmpl/default.php | 2 +- 16 files changed, 18 insertions(+), 18 deletions(-) diff --git a/helper.php b/helper.php index 85013d9..2e8cfe5 100644 --- a/helper.php +++ b/helper.php @@ -3,7 +3,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/emails/default.php b/layouts/emails/default.php index cb401d2..81d1a74 100644 --- a/layouts/emails/default.php +++ b/layouts/emails/default.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/field.php b/layouts/field.php index 681b8a3..4c1705f 100644 --- a/layouts/field.php +++ b/layouts/field.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/calendar.php b/layouts/fields/calendar.php index 9c1da25..2b28c97 100644 --- a/layouts/fields/calendar.php +++ b/layouts/fields/calendar.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/checkbox.php b/layouts/fields/checkbox.php index bb66a15..1cfa484 100644 --- a/layouts/fields/checkbox.php +++ b/layouts/fields/checkbox.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/checkboxes.php b/layouts/fields/checkboxes.php index e2fc9a5..9424cee 100644 --- a/layouts/fields/checkboxes.php +++ b/layouts/fields/checkboxes.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/file.php b/layouts/fields/file.php index 77a6d86..b7ee7ca 100644 --- a/layouts/fields/file.php +++ b/layouts/fields/file.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/list.php b/layouts/fields/list.php index 974a7fa..4ec1564 100644 --- a/layouts/fields/list.php +++ b/layouts/fields/list.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/radio.php b/layouts/fields/radio.php index fc4a61b..ee5735c 100644 --- a/layouts/fields/radio.php +++ b/layouts/fields/radio.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/submit.php b/layouts/fields/submit.php index 33e8099..97722a9 100644 --- a/layouts/fields/submit.php +++ b/layouts/fields/submit.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/text.php b/layouts/fields/text.php index 1bc4f9f..2c9555a 100644 --- a/layouts/fields/text.php +++ b/layouts/fields/text.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/fields/textarea.php b/layouts/fields/textarea.php index 62528a6..62cf37e 100644 --- a/layouts/fields/textarea.php +++ b/layouts/fields/textarea.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/layouts/label.php b/layouts/label.php index 2f14b57..fee3a75 100644 --- a/layouts/label.php +++ b/layouts/label.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/mod_jdsimplecontactform.php b/mod_jdsimplecontactform.php index 69b6a4a..bae9894 100644 --- a/mod_jdsimplecontactform.php +++ b/mod_jdsimplecontactform.php @@ -3,7 +3,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access diff --git a/mod_jdsimplecontactform.xml b/mod_jdsimplecontactform.xml index 4d1a4a8..56650b0 100644 --- a/mod_jdsimplecontactform.xml +++ b/mod_jdsimplecontactform.xml @@ -2,10 +2,10 @@ mod_jdsimplecontactform JoomDev - 1.1 - Dec 2018 + 1.2 + Dec 2019 https://www.joomdev.com - Copyright (C) 2018 Joomdev, Inc. All rights reserved. + Copyright (C) 2019 Joomdev, Inc. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt info@joomdev.com https://www.joomdev.com diff --git a/tmpl/default.php b/tmpl/default.php index 7ce20ee..ed27f0f 100644 --- a/tmpl/default.php +++ b/tmpl/default.php @@ -2,7 +2,7 @@ /** * @package JD Simple Contact Form * @author JoomDev https://www.joomdev.com - * @copyright Copyright (C) 2009 - 2018 JoomDev. + * @copyright Copyright (C) 2009 - 2019 JoomDev. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later */ // no direct access From fed8aeea75cbaa16957607ed23d0e9463726319c Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Wed, 20 Feb 2019 17:19:46 +0530 Subject: [PATCH 10/15] Fixed some things Fixes: 1. Calendar icon is clickable now 2. File validations on front-end for upload files 3. Fixed single checkbox 4. Fixed upload field when it's not required Co-Authored-By: Sumesh --- helper.php | 16 ++++++++++++---- layouts/fields/calendar.php | 23 +++++++++++++++++------ layouts/fields/checkbox.php | 2 +- layouts/fields/file.php | 5 ++++- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/helper.php b/helper.php index 2e8cfe5..92cf7f6 100644 --- a/helper.php +++ b/helper.php @@ -106,21 +106,29 @@ public static function submitForm($ajax = false) { $attachments = []; $errors = []; foreach ($labels as $name => $fld) { - $value = isset($values[$name]) ? $values[$name] : ''; + $value = isset($values[$name]) ? $values[$name] : ''; + if ($fld['type'] == 'checkbox') { + $value = $_POST['jdscf'][$name][cb]; + if (is_array($value)) { $value = implode(',', $value); + } else { + $value = $value; } $value = empty($value) ? 'unchecked' : 'checked'; } + if ($fld['type'] == 'file') { if(isset($_FILES['jdscf']['name'][$name])) { $value = $_FILES['jdscf']['name'][$name]; $uploaded = self::uploadFile($_FILES['jdscf']['name'][$name], $_FILES['jdscf']['tmp_name'][$name]); //filetype error - if(!$uploaded) { - $errors[] = JText::_('MOD_JDSCF_UNSUPPORTED_FILE_ERROR'); - } + if(!empty($value)) { + if(!$uploaded) { + $errors[] = JText::_('MOD_JDSCF_UNSUPPORTED_FILE_ERROR'); + } + } if(!empty($uploaded)) { $attachments[] = $uploaded; } diff --git a/layouts/fields/calendar.php b/layouts/fields/calendar.php index 2b28c97..8da0d63 100644 --- a/layouts/fields/calendar.php +++ b/layouts/fields/calendar.php @@ -21,15 +21,26 @@ $attrs[] = 'required'; $attrs[] = 'data-parsley-required-message="' . JText::sprintf('MOD_JDSCF_REQUIRED_ERROR', strip_tags($label)) . '"'; } + +$document = JFactory::getDocument(); +$style = 'label.calendar_icon {' + . 'display: inherit;' + . 'cursor: pointer;' + . 'margin: 0px;' + . 'border-radius: 0;' + . '}'; +$document->addStyleDeclaration($style); ?>
- /> -
-
- Calendar -
-
+ autocomplete="off" /> +
- /> + /> diff --git a/layouts/fields/file.php b/layouts/fields/file.php index b7ee7ca..5ac2d3e 100644 --- a/layouts/fields/file.php +++ b/layouts/fields/file.php @@ -14,8 +14,11 @@ $attrs[] = 'data-parsley-required-message="' . JText::sprintf('MOD_JDSCF_REQUIRED_ERROR', strip_tags($label)) . '"'; } $attrs[] = 'id="' . $field->name . '-file-input"'; +//fetching allowed types +$params = JComponentHelper::getParams('com_media'); +$allowable = array_map('trim', explode(',', $params->get('upload_extensions'))); ?>
- > + " type="file" name="jdscf[name; ?>]" class="custom-file-input" >
\ No newline at end of file From f8d9839f33b9921adee368911c177643c92b88f5 Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Fri, 22 Feb 2019 18:40:02 +0530 Subject: [PATCH 11/15] Minor Fixes Reference -> https://docs.google.com/spreadsheets/d/1V_FbqyS2kA9J8ooSPu2m2BzFizeHFF4JkipaxPlZcDk/edit#gid=1415752248 --- helper.php | 35 +++++++++++++++++++++++----------- layouts/fields/checkboxes.php | 2 +- layouts/fields/file.php | 36 +++++++++++++++++++++++++++++++++-- 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/helper.php b/helper.php index 92cf7f6..1662d64 100644 --- a/helper.php +++ b/helper.php @@ -92,12 +92,14 @@ public static function submitForm($ajax = false) { $cc_emails = []; $values = []; foreach ($jdscf as $name => $value) { - if(is_array($value)){ - $values[$name] = $value['email']; - if(isset($value['cc']) && $value['cc'] == 1){ - $cc_emails[] = $value['email']; + if(is_array($value)) { + if(isset($value['email'])) { + $values[$name] = $value['email']; + if(isset($value['cc']) && $value['cc'] == 1) { + $cc_emails[] = $value['email']; + } } - }else{ + } else { $values[$name] = $value; } } @@ -106,11 +108,21 @@ public static function submitForm($ajax = false) { $attachments = []; $errors = []; foreach ($labels as $name => $fld) { - $value = isset($values[$name]) ? $values[$name] : ''; + $value = isset($values[$name]) ? $values[$name] : ''; - if ($fld['type'] == 'checkbox') { - $value = $_POST['jdscf'][$name][cb]; - + if ($fld['type'] == 'checkboxes') { + + $value = $_POST['jdscf'][$name]['cbs']; + + if (is_array($value)) { + $value = implode(', ', $value); + } else { + $value = $value; + } + } + + if ($fld['type'] == 'checkbox') { + $value = $_POST['jdscf'][$name]['cb']; if (is_array($value)) { $value = implode(',', $value); } else { @@ -347,8 +359,9 @@ public static function uploadFile($name, $src) { jimport('joomla.filesystem.file'); jimport('joomla.application.component.helper'); - $filename = JFile::makeSafe($name); - $filetype = JFile::getExt($filename); + $fullFileName = JFile::stripExt($name); + $filetype = JFile::getExt($name); + $filename = JFile::makeSafe($fullFileName."_".mt_rand(10000000,99999999).".".$filetype); $params = JComponentHelper::getParams('com_media'); $allowable = array_map('trim', explode(',', $params->get('upload_extensions'))); diff --git a/layouts/fields/checkboxes.php b/layouts/fields/checkboxes.php index 9424cee..c21ea25 100644 --- a/layouts/fields/checkboxes.php +++ b/layouts/fields/checkboxes.php @@ -20,7 +20,7 @@ foreach ($options as $key => $option) { ?>
- /> + /> diff --git a/layouts/fields/file.php b/layouts/fields/file.php index 5ac2d3e..5e574c8 100644 --- a/layouts/fields/file.php +++ b/layouts/fields/file.php @@ -17,8 +17,40 @@ //fetching allowed types $params = JComponentHelper::getParams('com_media'); $allowable = array_map('trim', explode(',', $params->get('upload_extensions'))); +$allowedMaxSize = $params->get('upload_maxsize'); ?> +
- " type="file" name="jdscf[name; ?>]" class="custom-file-input" > + " type="file" name="jdscf[name; ?>]" class="custom-file-input" > -
\ No newline at end of file +
+ +
+ + File size is too big! +
+ + +name.' = document.getElementById("' . $field->name . '-' .$module->id .'");'; +$js .= 'uploadField_' . $field->name .'.onchange = function() {'; + $js .= 'var fileSizeBytes = this.files[0].size;'; + // $js .= 'var i = parseInt(Math.floor(Math.log(fileSizeBytes) / Math.log(1024)));'; + // $js .= 'var fileSizeMb = parseFloat(Math.round(fileSizeBytes / Math.pow(1024, i), 2));'; + $js .= 'var filesizeMb = fileSizeBytes/1024/1024;'; + + $js .= 'if(filesizeMb > ' . $allowedMaxSize .'){'; + $js .= 'uploadField_'.$field->name.'.value = "";'; + $js .= 'jQuery(".filesize-error-' . $field->name . '-' . $module->id . '").show();'; + $js .= '}'; +$js .= '};'; + +ModJDSimpleContactFormHelper::addJS($js, $module->id); +?> \ No newline at end of file From adf1ef835dbf4f50a2dc179f9bf6c3c2646bb7b7 Mon Sep 17 00:00:00 2001 From: Chandan Deep Date: Mon, 25 Feb 2019 19:02:05 +0530 Subject: [PATCH 12/15] Improve Thanks you message --- language/en-GB/en-GB.mod_jdsimplecontactform.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/en-GB/en-GB.mod_jdsimplecontactform.ini b/language/en-GB/en-GB.mod_jdsimplecontactform.ini index f63e9e3..52aa2bc 100644 --- a/language/en-GB/en-GB.mod_jdsimplecontactform.ini +++ b/language/en-GB/en-GB.mod_jdsimplecontactform.ini @@ -153,7 +153,7 @@ MOD_JDSCF_DEFAULT_SUBJECT="New Submission%s" MOD_JDSCF_TEXTAREA_ROWS_LBL="Rows" MOD_JDSCF_TEXTAREA_ROWS_DESC="" -MOD_JDSCF_THANKYOU_DEFAULT="Thank you." +MOD_JDSCF_THANKYOU_DEFAULT="
Thanks for reaching out!
" MOD_JDSCF_BAD_REQUEST="Bad Request" MOD_JDSCFEMAIL_SEND_ERROR="An error occurred while sending email." MOD_JDSCF_MODULE_NOT_FOUND="Module not found" From c8b3766e602524bbe194bc9fb587ef9e965e6651 Mon Sep 17 00:00:00 2001 From: Chandan Deep Date: Mon, 25 Feb 2019 19:22:13 +0530 Subject: [PATCH 13/15] Preloader overlap issue solved --- assets/css/style.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/assets/css/style.css b/assets/css/style.css index 7843d6a..c0649e5 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -1,2 +1 @@ -.jd-simple-contact-form{position:relative;width:100%;margin-right:auto;margin-left:auto}@-webkit-keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jd-simple-contact-form,.jd-simple-contact-form::before,.jd-simple-contact-form::after{box-sizing:border-box}.jd-simple-contact-form .jdscf-row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.jd-simple-contact-form .jdscf-row,.jd-simple-contact-form .jdscf-row::before,.jd-simple-contact-form .jdscf-row::after{box-sizing:border-box}.jd-simple-contact-form .jdscf-no-gutters{margin-right:0;margin-left:0}.jd-simple-contact-form .jdscf-no-gutters>.jdscf-col,.jd-simple-contact-form .jdscf-no-gutters>[class*="jdscf-col-"]{padding-right:0;padding-left:0}.jd-simple-contact-form .jdscf-col-1,.jd-simple-contact-form .jdscf-col-2,.jd-simple-contact-form .jdscf-col-3,.jd-simple-contact-form .jdscf-col-4,.jd-simple-contact-form .jdscf-col-5,.jd-simple-contact-form .jdscf-col-6,.jd-simple-contact-form .jdscf-col-7,.jd-simple-contact-form .jdscf-col-8,.jd-simple-contact-form .jdscf-col-9,.jd-simple-contact-form .jdscf-col-10,.jd-simple-contact-form .jdscf-col-11,.jd-simple-contact-form .jdscf-col-12,.jd-simple-contact-form .jdscf-col,.jd-simple-contact-form .jdscf-col-auto,.jd-simple-contact-form .jdscf-col-sm-1,.jd-simple-contact-form .jdscf-col-sm-2,.jd-simple-contact-form .jdscf-col-sm-3,.jd-simple-contact-form .jdscf-col-sm-4,.jd-simple-contact-form .jdscf-col-sm-5,.jd-simple-contact-form .jdscf-col-sm-6,.jd-simple-contact-form .jdscf-col-sm-7,.jd-simple-contact-form .jdscf-col-sm-8,.jd-simple-contact-form .jdscf-col-sm-9,.jd-simple-contact-form .jdscf-col-sm-10,.jd-simple-contact-form .jdscf-col-sm-11,.jd-simple-contact-form .jdscf-col-sm-12,.jd-simple-contact-form .jdscf-col-sm,.jd-simple-contact-form .jdscf-col-sm-auto,.jd-simple-contact-form .jdscf-col-md-1,.jd-simple-contact-form .jdscf-col-md-2,.jd-simple-contact-form .jdscf-col-md-3,.jd-simple-contact-form .jdscf-col-md-4,.jd-simple-contact-form .jdscf-col-md-5,.jd-simple-contact-form .jdscf-col-md-6,.jd-simple-contact-form .jdscf-col-md-7,.jd-simple-contact-form .jdscf-col-md-8,.jd-simple-contact-form .jdscf-col-md-9,.jd-simple-contact-form .jdscf-col-md-10,.jd-simple-contact-form .jdscf-col-md-11,.jd-simple-contact-form .jdscf-col-md-12,.jd-simple-contact-form .jdscf-col-md,.jd-simple-contact-form .jdscf-col-md-auto,.jd-simple-contact-form .jdscf-col-lg-1,.jd-simple-contact-form .jdscf-col-lg-2,.jd-simple-contact-form .jdscf-col-lg-3,.jd-simple-contact-form .jdscf-col-lg-4,.jd-simple-contact-form .jdscf-col-lg-5,.jd-simple-contact-form .jdscf-col-lg-6,.jd-simple-contact-form .jdscf-col-lg-7,.jd-simple-contact-form .jdscf-col-lg-8,.jd-simple-contact-form .jdscf-col-lg-9,.jd-simple-contact-form .jdscf-col-lg-10,.jd-simple-contact-form .jdscf-col-lg-11,.jd-simple-contact-form .jdscf-col-lg-12,.jd-simple-contact-form .jdscf-col-lg,.jd-simple-contact-form .jdscf-col-lg-auto,.jd-simple-contact-form .jdscf-col-xl-1,.jd-simple-contact-form .jdscf-col-xl-2,.jd-simple-contact-form .jdscf-col-xl-3,.jd-simple-contact-form .jdscf-col-xl-4,.jd-simple-contact-form .jdscf-col-xl-5,.jd-simple-contact-form .jdscf-col-xl-6,.jd-simple-contact-form .jdscf-col-xl-7,.jd-simple-contact-form .jdscf-col-xl-8,.jd-simple-contact-form .jdscf-col-xl-9,.jd-simple-contact-form .jdscf-col-xl-10,.jd-simple-contact-form .jdscf-col-xl-11,.jd-simple-contact-form .jdscf-col-xl-12,.jd-simple-contact-form .jdscf-col-xl,.jd-simple-contact-form .jdscf-col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.jd-simple-contact-form .jdscf-col-1,.jd-simple-contact-form .jdscf-col-2,.jd-simple-contact-form .jdscf-col-3,.jd-simple-contact-form .jdscf-col-4,.jd-simple-contact-form .jdscf-col-5,.jd-simple-contact-form .jdscf-col-6,.jd-simple-contact-form .jdscf-col-7,.jd-simple-contact-form .jdscf-col-8,.jd-simple-contact-form .jdscf-col-9,.jd-simple-contact-form .jdscf-col-10,.jd-simple-contact-form .jdscf-col-11,.jd-simple-contact-form .jdscf-col-12,.jd-simple-contact-form .jdscf-col,.jd-simple-contact-form .jdscf-col-auto,.jd-simple-contact-form .jdscf-col-sm-1,.jd-simple-contact-form .jdscf-col-sm-2,.jd-simple-contact-form .jdscf-col-sm-3,.jd-simple-contact-form .jdscf-col-sm-4,.jd-simple-contact-form .jdscf-col-sm-5,.jd-simple-contact-form .jdscf-col-sm-6,.jd-simple-contact-form .jdscf-col-sm-7,.jd-simple-contact-form .jdscf-col-sm-8,.jd-simple-contact-form .jdscf-col-sm-9,.jd-simple-contact-form .jdscf-col-sm-10,.jd-simple-contact-form .jdscf-col-sm-11,.jd-simple-contact-form .jdscf-col-sm-12,.jd-simple-contact-form .jdscf-col-sm,.jd-simple-contact-form .jdscf-col-sm-auto,.jd-simple-contact-form .jdscf-col-md-1,.jd-simple-contact-form .jdscf-col-md-2,.jd-simple-contact-form .jdscf-col-md-3,.jd-simple-contact-form .jdscf-col-md-4,.jd-simple-contact-form .jdscf-col-md-5,.jd-simple-contact-form .jdscf-col-md-6,.jd-simple-contact-form .jdscf-col-md-7,.jd-simple-contact-form .jdscf-col-md-8,.jd-simple-contact-form .jdscf-col-md-9,.jd-simple-contact-form .jdscf-col-md-10,.jd-simple-contact-form .jdscf-col-md-11,.jd-simple-contact-form .jdscf-col-md-12,.jd-simple-contact-form .jdscf-col-md,.jd-simple-contact-form .jdscf-col-md-auto,.jd-simple-contact-form .jdscf-col-lg-1,.jd-simple-contact-form .jdscf-col-lg-2,.jd-simple-contact-form .jdscf-col-lg-3,.jd-simple-contact-form .jdscf-col-lg-4,.jd-simple-contact-form .jdscf-col-lg-5,.jd-simple-contact-form .jdscf-col-lg-6,.jd-simple-contact-form .jdscf-col-lg-7,.jd-simple-contact-form .jdscf-col-lg-8,.jd-simple-contact-form .jdscf-col-lg-9,.jd-simple-contact-form .jdscf-col-lg-10,.jd-simple-contact-form .jdscf-col-lg-11,.jd-simple-contact-form .jdscf-col-lg-12,.jd-simple-contact-form .jdscf-col-lg,.jd-simple-contact-form .jdscf-col-lg-auto,.jd-simple-contact-form .jdscf-col-xl-1,.jd-simple-contact-form .jdscf-col-xl-2,.jd-simple-contact-form .jdscf-col-xl-3,.jd-simple-contact-form .jdscf-col-xl-4,.jd-simple-contact-form .jdscf-col-xl-5,.jd-simple-contact-form .jdscf-col-xl-6,.jd-simple-contact-form .jdscf-col-xl-7,.jd-simple-contact-form .jdscf-col-xl-8,.jd-simple-contact-form .jdscf-col-xl-9,.jd-simple-contact-form .jdscf-col-xl-10,.jd-simple-contact-form .jdscf-col-xl-11,.jd-simple-contact-form .jdscf-col-xl-12,.jd-simple-contact-form .jdscf-col-xl,.jd-simple-contact-form .jdscf-col-xl-auto,.jd-simple-contact-form .jdscf-col-1::before,.jd-simple-contact-form .jdscf-col-2::before,.jd-simple-contact-form .jdscf-col-3::before,.jd-simple-contact-form .jdscf-col-4::before,.jd-simple-contact-form .jdscf-col-5::before,.jd-simple-contact-form .jdscf-col-6::before,.jd-simple-contact-form .jdscf-col-7::before,.jd-simple-contact-form .jdscf-col-8::before,.jd-simple-contact-form .jdscf-col-9::before,.jd-simple-contact-form .jdscf-col-10::before,.jd-simple-contact-form .jdscf-col-11::before,.jd-simple-contact-form .jdscf-col-12::before,.jd-simple-contact-form .jdscf-col::before,.jd-simple-contact-form .jdscf-col-auto::before,.jd-simple-contact-form .jdscf-col-sm-1::before,.jd-simple-contact-form .jdscf-col-sm-2::before,.jd-simple-contact-form .jdscf-col-sm-3::before,.jd-simple-contact-form .jdscf-col-sm-4::before,.jd-simple-contact-form .jdscf-col-sm-5::before,.jd-simple-contact-form .jdscf-col-sm-6::before,.jd-simple-contact-form .jdscf-col-sm-7::before,.jd-simple-contact-form .jdscf-col-sm-8::before,.jd-simple-contact-form .jdscf-col-sm-9::before,.jd-simple-contact-form .jdscf-col-sm-10::before,.jd-simple-contact-form .jdscf-col-sm-11::before,.jd-simple-contact-form .jdscf-col-sm-12::before,.jd-simple-contact-form .jdscf-col-sm::before,.jd-simple-contact-form .jdscf-col-sm-auto::before,.jd-simple-contact-form .jdscf-col-md-1::before,.jd-simple-contact-form .jdscf-col-md-2::before,.jd-simple-contact-form .jdscf-col-md-3::before,.jd-simple-contact-form .jdscf-col-md-4::before,.jd-simple-contact-form .jdscf-col-md-5::before,.jd-simple-contact-form .jdscf-col-md-6::before,.jd-simple-contact-form .jdscf-col-md-7::before,.jd-simple-contact-form .jdscf-col-md-8::before,.jd-simple-contact-form .jdscf-col-md-9::before,.jd-simple-contact-form .jdscf-col-md-10::before,.jd-simple-contact-form .jdscf-col-md-11::before,.jd-simple-contact-form .jdscf-col-md-12::before,.jd-simple-contact-form .jdscf-col-md::before,.jd-simple-contact-form .jdscf-col-md-auto::before,.jd-simple-contact-form .jdscf-col-lg-1::before,.jd-simple-contact-form .jdscf-col-lg-2::before,.jd-simple-contact-form .jdscf-col-lg-3::before,.jd-simple-contact-form .jdscf-col-lg-4::before,.jd-simple-contact-form .jdscf-col-lg-5::before,.jd-simple-contact-form .jdscf-col-lg-6::before,.jd-simple-contact-form .jdscf-col-lg-7::before,.jd-simple-contact-form .jdscf-col-lg-8::before,.jd-simple-contact-form .jdscf-col-lg-9::before,.jd-simple-contact-form .jdscf-col-lg-10::before,.jd-simple-contact-form .jdscf-col-lg-11::before,.jd-simple-contact-form .jdscf-col-lg-12::before,.jd-simple-contact-form .jdscf-col-lg::before,.jd-simple-contact-form .jdscf-col-lg-auto::before,.jd-simple-contact-form .jdscf-col-xl-1::before,.jd-simple-contact-form .jdscf-col-xl-2::before,.jd-simple-contact-form .jdscf-col-xl-3::before,.jd-simple-contact-form .jdscf-col-xl-4::before,.jd-simple-contact-form .jdscf-col-xl-5::before,.jd-simple-contact-form .jdscf-col-xl-6::before,.jd-simple-contact-form .jdscf-col-xl-7::before,.jd-simple-contact-form .jdscf-col-xl-8::before,.jd-simple-contact-form .jdscf-col-xl-9::before,.jd-simple-contact-form .jdscf-col-xl-10::before,.jd-simple-contact-form .jdscf-col-xl-11::before,.jd-simple-contact-form .jdscf-col-xl-12::before,.jd-simple-contact-form .jdscf-col-xl::before,.jd-simple-contact-form .jdscf-col-xl-auto::before,.jd-simple-contact-form .jdscf-col-1::after,.jd-simple-contact-form .jdscf-col-2::after,.jd-simple-contact-form .jdscf-col-3::after,.jd-simple-contact-form .jdscf-col-4::after,.jd-simple-contact-form .jdscf-col-5::after,.jd-simple-contact-form .jdscf-col-6::after,.jd-simple-contact-form .jdscf-col-7::after,.jd-simple-contact-form .jdscf-col-8::after,.jd-simple-contact-form .jdscf-col-9::after,.jd-simple-contact-form .jdscf-col-10::after,.jd-simple-contact-form .jdscf-col-11::after,.jd-simple-contact-form .jdscf-col-12::after,.jd-simple-contact-form .jdscf-col::after,.jd-simple-contact-form .jdscf-col-auto::after,.jd-simple-contact-form .jdscf-col-sm-1::after,.jd-simple-contact-form .jdscf-col-sm-2::after,.jd-simple-contact-form .jdscf-col-sm-3::after,.jd-simple-contact-form .jdscf-col-sm-4::after,.jd-simple-contact-form .jdscf-col-sm-5::after,.jd-simple-contact-form .jdscf-col-sm-6::after,.jd-simple-contact-form .jdscf-col-sm-7::after,.jd-simple-contact-form .jdscf-col-sm-8::after,.jd-simple-contact-form .jdscf-col-sm-9::after,.jd-simple-contact-form .jdscf-col-sm-10::after,.jd-simple-contact-form .jdscf-col-sm-11::after,.jd-simple-contact-form .jdscf-col-sm-12::after,.jd-simple-contact-form .jdscf-col-sm::after,.jd-simple-contact-form .jdscf-col-sm-auto::after,.jd-simple-contact-form .jdscf-col-md-1::after,.jd-simple-contact-form .jdscf-col-md-2::after,.jd-simple-contact-form .jdscf-col-md-3::after,.jd-simple-contact-form .jdscf-col-md-4::after,.jd-simple-contact-form .jdscf-col-md-5::after,.jd-simple-contact-form .jdscf-col-md-6::after,.jd-simple-contact-form .jdscf-col-md-7::after,.jd-simple-contact-form .jdscf-col-md-8::after,.jd-simple-contact-form .jdscf-col-md-9::after,.jd-simple-contact-form .jdscf-col-md-10::after,.jd-simple-contact-form .jdscf-col-md-11::after,.jd-simple-contact-form .jdscf-col-md-12::after,.jd-simple-contact-form .jdscf-col-md::after,.jd-simple-contact-form .jdscf-col-md-auto::after,.jd-simple-contact-form .jdscf-col-lg-1::after,.jd-simple-contact-form .jdscf-col-lg-2::after,.jd-simple-contact-form .jdscf-col-lg-3::after,.jd-simple-contact-form .jdscf-col-lg-4::after,.jd-simple-contact-form .jdscf-col-lg-5::after,.jd-simple-contact-form .jdscf-col-lg-6::after,.jd-simple-contact-form .jdscf-col-lg-7::after,.jd-simple-contact-form .jdscf-col-lg-8::after,.jd-simple-contact-form .jdscf-col-lg-9::after,.jd-simple-contact-form .jdscf-col-lg-10::after,.jd-simple-contact-form .jdscf-col-lg-11::after,.jd-simple-contact-form .jdscf-col-lg-12::after,.jd-simple-contact-form .jdscf-col-lg::after,.jd-simple-contact-form .jdscf-col-lg-auto::after,.jd-simple-contact-form .jdscf-col-xl-1::after,.jd-simple-contact-form .jdscf-col-xl-2::after,.jd-simple-contact-form .jdscf-col-xl-3::after,.jd-simple-contact-form .jdscf-col-xl-4::after,.jd-simple-contact-form .jdscf-col-xl-5::after,.jd-simple-contact-form .jdscf-col-xl-6::after,.jd-simple-contact-form .jdscf-col-xl-7::after,.jd-simple-contact-form .jdscf-col-xl-8::after,.jd-simple-contact-form .jdscf-col-xl-9::after,.jd-simple-contact-form .jdscf-col-xl-10::after,.jd-simple-contact-form .jdscf-col-xl-11::after,.jd-simple-contact-form .jdscf-col-xl-12::after,.jd-simple-contact-form .jdscf-col-xl::after,.jd-simple-contact-form .jdscf-col-xl-auto::after{box-sizing:border-box}.jd-simple-contact-form .jdscf-col{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-12{flex:0 0 100%;max-width:100%}@media (min-width: 576px){.jd-simple-contact-form .jdscf-col-sm{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-sm-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-sm-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-sm-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-sm-12{flex:0 0 100%;max-width:100%}}@media (min-width: 768px){.jd-simple-contact-form .jdscf-col-md{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-md-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-md-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-md-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-md-12{flex:0 0 100%;max-width:100%}}@media (min-width: 992px){.jd-simple-contact-form .jdscf-col-lg{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-lg-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-lg-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-lg-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-lg-12{flex:0 0 100%;max-width:100%}}@media (min-width: 1200px){.jd-simple-contact-form .jdscf-col-xl{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-xl-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-xl-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-xl-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-xl-12{flex:0 0 100%;max-width:100%}}.jd-simple-contact-form .form-check{position:relative;display:block;padding-left:1.25rem}.jd-simple-contact-form .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.jd-simple-contact-form .form-check-input:disabled ~ .form-check-label{color:#6c757d}.jd-simple-contact-form .form-check-label{margin-bottom:0;max-width:100%}.jd-simple-contact-form .form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.jd-simple-contact-form .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.jd-simple-contact-form .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.jd-simple-contact-form .alert-heading{color:inherit}.jd-simple-contact-form .alert-link{font-weight:700}.jd-simple-contact-form .alert-dismissible{padding-right:4rem}.jd-simple-contact-form .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.jd-simple-contact-form .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.jd-simple-contact-form .alert-primary hr{border-top-color:#9fcdff}.jd-simple-contact-form .alert-primary .alert-link{color:#002752}.jd-simple-contact-form .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.jd-simple-contact-form .alert-secondary hr{border-top-color:#c8cbcf}.jd-simple-contact-form .alert-secondary .alert-link{color:#202326}.jd-simple-contact-form .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.jd-simple-contact-form .alert-success hr{border-top-color:#b1dfbb}.jd-simple-contact-form .alert-success .alert-link{color:#0b2e13}.jd-simple-contact-form .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.jd-simple-contact-form .alert-info hr{border-top-color:#abdde5}.jd-simple-contact-form .alert-info .alert-link{color:#062c33}.jd-simple-contact-form .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.jd-simple-contact-form .alert-warning hr{border-top-color:#ffe8a1}.jd-simple-contact-form .alert-warning .alert-link{color:#533f03}.jd-simple-contact-form .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.jd-simple-contact-form .alert-danger hr{border-top-color:#f1b0b7}.jd-simple-contact-form .alert-danger .alert-link{color:#491217}.jd-simple-contact-form .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.jd-simple-contact-form .alert-light hr{border-top-color:#ececf6}.jd-simple-contact-form .alert-light .alert-link{color:#686868}.jd-simple-contact-form .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.jd-simple-contact-form .alert-dark hr{border-top-color:#b9bbbe}.jd-simple-contact-form .alert-dark .alert-link{color:#040505}.jd-simple-contact-form .clearfix::after{display:block;clear:both;content:""}.jd-simple-contact-form .d-none{display:none !important}.jd-simple-contact-form .d-inline{display:inline !important}.jd-simple-contact-form .d-inline-block{display:inline-block !important}.jd-simple-contact-form .d-block{display:block !important}.jd-simple-contact-form .d-table{display:table !important}.jd-simple-contact-form .d-table-row{display:table-row !important}.jd-simple-contact-form .d-table-cell{display:table-cell !important}.jd-simple-contact-form .d-flex{display:flex !important}.jd-simple-contact-form .d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.jd-simple-contact-form .d-sm-none{display:none !important}.jd-simple-contact-form .d-sm-inline{display:inline !important}.jd-simple-contact-form .d-sm-inline-block{display:inline-block !important}.jd-simple-contact-form .d-sm-block{display:block !important}.jd-simple-contact-form .d-sm-table{display:table !important}.jd-simple-contact-form .d-sm-table-row{display:table-row !important}.jd-simple-contact-form .d-sm-table-cell{display:table-cell !important}.jd-simple-contact-form .d-sm-flex{display:flex !important}.jd-simple-contact-form .d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.jd-simple-contact-form .d-md-none{display:none !important}.jd-simple-contact-form .d-md-inline{display:inline !important}.jd-simple-contact-form .d-md-inline-block{display:inline-block !important}.jd-simple-contact-form .d-md-block{display:block !important}.jd-simple-contact-form .d-md-table{display:table !important}.jd-simple-contact-form .d-md-table-row{display:table-row !important}.jd-simple-contact-form .d-md-table-cell{display:table-cell !important}.jd-simple-contact-form .d-md-flex{display:flex !important}.jd-simple-contact-form .d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.jd-simple-contact-form .d-lg-none{display:none !important}.jd-simple-contact-form .d-lg-inline{display:inline !important}.jd-simple-contact-form .d-lg-inline-block{display:inline-block !important}.jd-simple-contact-form .d-lg-block{display:block !important}.jd-simple-contact-form .d-lg-table{display:table !important}.jd-simple-contact-form .d-lg-table-row{display:table-row !important}.jd-simple-contact-form .d-lg-table-cell{display:table-cell !important}.jd-simple-contact-form .d-lg-flex{display:flex !important}.jd-simple-contact-form .d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.jd-simple-contact-form .d-xl-none{display:none !important}.jd-simple-contact-form .d-xl-inline{display:inline !important}.jd-simple-contact-form .d-xl-inline-block{display:inline-block !important}.jd-simple-contact-form .d-xl-block{display:block !important}.jd-simple-contact-form .d-xl-table{display:table !important}.jd-simple-contact-form .d-xl-table-row{display:table-row !important}.jd-simple-contact-form .d-xl-table-cell{display:table-cell !important}.jd-simple-contact-form .d-xl-flex{display:flex !important}.jd-simple-contact-form .d-xl-inline-flex{display:inline-flex !important}}@media print{.jd-simple-contact-form .d-print-none{display:none !important}.jd-simple-contact-form .d-print-inline{display:inline !important}.jd-simple-contact-form .d-print-inline-block{display:inline-block !important}.jd-simple-contact-form .d-print-block{display:block !important}.jd-simple-contact-form .d-print-table{display:table !important}.jd-simple-contact-form .d-print-table-row{display:table-row !important}.jd-simple-contact-form .d-print-table-cell{display:table-cell !important}.jd-simple-contact-form .d-print-flex{display:flex !important}.jd-simple-contact-form .d-print-inline-flex{display:inline-flex !important}}.jd-simple-contact-form .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.jd-simple-contact-form .text-justify{text-align:justify !important}.jd-simple-contact-form .text-nowrap{white-space:nowrap !important}.jd-simple-contact-form .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jd-simple-contact-form .text-left{text-align:left !important}.jd-simple-contact-form .text-right{text-align:right !important}.jd-simple-contact-form .text-center{text-align:center !important}@media (min-width: 576px){.jd-simple-contact-form .text-sm-left{text-align:left !important}.jd-simple-contact-form .text-sm-right{text-align:right !important}.jd-simple-contact-form .text-sm-center{text-align:center !important}}@media (min-width: 768px){.jd-simple-contact-form .text-md-left{text-align:left !important}.jd-simple-contact-form .text-md-right{text-align:right !important}.jd-simple-contact-form .text-md-center{text-align:center !important}}@media (min-width: 992px){.jd-simple-contact-form .text-lg-left{text-align:left !important}.jd-simple-contact-form .text-lg-right{text-align:right !important}.jd-simple-contact-form .text-lg-center{text-align:center !important}}@media (min-width: 1200px){.jd-simple-contact-form .text-xl-left{text-align:left !important}.jd-simple-contact-form .text-xl-right{text-align:right !important}.jd-simple-contact-form .text-xl-center{text-align:center !important}}.jd-simple-contact-form .text-lowercase{text-transform:lowercase !important}.jd-simple-contact-form .text-uppercase{text-transform:uppercase !important}.jd-simple-contact-form .text-capitalize{text-transform:capitalize !important}.jd-simple-contact-form .font-weight-light{font-weight:300 !important}.jd-simple-contact-form .font-weight-normal{font-weight:400 !important}.jd-simple-contact-form .font-weight-bold{font-weight:700 !important}.jd-simple-contact-form .font-italic{font-style:italic !important}.jd-simple-contact-form .text-white{color:#fff !important}.jd-simple-contact-form .text-primary{color:#007bff !important}.jd-simple-contact-form a.text-primary:hover,.jd-simple-contact-form a.text-primary:focus{color:#0062cc !important}.jd-simple-contact-form .text-secondary{color:#6c757d !important}.jd-simple-contact-form a.text-secondary:hover,.jd-simple-contact-form a.text-secondary:focus{color:#545b62 !important}.jd-simple-contact-form .text-success{color:#28a745 !important}.jd-simple-contact-form a.text-success:hover,.jd-simple-contact-form a.text-success:focus{color:#1e7e34 !important}.jd-simple-contact-form .text-info{color:#17a2b8 !important}.jd-simple-contact-form a.text-info:hover,.jd-simple-contact-form a.text-info:focus{color:#117a8b !important}.jd-simple-contact-form .text-warning{color:#ffc107 !important}.jd-simple-contact-form a.text-warning:hover,.jd-simple-contact-form a.text-warning:focus{color:#d39e00 !important}.jd-simple-contact-form .text-danger{color:#dc3545 !important}.jd-simple-contact-form a.text-danger:hover,.jd-simple-contact-form a.text-danger:focus{color:#bd2130 !important}.jd-simple-contact-form .text-light{color:#f8f9fa !important}.jd-simple-contact-form a.text-light:hover,.jd-simple-contact-form a.text-light:focus{color:#dae0e5 !important}.jd-simple-contact-form .text-dark{color:#343a40 !important}.jd-simple-contact-form a.text-dark:hover,.jd-simple-contact-form a.text-dark:focus{color:#1d2124 !important}.jd-simple-contact-form .text-body{color:#212529 !important}.jd-simple-contact-form .text-muted{color:#6c757d !important}.jd-simple-contact-form .text-black-50{color:rgba(0,0,0,0.5) !important}.jd-simple-contact-form .text-white-50{color:rgba(255,255,255,0.5) !important}.jd-simple-contact-form .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.jd-simple-contact-form .simple-contact-form-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255,255,255,0.6);z-index:1;display:flex;border-radius:.25rem}.jd-simple-contact-form .simple-contact-form-loader .loading{margin:auto;display:block;position:relative;height:2rem;width:2rem;color:#007bff}.jd-simple-contact-form .simple-contact-form-loader .loading:before{border-radius:50%;border:2px solid currentColor;opacity:.15}.jd-simple-contact-form .simple-contact-form-loader .loading:after{-webkit-animation:loader .5s linear;animation:loader .5s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:50%;border:2px solid;border-color:transparent;border-top-color:currentColor;box-shadow:0 0 0 1px transparent}.jd-simple-contact-form .simple-contact-form-loader .loading:before,.jd-simple-contact-form .simple-contact-form-loader .loading:after{width:2rem;height:2rem;margin:-1rem 0 -1rem;position:absolute;content:'';top:50%;left:50%}.jd-simple-contact-form .list-unstyled{margin:0;padding-left:0;list-style:none} -/*# sourceMappingURL=style.css.map */ +.jd-simple-contact-form{position:relative;width:100%;margin-right:auto;margin-left:auto}@-webkit-keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jd-simple-contact-form,.jd-simple-contact-form::before,.jd-simple-contact-form::after{box-sizing:border-box}.jd-simple-contact-form .jdscf-row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.jd-simple-contact-form .jdscf-row,.jd-simple-contact-form .jdscf-row::before,.jd-simple-contact-form .jdscf-row::after{box-sizing:border-box}.jd-simple-contact-form .jdscf-no-gutters{margin-right:0;margin-left:0}.jd-simple-contact-form .jdscf-no-gutters>.jdscf-col,.jd-simple-contact-form .jdscf-no-gutters>[class*="jdscf-col-"]{padding-right:0;padding-left:0}.jd-simple-contact-form .jdscf-col-1,.jd-simple-contact-form .jdscf-col-2,.jd-simple-contact-form .jdscf-col-3,.jd-simple-contact-form .jdscf-col-4,.jd-simple-contact-form .jdscf-col-5,.jd-simple-contact-form .jdscf-col-6,.jd-simple-contact-form .jdscf-col-7,.jd-simple-contact-form .jdscf-col-8,.jd-simple-contact-form .jdscf-col-9,.jd-simple-contact-form .jdscf-col-10,.jd-simple-contact-form .jdscf-col-11,.jd-simple-contact-form .jdscf-col-12,.jd-simple-contact-form .jdscf-col,.jd-simple-contact-form .jdscf-col-auto,.jd-simple-contact-form .jdscf-col-sm-1,.jd-simple-contact-form .jdscf-col-sm-2,.jd-simple-contact-form .jdscf-col-sm-3,.jd-simple-contact-form .jdscf-col-sm-4,.jd-simple-contact-form .jdscf-col-sm-5,.jd-simple-contact-form .jdscf-col-sm-6,.jd-simple-contact-form .jdscf-col-sm-7,.jd-simple-contact-form .jdscf-col-sm-8,.jd-simple-contact-form .jdscf-col-sm-9,.jd-simple-contact-form .jdscf-col-sm-10,.jd-simple-contact-form .jdscf-col-sm-11,.jd-simple-contact-form .jdscf-col-sm-12,.jd-simple-contact-form .jdscf-col-sm,.jd-simple-contact-form .jdscf-col-sm-auto,.jd-simple-contact-form .jdscf-col-md-1,.jd-simple-contact-form .jdscf-col-md-2,.jd-simple-contact-form .jdscf-col-md-3,.jd-simple-contact-form .jdscf-col-md-4,.jd-simple-contact-form .jdscf-col-md-5,.jd-simple-contact-form .jdscf-col-md-6,.jd-simple-contact-form .jdscf-col-md-7,.jd-simple-contact-form .jdscf-col-md-8,.jd-simple-contact-form .jdscf-col-md-9,.jd-simple-contact-form .jdscf-col-md-10,.jd-simple-contact-form .jdscf-col-md-11,.jd-simple-contact-form .jdscf-col-md-12,.jd-simple-contact-form .jdscf-col-md,.jd-simple-contact-form .jdscf-col-md-auto,.jd-simple-contact-form .jdscf-col-lg-1,.jd-simple-contact-form .jdscf-col-lg-2,.jd-simple-contact-form .jdscf-col-lg-3,.jd-simple-contact-form .jdscf-col-lg-4,.jd-simple-contact-form .jdscf-col-lg-5,.jd-simple-contact-form .jdscf-col-lg-6,.jd-simple-contact-form .jdscf-col-lg-7,.jd-simple-contact-form .jdscf-col-lg-8,.jd-simple-contact-form .jdscf-col-lg-9,.jd-simple-contact-form .jdscf-col-lg-10,.jd-simple-contact-form .jdscf-col-lg-11,.jd-simple-contact-form .jdscf-col-lg-12,.jd-simple-contact-form .jdscf-col-lg,.jd-simple-contact-form .jdscf-col-lg-auto,.jd-simple-contact-form .jdscf-col-xl-1,.jd-simple-contact-form .jdscf-col-xl-2,.jd-simple-contact-form .jdscf-col-xl-3,.jd-simple-contact-form .jdscf-col-xl-4,.jd-simple-contact-form .jdscf-col-xl-5,.jd-simple-contact-form .jdscf-col-xl-6,.jd-simple-contact-form .jdscf-col-xl-7,.jd-simple-contact-form .jdscf-col-xl-8,.jd-simple-contact-form .jdscf-col-xl-9,.jd-simple-contact-form .jdscf-col-xl-10,.jd-simple-contact-form .jdscf-col-xl-11,.jd-simple-contact-form .jdscf-col-xl-12,.jd-simple-contact-form .jdscf-col-xl,.jd-simple-contact-form .jdscf-col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.jd-simple-contact-form .jdscf-col-1,.jd-simple-contact-form .jdscf-col-2,.jd-simple-contact-form .jdscf-col-3,.jd-simple-contact-form .jdscf-col-4,.jd-simple-contact-form .jdscf-col-5,.jd-simple-contact-form .jdscf-col-6,.jd-simple-contact-form .jdscf-col-7,.jd-simple-contact-form .jdscf-col-8,.jd-simple-contact-form .jdscf-col-9,.jd-simple-contact-form .jdscf-col-10,.jd-simple-contact-form .jdscf-col-11,.jd-simple-contact-form .jdscf-col-12,.jd-simple-contact-form .jdscf-col,.jd-simple-contact-form .jdscf-col-auto,.jd-simple-contact-form .jdscf-col-sm-1,.jd-simple-contact-form .jdscf-col-sm-2,.jd-simple-contact-form .jdscf-col-sm-3,.jd-simple-contact-form .jdscf-col-sm-4,.jd-simple-contact-form .jdscf-col-sm-5,.jd-simple-contact-form .jdscf-col-sm-6,.jd-simple-contact-form .jdscf-col-sm-7,.jd-simple-contact-form .jdscf-col-sm-8,.jd-simple-contact-form .jdscf-col-sm-9,.jd-simple-contact-form .jdscf-col-sm-10,.jd-simple-contact-form .jdscf-col-sm-11,.jd-simple-contact-form .jdscf-col-sm-12,.jd-simple-contact-form .jdscf-col-sm,.jd-simple-contact-form .jdscf-col-sm-auto,.jd-simple-contact-form .jdscf-col-md-1,.jd-simple-contact-form .jdscf-col-md-2,.jd-simple-contact-form .jdscf-col-md-3,.jd-simple-contact-form .jdscf-col-md-4,.jd-simple-contact-form .jdscf-col-md-5,.jd-simple-contact-form .jdscf-col-md-6,.jd-simple-contact-form .jdscf-col-md-7,.jd-simple-contact-form .jdscf-col-md-8,.jd-simple-contact-form .jdscf-col-md-9,.jd-simple-contact-form .jdscf-col-md-10,.jd-simple-contact-form .jdscf-col-md-11,.jd-simple-contact-form .jdscf-col-md-12,.jd-simple-contact-form .jdscf-col-md,.jd-simple-contact-form .jdscf-col-md-auto,.jd-simple-contact-form .jdscf-col-lg-1,.jd-simple-contact-form .jdscf-col-lg-2,.jd-simple-contact-form .jdscf-col-lg-3,.jd-simple-contact-form .jdscf-col-lg-4,.jd-simple-contact-form .jdscf-col-lg-5,.jd-simple-contact-form .jdscf-col-lg-6,.jd-simple-contact-form .jdscf-col-lg-7,.jd-simple-contact-form .jdscf-col-lg-8,.jd-simple-contact-form .jdscf-col-lg-9,.jd-simple-contact-form .jdscf-col-lg-10,.jd-simple-contact-form .jdscf-col-lg-11,.jd-simple-contact-form .jdscf-col-lg-12,.jd-simple-contact-form .jdscf-col-lg,.jd-simple-contact-form .jdscf-col-lg-auto,.jd-simple-contact-form .jdscf-col-xl-1,.jd-simple-contact-form .jdscf-col-xl-2,.jd-simple-contact-form .jdscf-col-xl-3,.jd-simple-contact-form .jdscf-col-xl-4,.jd-simple-contact-form .jdscf-col-xl-5,.jd-simple-contact-form .jdscf-col-xl-6,.jd-simple-contact-form .jdscf-col-xl-7,.jd-simple-contact-form .jdscf-col-xl-8,.jd-simple-contact-form .jdscf-col-xl-9,.jd-simple-contact-form .jdscf-col-xl-10,.jd-simple-contact-form .jdscf-col-xl-11,.jd-simple-contact-form .jdscf-col-xl-12,.jd-simple-contact-form .jdscf-col-xl,.jd-simple-contact-form .jdscf-col-xl-auto,.jd-simple-contact-form .jdscf-col-1::before,.jd-simple-contact-form .jdscf-col-2::before,.jd-simple-contact-form .jdscf-col-3::before,.jd-simple-contact-form .jdscf-col-4::before,.jd-simple-contact-form .jdscf-col-5::before,.jd-simple-contact-form .jdscf-col-6::before,.jd-simple-contact-form .jdscf-col-7::before,.jd-simple-contact-form .jdscf-col-8::before,.jd-simple-contact-form .jdscf-col-9::before,.jd-simple-contact-form .jdscf-col-10::before,.jd-simple-contact-form .jdscf-col-11::before,.jd-simple-contact-form .jdscf-col-12::before,.jd-simple-contact-form .jdscf-col::before,.jd-simple-contact-form .jdscf-col-auto::before,.jd-simple-contact-form .jdscf-col-sm-1::before,.jd-simple-contact-form .jdscf-col-sm-2::before,.jd-simple-contact-form .jdscf-col-sm-3::before,.jd-simple-contact-form .jdscf-col-sm-4::before,.jd-simple-contact-form .jdscf-col-sm-5::before,.jd-simple-contact-form .jdscf-col-sm-6::before,.jd-simple-contact-form .jdscf-col-sm-7::before,.jd-simple-contact-form .jdscf-col-sm-8::before,.jd-simple-contact-form .jdscf-col-sm-9::before,.jd-simple-contact-form .jdscf-col-sm-10::before,.jd-simple-contact-form .jdscf-col-sm-11::before,.jd-simple-contact-form .jdscf-col-sm-12::before,.jd-simple-contact-form .jdscf-col-sm::before,.jd-simple-contact-form .jdscf-col-sm-auto::before,.jd-simple-contact-form .jdscf-col-md-1::before,.jd-simple-contact-form .jdscf-col-md-2::before,.jd-simple-contact-form .jdscf-col-md-3::before,.jd-simple-contact-form .jdscf-col-md-4::before,.jd-simple-contact-form .jdscf-col-md-5::before,.jd-simple-contact-form .jdscf-col-md-6::before,.jd-simple-contact-form .jdscf-col-md-7::before,.jd-simple-contact-form .jdscf-col-md-8::before,.jd-simple-contact-form .jdscf-col-md-9::before,.jd-simple-contact-form .jdscf-col-md-10::before,.jd-simple-contact-form .jdscf-col-md-11::before,.jd-simple-contact-form .jdscf-col-md-12::before,.jd-simple-contact-form .jdscf-col-md::before,.jd-simple-contact-form .jdscf-col-md-auto::before,.jd-simple-contact-form .jdscf-col-lg-1::before,.jd-simple-contact-form .jdscf-col-lg-2::before,.jd-simple-contact-form .jdscf-col-lg-3::before,.jd-simple-contact-form .jdscf-col-lg-4::before,.jd-simple-contact-form .jdscf-col-lg-5::before,.jd-simple-contact-form .jdscf-col-lg-6::before,.jd-simple-contact-form .jdscf-col-lg-7::before,.jd-simple-contact-form .jdscf-col-lg-8::before,.jd-simple-contact-form .jdscf-col-lg-9::before,.jd-simple-contact-form .jdscf-col-lg-10::before,.jd-simple-contact-form .jdscf-col-lg-11::before,.jd-simple-contact-form .jdscf-col-lg-12::before,.jd-simple-contact-form .jdscf-col-lg::before,.jd-simple-contact-form .jdscf-col-lg-auto::before,.jd-simple-contact-form .jdscf-col-xl-1::before,.jd-simple-contact-form .jdscf-col-xl-2::before,.jd-simple-contact-form .jdscf-col-xl-3::before,.jd-simple-contact-form .jdscf-col-xl-4::before,.jd-simple-contact-form .jdscf-col-xl-5::before,.jd-simple-contact-form .jdscf-col-xl-6::before,.jd-simple-contact-form .jdscf-col-xl-7::before,.jd-simple-contact-form .jdscf-col-xl-8::before,.jd-simple-contact-form .jdscf-col-xl-9::before,.jd-simple-contact-form .jdscf-col-xl-10::before,.jd-simple-contact-form .jdscf-col-xl-11::before,.jd-simple-contact-form .jdscf-col-xl-12::before,.jd-simple-contact-form .jdscf-col-xl::before,.jd-simple-contact-form .jdscf-col-xl-auto::before,.jd-simple-contact-form .jdscf-col-1::after,.jd-simple-contact-form .jdscf-col-2::after,.jd-simple-contact-form .jdscf-col-3::after,.jd-simple-contact-form .jdscf-col-4::after,.jd-simple-contact-form .jdscf-col-5::after,.jd-simple-contact-form .jdscf-col-6::after,.jd-simple-contact-form .jdscf-col-7::after,.jd-simple-contact-form .jdscf-col-8::after,.jd-simple-contact-form .jdscf-col-9::after,.jd-simple-contact-form .jdscf-col-10::after,.jd-simple-contact-form .jdscf-col-11::after,.jd-simple-contact-form .jdscf-col-12::after,.jd-simple-contact-form .jdscf-col::after,.jd-simple-contact-form .jdscf-col-auto::after,.jd-simple-contact-form .jdscf-col-sm-1::after,.jd-simple-contact-form .jdscf-col-sm-2::after,.jd-simple-contact-form .jdscf-col-sm-3::after,.jd-simple-contact-form .jdscf-col-sm-4::after,.jd-simple-contact-form .jdscf-col-sm-5::after,.jd-simple-contact-form .jdscf-col-sm-6::after,.jd-simple-contact-form .jdscf-col-sm-7::after,.jd-simple-contact-form .jdscf-col-sm-8::after,.jd-simple-contact-form .jdscf-col-sm-9::after,.jd-simple-contact-form .jdscf-col-sm-10::after,.jd-simple-contact-form .jdscf-col-sm-11::after,.jd-simple-contact-form .jdscf-col-sm-12::after,.jd-simple-contact-form .jdscf-col-sm::after,.jd-simple-contact-form .jdscf-col-sm-auto::after,.jd-simple-contact-form .jdscf-col-md-1::after,.jd-simple-contact-form .jdscf-col-md-2::after,.jd-simple-contact-form .jdscf-col-md-3::after,.jd-simple-contact-form .jdscf-col-md-4::after,.jd-simple-contact-form .jdscf-col-md-5::after,.jd-simple-contact-form .jdscf-col-md-6::after,.jd-simple-contact-form .jdscf-col-md-7::after,.jd-simple-contact-form .jdscf-col-md-8::after,.jd-simple-contact-form .jdscf-col-md-9::after,.jd-simple-contact-form .jdscf-col-md-10::after,.jd-simple-contact-form .jdscf-col-md-11::after,.jd-simple-contact-form .jdscf-col-md-12::after,.jd-simple-contact-form .jdscf-col-md::after,.jd-simple-contact-form .jdscf-col-md-auto::after,.jd-simple-contact-form .jdscf-col-lg-1::after,.jd-simple-contact-form .jdscf-col-lg-2::after,.jd-simple-contact-form .jdscf-col-lg-3::after,.jd-simple-contact-form .jdscf-col-lg-4::after,.jd-simple-contact-form .jdscf-col-lg-5::after,.jd-simple-contact-form .jdscf-col-lg-6::after,.jd-simple-contact-form .jdscf-col-lg-7::after,.jd-simple-contact-form .jdscf-col-lg-8::after,.jd-simple-contact-form .jdscf-col-lg-9::after,.jd-simple-contact-form .jdscf-col-lg-10::after,.jd-simple-contact-form .jdscf-col-lg-11::after,.jd-simple-contact-form .jdscf-col-lg-12::after,.jd-simple-contact-form .jdscf-col-lg::after,.jd-simple-contact-form .jdscf-col-lg-auto::after,.jd-simple-contact-form .jdscf-col-xl-1::after,.jd-simple-contact-form .jdscf-col-xl-2::after,.jd-simple-contact-form .jdscf-col-xl-3::after,.jd-simple-contact-form .jdscf-col-xl-4::after,.jd-simple-contact-form .jdscf-col-xl-5::after,.jd-simple-contact-form .jdscf-col-xl-6::after,.jd-simple-contact-form .jdscf-col-xl-7::after,.jd-simple-contact-form .jdscf-col-xl-8::after,.jd-simple-contact-form .jdscf-col-xl-9::after,.jd-simple-contact-form .jdscf-col-xl-10::after,.jd-simple-contact-form .jdscf-col-xl-11::after,.jd-simple-contact-form .jdscf-col-xl-12::after,.jd-simple-contact-form .jdscf-col-xl::after,.jd-simple-contact-form .jdscf-col-xl-auto::after{box-sizing:border-box}.jd-simple-contact-form .jdscf-col{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-12{flex:0 0 100%;max-width:100%}@media (min-width: 576px){.jd-simple-contact-form .jdscf-col-sm{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-sm-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-sm-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-sm-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-sm-12{flex:0 0 100%;max-width:100%}}@media (min-width: 768px){.jd-simple-contact-form .jdscf-col-md{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-md-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-md-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-md-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-md-12{flex:0 0 100%;max-width:100%}}@media (min-width: 992px){.jd-simple-contact-form .jdscf-col-lg{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-lg-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-lg-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-lg-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-lg-12{flex:0 0 100%;max-width:100%}}@media (min-width: 1200px){.jd-simple-contact-form .jdscf-col-xl{flex-basis:0;flex-grow:1;max-width:100%}.jd-simple-contact-form .jdscf-col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.jd-simple-contact-form .jdscf-col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.jd-simple-contact-form .jdscf-col-xl-3{flex:0 0 25%;max-width:25%}.jd-simple-contact-form .jdscf-col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.jd-simple-contact-form .jdscf-col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.jd-simple-contact-form .jdscf-col-xl-6{flex:0 0 50%;max-width:50%}.jd-simple-contact-form .jdscf-col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.jd-simple-contact-form .jdscf-col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.jd-simple-contact-form .jdscf-col-xl-9{flex:0 0 75%;max-width:75%}.jd-simple-contact-form .jdscf-col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.jd-simple-contact-form .jdscf-col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.jd-simple-contact-form .jdscf-col-xl-12{flex:0 0 100%;max-width:100%}}.jd-simple-contact-form .form-check{position:relative;display:block;padding-left:1.25rem}.jd-simple-contact-form .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.jd-simple-contact-form .form-check-input:disabled ~ .form-check-label{color:#6c757d}.jd-simple-contact-form .form-check-label{margin-bottom:0;max-width:100%}.jd-simple-contact-form .form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.jd-simple-contact-form .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.jd-simple-contact-form .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.jd-simple-contact-form .alert-heading{color:inherit}.jd-simple-contact-form .alert-link{font-weight:700}.jd-simple-contact-form .alert-dismissible{padding-right:4rem}.jd-simple-contact-form .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.jd-simple-contact-form .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.jd-simple-contact-form .alert-primary hr{border-top-color:#9fcdff}.jd-simple-contact-form .alert-primary .alert-link{color:#002752}.jd-simple-contact-form .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.jd-simple-contact-form .alert-secondary hr{border-top-color:#c8cbcf}.jd-simple-contact-form .alert-secondary .alert-link{color:#202326}.jd-simple-contact-form .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.jd-simple-contact-form .alert-success hr{border-top-color:#b1dfbb}.jd-simple-contact-form .alert-success .alert-link{color:#0b2e13}.jd-simple-contact-form .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.jd-simple-contact-form .alert-info hr{border-top-color:#abdde5}.jd-simple-contact-form .alert-info .alert-link{color:#062c33}.jd-simple-contact-form .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.jd-simple-contact-form .alert-warning hr{border-top-color:#ffe8a1}.jd-simple-contact-form .alert-warning .alert-link{color:#533f03}.jd-simple-contact-form .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.jd-simple-contact-form .alert-danger hr{border-top-color:#f1b0b7}.jd-simple-contact-form .alert-danger .alert-link{color:#491217}.jd-simple-contact-form .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.jd-simple-contact-form .alert-light hr{border-top-color:#ececf6}.jd-simple-contact-form .alert-light .alert-link{color:#686868}.jd-simple-contact-form .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.jd-simple-contact-form .alert-dark hr{border-top-color:#b9bbbe}.jd-simple-contact-form .alert-dark .alert-link{color:#040505}.jd-simple-contact-form .clearfix::after{display:block;clear:both;content:""}.jd-simple-contact-form .d-none{display:none !important}.jd-simple-contact-form .d-inline{display:inline !important}.jd-simple-contact-form .d-inline-block{display:inline-block !important}.jd-simple-contact-form .d-block{display:block !important}.jd-simple-contact-form .d-table{display:table !important}.jd-simple-contact-form .d-table-row{display:table-row !important}.jd-simple-contact-form .d-table-cell{display:table-cell !important}.jd-simple-contact-form .d-flex{display:flex !important}.jd-simple-contact-form .d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.jd-simple-contact-form .d-sm-none{display:none !important}.jd-simple-contact-form .d-sm-inline{display:inline !important}.jd-simple-contact-form .d-sm-inline-block{display:inline-block !important}.jd-simple-contact-form .d-sm-block{display:block !important}.jd-simple-contact-form .d-sm-table{display:table !important}.jd-simple-contact-form .d-sm-table-row{display:table-row !important}.jd-simple-contact-form .d-sm-table-cell{display:table-cell !important}.jd-simple-contact-form .d-sm-flex{display:flex !important}.jd-simple-contact-form .d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.jd-simple-contact-form .d-md-none{display:none !important}.jd-simple-contact-form .d-md-inline{display:inline !important}.jd-simple-contact-form .d-md-inline-block{display:inline-block !important}.jd-simple-contact-form .d-md-block{display:block !important}.jd-simple-contact-form .d-md-table{display:table !important}.jd-simple-contact-form .d-md-table-row{display:table-row !important}.jd-simple-contact-form .d-md-table-cell{display:table-cell !important}.jd-simple-contact-form .d-md-flex{display:flex !important}.jd-simple-contact-form .d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.jd-simple-contact-form .d-lg-none{display:none !important}.jd-simple-contact-form .d-lg-inline{display:inline !important}.jd-simple-contact-form .d-lg-inline-block{display:inline-block !important}.jd-simple-contact-form .d-lg-block{display:block !important}.jd-simple-contact-form .d-lg-table{display:table !important}.jd-simple-contact-form .d-lg-table-row{display:table-row !important}.jd-simple-contact-form .d-lg-table-cell{display:table-cell !important}.jd-simple-contact-form .d-lg-flex{display:flex !important}.jd-simple-contact-form .d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.jd-simple-contact-form .d-xl-none{display:none !important}.jd-simple-contact-form .d-xl-inline{display:inline !important}.jd-simple-contact-form .d-xl-inline-block{display:inline-block !important}.jd-simple-contact-form .d-xl-block{display:block !important}.jd-simple-contact-form .d-xl-table{display:table !important}.jd-simple-contact-form .d-xl-table-row{display:table-row !important}.jd-simple-contact-form .d-xl-table-cell{display:table-cell !important}.jd-simple-contact-form .d-xl-flex{display:flex !important}.jd-simple-contact-form .d-xl-inline-flex{display:inline-flex !important}}@media print{.jd-simple-contact-form .d-print-none{display:none !important}.jd-simple-contact-form .d-print-inline{display:inline !important}.jd-simple-contact-form .d-print-inline-block{display:inline-block !important}.jd-simple-contact-form .d-print-block{display:block !important}.jd-simple-contact-form .d-print-table{display:table !important}.jd-simple-contact-form .d-print-table-row{display:table-row !important}.jd-simple-contact-form .d-print-table-cell{display:table-cell !important}.jd-simple-contact-form .d-print-flex{display:flex !important}.jd-simple-contact-form .d-print-inline-flex{display:inline-flex !important}}.jd-simple-contact-form .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.jd-simple-contact-form .text-justify{text-align:justify !important}.jd-simple-contact-form .text-nowrap{white-space:nowrap !important}.jd-simple-contact-form .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jd-simple-contact-form .text-left{text-align:left !important}.jd-simple-contact-form .text-right{text-align:right !important}.jd-simple-contact-form .text-center{text-align:center !important}@media (min-width: 576px){.jd-simple-contact-form .text-sm-left{text-align:left !important}.jd-simple-contact-form .text-sm-right{text-align:right !important}.jd-simple-contact-form .text-sm-center{text-align:center !important}}@media (min-width: 768px){.jd-simple-contact-form .text-md-left{text-align:left !important}.jd-simple-contact-form .text-md-right{text-align:right !important}.jd-simple-contact-form .text-md-center{text-align:center !important}}@media (min-width: 992px){.jd-simple-contact-form .text-lg-left{text-align:left !important}.jd-simple-contact-form .text-lg-right{text-align:right !important}.jd-simple-contact-form .text-lg-center{text-align:center !important}}@media (min-width: 1200px){.jd-simple-contact-form .text-xl-left{text-align:left !important}.jd-simple-contact-form .text-xl-right{text-align:right !important}.jd-simple-contact-form .text-xl-center{text-align:center !important}}.jd-simple-contact-form .text-lowercase{text-transform:lowercase !important}.jd-simple-contact-form .text-uppercase{text-transform:uppercase !important}.jd-simple-contact-form .text-capitalize{text-transform:capitalize !important}.jd-simple-contact-form .font-weight-light{font-weight:300 !important}.jd-simple-contact-form .font-weight-normal{font-weight:400 !important}.jd-simple-contact-form .font-weight-bold{font-weight:700 !important}.jd-simple-contact-form .font-italic{font-style:italic !important}.jd-simple-contact-form .text-white{color:#fff !important}.jd-simple-contact-form .text-primary{color:#007bff !important}.jd-simple-contact-form a.text-primary:hover,.jd-simple-contact-form a.text-primary:focus{color:#0062cc !important}.jd-simple-contact-form .text-secondary{color:#6c757d !important}.jd-simple-contact-form a.text-secondary:hover,.jd-simple-contact-form a.text-secondary:focus{color:#545b62 !important}.jd-simple-contact-form .text-success{color:#28a745 !important}.jd-simple-contact-form a.text-success:hover,.jd-simple-contact-form a.text-success:focus{color:#1e7e34 !important}.jd-simple-contact-form .text-info{color:#17a2b8 !important}.jd-simple-contact-form a.text-info:hover,.jd-simple-contact-form a.text-info:focus{color:#117a8b !important}.jd-simple-contact-form .text-warning{color:#ffc107 !important}.jd-simple-contact-form a.text-warning:hover,.jd-simple-contact-form a.text-warning:focus{color:#d39e00 !important}.jd-simple-contact-form .text-danger{color:#dc3545 !important}.jd-simple-contact-form a.text-danger:hover,.jd-simple-contact-form a.text-danger:focus{color:#bd2130 !important}.jd-simple-contact-form .text-light{color:#f8f9fa !important}.jd-simple-contact-form a.text-light:hover,.jd-simple-contact-form a.text-light:focus{color:#dae0e5 !important}.jd-simple-contact-form .text-dark{color:#343a40 !important}.jd-simple-contact-form a.text-dark:hover,.jd-simple-contact-form a.text-dark:focus{color:#1d2124 !important}.jd-simple-contact-form .text-body{color:#212529 !important}.jd-simple-contact-form .text-muted{color:#6c757d !important}.jd-simple-contact-form .text-black-50{color:rgba(0,0,0,0.5) !important}.jd-simple-contact-form .text-white-50{color:rgba(255,255,255,0.5) !important}.jd-simple-contact-form .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.jd-simple-contact-form .simple-contact-form-loader{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255,255,255,0.6);z-index:9;display:flex;border-radius:.25rem}.jd-simple-contact-form .simple-contact-form-loader .loading{margin:auto;display:block;position:relative;height:2rem;width:2rem;color:#007bff}.jd-simple-contact-form .simple-contact-form-loader .loading:before{border-radius:50%;border:2px solid currentColor;opacity:.15}.jd-simple-contact-form .simple-contact-form-loader .loading:after{-webkit-animation:loader .5s linear;animation:loader .5s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:50%;border:2px solid;border-color:transparent;border-top-color:currentColor;box-shadow:0 0 0 1px transparent}.jd-simple-contact-form .simple-contact-form-loader .loading:before,.jd-simple-contact-form .simple-contact-form-loader .loading:after{width:2rem;height:2rem;margin:-1rem 0 -1rem;position:absolute;content:'';top:50%;left:50%}.jd-simple-contact-form .list-unstyled{margin:0;padding-left:0;list-style:none} \ No newline at end of file From df746dbb0391a43eb30c0bafd03be0da19d1bffc Mon Sep 17 00:00:00 2001 From: actuallyakash Date: Tue, 26 Feb 2019 12:12:45 +0530 Subject: [PATCH 14/15] Minor Changes --- layouts/fields/file.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/layouts/fields/file.php b/layouts/fields/file.php index 5e574c8..a8dbb16 100644 --- a/layouts/fields/file.php +++ b/layouts/fields/file.php @@ -18,14 +18,13 @@ $params = JComponentHelper::getParams('com_media'); $allowable = array_map('trim', explode(',', $params->get('upload_extensions'))); $allowedMaxSize = $params->get('upload_maxsize'); +$document = JFactory::getDocument(); +$style = '.filesize-err {' + . 'display: none;' + . 'margin-top: 10px;' + . '}'; +$document->addStyleDeclaration($style); ?> -
" type="file" name="jdscf[name; ?>]" class="custom-file-input" > From f2b086189bd8d3321d735a2c5827c54df2a08ff7 Mon Sep 17 00:00:00 2001 From: Chandan Deep Date: Tue, 26 Feb 2019 13:42:12 +0530 Subject: [PATCH 15/15] Month changed --- mod_jdsimplecontactform.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod_jdsimplecontactform.xml b/mod_jdsimplecontactform.xml index 56650b0..d6a4cae 100644 --- a/mod_jdsimplecontactform.xml +++ b/mod_jdsimplecontactform.xml @@ -3,7 +3,7 @@ mod_jdsimplecontactform JoomDev 1.2 - Dec 2019 + Feb 2019 https://www.joomdev.com Copyright (C) 2019 Joomdev, Inc. All rights reserved. GNU General Public License version 2 or later; see LICENSE.txt