| 1 |
<?php |
| 2 |
|
| 3 |
namespace BitCode\BitForm\Frontend\Form\View\Theme; |
| 4 |
|
| 5 |
final class DefaultTheme extends ThemeBase |
| 6 |
{ |
| 7 |
protected function fileUp($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 8 |
{ |
| 9 |
$name = esc_attr($field_name); |
| 10 |
$name .= isset($field->mul) ? '[]' : null; |
| 11 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 12 |
$upBtnTxt = isset($field->upBtnTxt) ? '<span>' . esc_html($field->upBtnTxt) . '</span>' : ''; |
| 13 |
$maxUpload = isset($field->mxUp) ? 'Max ' . esc_html($field->mxUp) . ' MB' : ''; |
| 14 |
$req = isset($field->req) ? 'required' : ''; |
| 15 |
$mul = isset($field->mul) ? 'multiple' : ''; |
| 16 |
$extention = isset($field->exts) ? "accept='" . esc_attr($field->exts) . "'" : ''; |
| 17 |
return sprintf( |
| 18 |
' <div class="btcd-f-input"> |
| 19 |
<div class="btcd-f-wrp"> |
| 20 |
<div class="btn-wrp"> |
| 21 |
<button class="btcd-inpBtn" type="button"> |
| 22 |
<svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" width="15" height="15"><path d="M13.5 7.5l-5.757 5.757a4.243 4.243 0 01-6-6l5.929-5.929a2.828 2.828 0 014 4l-5.758 5.758a1.414 1.414 0 01-2-2L9.5 3.5" stroke="currentColor" /></svg> |
| 23 |
%1$s |
| 24 |
</button> |
| 25 |
</div> |
| 26 |
<span class="btcd-f-title">No File Chosen</span> |
| 27 |
<small class="f-max">%2$s</small> |
| 28 |
<input id="%3$s" name="%4$s" %5$s %6$s %7$s %8$s type="file" /> |
| 29 |
</div> |
| 30 |
</div>', |
| 31 |
$upBtnTxt, |
| 32 |
$maxUpload, |
| 33 |
$rowID, |
| 34 |
$name, |
| 35 |
$req, |
| 36 |
$mul, |
| 37 |
$extention, |
| 38 |
$isDisabled |
| 39 |
); |
| 40 |
} |
| 41 |
|
| 42 |
protected function submitBtns($field, $style, $field_id) |
| 43 |
{ |
| 44 |
ob_start(); ?> |
| 45 |
<div class="<?php echo esc_attr($style); ?>"> |
| 46 |
<div> |
| 47 |
<div class="btcd-frm-sub <?php 'center' === $field->align ? $this->setSingleValuedAttribute('j-c-c') : ''; ?><?php 'right' === $field->align ? $this->setSingleValuedAttribute('j-c-e') : ''; ?>"> |
| 48 |
<button class="btcd-sub-btn btcd-sub <?php 'md' === $field->btnSiz ? $this->setSingleValuedAttribute('btcd-btn-md') : ''; ?> <?php $field->fulW ? $this->setSingleValuedAttribute('ful-w') : ''; ?>" type="submit" <?php isset($field->name) ? $this->setAttribute('name', $field->name) : '' ?>><?php echo esc_html($field->subBtnTxt) ?></button> |
| 49 |
<?php //{'rstBtnTxt' in attr && <button className={`btcd-sub-btn btcd-rst ${attr.btnSiz === 'md' && 'btcd-btn-md'} ${attr.fulW && 'ful-w'}`} type="button">{attr.rstBtnTxt}</button>} |
| 50 |
?> |
| 51 |
<?php if (!empty($field->rstBtnTxt)) : ?> |
| 52 |
<button class="btcd-sub-btn btcd-rst <?php 'md' === $field->btnSiz ? $this->setSingleValuedAttribute('btcd-btn-md') : ''; ?> <?php $field->fulW ? $this->setSingleValuedAttribute('ful-w') : ''; ?>" type="reset"><?php echo esc_html($field->rstBtnTxt) ?></button> |
| 53 |
<?php endif ?> |
| 54 |
</div> |
| 55 |
</div> |
| 56 |
</div> |
| 57 |
<?php |
| 58 |
return ob_get_clean(); |
| 59 |
} |
| 60 |
|
| 61 |
protected function button($field, $style, $field_name, $formID, $error, $value) |
| 62 |
{ |
| 63 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 64 |
$align = isset($field->align) ? ('center' === $field->align ? 'j-c-c' : ('right' === $field->align ? 'j-c-e' : '')) : ''; |
| 65 |
if ('reset' === $field->btnTyp) { |
| 66 |
$btnCls = 'btcd-rst'; |
| 67 |
$name = ''; |
| 68 |
} else { |
| 69 |
$btnCls = 'btcd-sub'; |
| 70 |
$name = " name='$field_name'"; |
| 71 |
} |
| 72 |
$btnSizCls = 'md' === $field->btnSiz ? 'btcd-btn-md' : ''; |
| 73 |
$btnfulW = !empty($field->fulW) ? 'ful-w' : ''; |
| 74 |
$btnTyp = !empty($field->btnTyp) ? "type='$field->btnTyp'" : ''; |
| 75 |
return sprintf( |
| 76 |
'<div class="btcd-frm-sub %1$s"> |
| 77 |
<button |
| 78 |
class="btcd-sub-btn %2$s %3$s %4$s" |
| 79 |
%5$s |
| 80 |
%6$s |
| 81 |
%7$s |
| 82 |
> |
| 83 |
%8$s |
| 84 |
</button> |
| 85 |
</div>', |
| 86 |
$align, |
| 87 |
$btnCls, |
| 88 |
$btnSizCls, |
| 89 |
$btnfulW, |
| 90 |
$btnTyp, |
| 91 |
$name, |
| 92 |
$isDisabled, |
| 93 |
$field->txt |
| 94 |
); |
| 95 |
} |
| 96 |
|
| 97 |
protected function textField($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 98 |
{ |
| 99 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 100 |
$readonly = empty($field->valid->readonly) ? null : 'readonly'; |
| 101 |
$name = isset($field_name) ? "name='" . esc_attr($field_name) . "'" : ''; |
| 102 |
$ph = isset($field->ph) ? "placeholder='" . esc_attr($field->ph) . "'" : ''; |
| 103 |
$mx = isset($field->mx) ? "max='" . esc_attr($field->mx) . "'" : ''; |
| 104 |
$mn = isset($field->mn) ? "min='" . esc_attr($field->mn) . "'" : ''; |
| 105 |
$val = isset($value) ? "value='" . esc_attr($value) . "'" : ''; |
| 106 |
$required = isset($field->valid->req) ? 'required' : ''; |
| 107 |
|
| 108 |
return sprintf( |
| 109 |
'<input id="%1$s" class="fld fld-%2$s no-drg" type="%3$s" %4$s %5$s %6$s %7$s %8$s %9$s %10$s %11$s/>', |
| 110 |
$rowID, |
| 111 |
$formID, |
| 112 |
$field->typ, |
| 113 |
$name, |
| 114 |
$ph, |
| 115 |
$mx, |
| 116 |
$mn, |
| 117 |
$val, |
| 118 |
$required, |
| 119 |
$isDisabled, |
| 120 |
$readonly |
| 121 |
); |
| 122 |
} |
| 123 |
|
| 124 |
protected function textArea($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 125 |
{ |
| 126 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 127 |
$readonly = empty($field->valid->readonly) ? null : 'readonly'; |
| 128 |
$name = isset($field_name) ? "name='" . esc_attr($field_name) . "'" : ''; |
| 129 |
if (isset($field->ph)) { |
| 130 |
$ph = htmlentities($field->ph, ENT_QUOTES); |
| 131 |
} |
| 132 |
$ph = isset($field->ph) ? "placeholder='$ph'" : ''; |
| 133 |
$val = isset($value) ? $value : ''; |
| 134 |
$required = isset($field->valid->req) ? 'required' : ''; |
| 135 |
|
| 136 |
return sprintf( |
| 137 |
'<div> |
| 138 |
<textarea id="%1$s" class="fld fld-%2$s no-drg" type="%3$s" %4$s %5$s %6$s %7$s %8$s>%9$s</textArea> |
| 139 |
</div>', |
| 140 |
$rowID, |
| 141 |
$formID, |
| 142 |
$field->typ, |
| 143 |
$name, |
| 144 |
$ph, |
| 145 |
$required, |
| 146 |
$isDisabled, |
| 147 |
$readonly, |
| 148 |
$val |
| 149 |
); |
| 150 |
} |
| 151 |
|
| 152 |
protected function dropDown($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 153 |
{ |
| 154 |
$defaultValue = null === $value ? [] : array_map('esc_html', $value); |
| 155 |
$isDisabled = empty($field->valid->disabled) ? (empty($field->valid->readonly) ? null : 'msl-disabled') : 'msl-disabled'; |
| 156 |
$mul = isset($field->mul); |
| 157 |
$ph = isset($field->ph) ? "data-placeholder='$field->ph'" : "data-placeholder='Select...'"; |
| 158 |
$val = ''; |
| 159 |
if (isset($field->val)) { |
| 160 |
$dval = is_string($field->val) ? $field->val : implode(',', $field->val); |
| 161 |
$val = "value='$dval'"; |
| 162 |
} |
| 163 |
$options = ''; |
| 164 |
foreach ($field->opt as $selectOption) { |
| 165 |
$label = esc_html($selectOption->label); |
| 166 |
$value = esc_html($selectOption->value); |
| 167 |
// preg_match('/asd 1/', $input_line, $output_array); |
| 168 |
$selected = in_array($value, $defaultValue) ? 'msl-option-selected' : ''; |
| 169 |
$options .= "<option title='$label' class='msl-option vis-n $selected' value='$value'>$label</option>"; |
| 170 |
} |
| 171 |
|
| 172 |
$defaultValuePlacehold = "<div data-msl='true' $ph class='msl-input' contenteditable='true'></div>"; |
| 173 |
if (null !== $defaultValue && 1 === sizeof($defaultValue) && !$mul) { |
| 174 |
$defaultValuePlacehold = "<span class='msl-single-value' data-msl='true'>$defaultValue[0]</span>"; |
| 175 |
} |
| 176 |
return sprintf( |
| 177 |
' <div class="msl-wrp msl-vars no-drg %1$s fld fld-%2$s dpd" style="width: 100%%;"> |
| 178 |
<input name="%3$s" type="hidden" value="%4$s"> |
| 179 |
<div data-msl="true" class="msl"> |
| 180 |
<div data-msl="true" class="msl-input-wrp" tabindex="0"> |
| 181 |
%5$s |
| 182 |
</div> |
| 183 |
<div class="msl-actions msl-flx"> |
| 184 |
<div role="button" aria-label="toggle-menu" class="msl-btn msl-arrow-btn msl-flx"></div> |
| 185 |
</div> |
| 186 |
</div> |
| 187 |
<div class="msl-options"> |
| 188 |
%6$s |
| 189 |
</div> |
| 190 |
</div>', |
| 191 |
$isDisabled, |
| 192 |
$formID, |
| 193 |
$field_name, |
| 194 |
$val, |
| 195 |
$defaultValuePlacehold, |
| 196 |
$options |
| 197 |
); |
| 198 |
} |
| 199 |
|
| 200 |
protected function recaptcha($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 201 |
{ |
| 202 |
return '<div class="btcd-flx j-c-c" style="min-height=inherit"></div>'; |
| 203 |
} |
| 204 |
|
| 205 |
protected function paypal($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 206 |
{ |
| 207 |
return ' <div style="width: auto; min-width: 150px; max-width: 750px; margin-left: auto; margin-right: auto;"></div>'; |
| 208 |
} |
| 209 |
|
| 210 |
protected function razorPay($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 211 |
{ |
| 212 |
$center = 'center' === $field->align ? 'j-c-c' : ''; |
| 213 |
$right = 'right' === $field->align ? 'j-c-e' : ''; |
| 214 |
$btnSiz = 'md' === $field->btnSiz ? 'btcd-btn-md' : ''; |
| 215 |
$fulW = $field->fulW ? 'ful-w' : ''; |
| 216 |
$btnTxt = isset($field->btnTxt) ? esc_html($field->btnTxt) : ''; |
| 217 |
|
| 218 |
return sprintf( |
| 219 |
'<div class="btcd-frm-sub %1$s %2$s"> |
| 220 |
<button class="btcd-sub-btn btcd-sub %3$s %4$s" type="button" name="%5$s"> |
| 221 |
%6$s |
| 222 |
</button> |
| 223 |
</div>', |
| 224 |
$center, |
| 225 |
$right, |
| 226 |
$btnSiz, |
| 227 |
$fulW, |
| 228 |
$field_name, |
| 229 |
$btnTxt |
| 230 |
); |
| 231 |
} |
| 232 |
|
| 233 |
protected function checkBox($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 234 |
{ |
| 235 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 236 |
$readonly = empty($field->valid->readonly) ? null : 'readonly'; |
| 237 |
$round = isset($field->round) ? 'btcd-round' : ''; |
| 238 |
$options = ''; |
| 239 |
|
| 240 |
foreach ($field->opt as $checkBoxOption) { |
| 241 |
$name = isset($field_name) ? "name='" . esc_attr($field_name) . '[]' . "'" : ''; |
| 242 |
$required = isset($checkBoxOption->req) ? 'required' : ''; |
| 243 |
$checked = isset($checkBoxOption->check) ? 'checked' : ''; |
| 244 |
$checkBoxOptionValue = isset($checkBoxOption->val) ? esc_html($checkBoxOption->val) : esc_html($checkBoxOption->lbl); |
| 245 |
$value = null === $value ? '' : $value; |
| 246 |
if ((!is_array($value) && false !== strpos($value, $checkBoxOptionValue)) || (isset($value) && \is_array($value) && $checkBoxOptionValue === $value[array_search($checkBoxOptionValue, $value)])) { |
| 247 |
$checked = 'checked'; |
| 248 |
} |
| 249 |
$options .= sprintf( |
| 250 |
'<label class="btcd-ck-wrp btcd-ck-wrp-%1$s"> |
| 251 |
<span>%2$s</span> |
| 252 |
<input type="checkbox" %3$s %4$s %5$s value="%6$s" %7$s %8$s/> |
| 253 |
<span class="btcd-mrk ck"></span> |
| 254 |
</label>', |
| 255 |
$formID, |
| 256 |
$checkBoxOption->lbl, |
| 257 |
$checked, |
| 258 |
$required, |
| 259 |
$name, |
| 260 |
$checkBoxOptionValue, |
| 261 |
$isDisabled, |
| 262 |
$readonly |
| 263 |
); |
| 264 |
} |
| 265 |
|
| 266 |
return sprintf( |
| 267 |
'<div class="no-drg fld btcd-ck-con %1$s"> |
| 268 |
%2$s |
| 269 |
</div>', |
| 270 |
$round, |
| 271 |
$options |
| 272 |
); |
| 273 |
} |
| 274 |
|
| 275 |
protected function radioBox($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 276 |
{ |
| 277 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 278 |
$readonly = empty($field->valid->readonly) ? null : 'readonly'; |
| 279 |
$round = isset($field->round) ? 'btcd-round' : ''; |
| 280 |
$options = ''; |
| 281 |
|
| 282 |
foreach ($field->opt as $checkBoxOption) { |
| 283 |
$name = isset($field_name) ? "name='" . esc_attr($field_name) . "'" : ''; |
| 284 |
$required = isset($checkBoxOption->req) ? 'required' : ''; |
| 285 |
$optionValue = esc_html($checkBoxOption->lbl); |
| 286 |
$checked = ''; |
| 287 |
if (isset($checkBoxOption->check) || $checkBoxOption->lbl === $value) { |
| 288 |
$checked = 'checked'; |
| 289 |
} |
| 290 |
$options .= sprintf( |
| 291 |
'<label class="btcd-ck-wrp btcd-ck-wrp-%1$s"> |
| 292 |
<span>%2$s</span> |
| 293 |
<input type="radio" %3$s %4$s %5$s value="%6$s" %7$s %8$s/> |
| 294 |
<span class="btcd-mrk rdo"></span> |
| 295 |
</label>', |
| 296 |
$formID, |
| 297 |
$checkBoxOption->lbl, |
| 298 |
$checked, |
| 299 |
$required, |
| 300 |
$name, |
| 301 |
$optionValue, |
| 302 |
$isDisabled, |
| 303 |
$readonly |
| 304 |
); |
| 305 |
} |
| 306 |
|
| 307 |
return sprintf( |
| 308 |
'<div class="no-drg fld btcd-ck-con %1$s"> |
| 309 |
%2$s |
| 310 |
</div>', |
| 311 |
$round, |
| 312 |
$options |
| 313 |
); |
| 314 |
} |
| 315 |
|
| 316 |
protected function decisionBox($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 317 |
{ |
| 318 |
$isRequired = !empty($field->valid->req) ? 'required' : ''; |
| 319 |
$isChecked = !empty($field->valid->checked) ? 'checked' : ''; |
| 320 |
$isDisabled = empty($field->valid->disabled) ? null : 'disabled'; |
| 321 |
$readonly = empty($field->valid->readonly) ? null : 'readonly'; |
| 322 |
$value = $isChecked ? $field->msg->checked : $field->msg->unchecked; |
| 323 |
$round = isset($field->round) ? 'btcd-round' : ''; |
| 324 |
$size = $isRequired ? '1px' : ''; |
| 325 |
|
| 326 |
$lbl = !empty($field->lbl) ? wp_kses_post($field->lbl) : (isset($field->info) ? wp_kses_post($field->info->lbl) : ''); |
| 327 |
|
| 328 |
return sprintf( |
| 329 |
'<div class="no-drg fld fld-%1$s btcd-ck-con %2$s"> |
| 330 |
<input |
| 331 |
size="height: %3$s, width: %3$s" |
| 332 |
type="checkbox" |
| 333 |
%4$s |
| 334 |
%5$s |
| 335 |
%6$s |
| 336 |
%7$s |
| 337 |
value="%8$s" |
| 338 |
/> |
| 339 |
<label class="btcd-ck-wrp btcd-ck-wrp-%1$s"> |
| 340 |
<span class="decision-content"> |
| 341 |
%9$s |
| 342 |
</span> |
| 343 |
<input type="hidden" value="%8$s" name="%10$s" /> |
| 344 |
<span class="btcd-mrk ck"></span> |
| 345 |
</label> |
| 346 |
</div>', |
| 347 |
$formID, |
| 348 |
$round, |
| 349 |
$size, |
| 350 |
$isDisabled, |
| 351 |
$readonly, |
| 352 |
$isRequired, |
| 353 |
$isChecked, |
| 354 |
$value, |
| 355 |
$lbl, |
| 356 |
$field_name |
| 357 |
); |
| 358 |
} |
| 359 |
|
| 360 |
protected function html($field, $rowID, $field_name, $formID, $error = null, $value = null) |
| 361 |
{ |
| 362 |
$isHidden = !empty($field->valid->hide) && $field->valid->hide ? 'vis-n' : null; |
| 363 |
|
| 364 |
$content = !empty($field->content) ? wp_kses_post($field->content) : ''; |
| 365 |
|
| 366 |
return sprintf( |
| 367 |
'<div class="btcd-fld-itm %1$s %2$s"> |
| 368 |
<div class="fld-wrp fld-wrp-%3$s drag" btcd-fld="decision-box"> |
| 369 |
%4$s |
| 370 |
</div> |
| 371 |
</div>', |
| 372 |
$rowID, |
| 373 |
$isHidden, |
| 374 |
$formID, |
| 375 |
$content |
| 376 |
); |
| 377 |
} |
| 378 |
} |
| 379 |
|