1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369:
<?php
if ( !class_exists('Inbound_Shortcodes_Fields') ) {
$path_to_file = explode( 'wp-content', __FILE__ );
$path_to_wp = $path_to_file[0];
require_once( $path_to_wp . '/wp-load.php' );
class Inbound_Shortcodes_Fields {
var $popup,
$options,
$shortcode,
$child_options,
$child_shortcode,
$popup_title,
$no_preview,
$has_child,
$output,
$errors;
function __construct( $popup ) {
$this->popup = $popup;
$this->show();
}
function show() {
global $shortcodes_config;
$fields = apply_filters('inboundnow_forms_settings', $shortcodes_config);
if( isset( $fields[$this->popup]['child'] ) ) {
$this->has_child = true;
}
if( isset( $fields ) && is_array( $fields ) ) {
$this->options = $fields[$this->popup]['options'];
$this->shortcode = $fields[$this->popup]['shortcode'];
$this->popup_title = $fields[$this->popup]['popup_title'];
$this->append_output('<div id="_inbound_shortcodes_output" class="hidden">'.$this->shortcode.'</div>');
$this->append_output('<div id="_inbound_shortcodes_popup" class="hidden">'.$this->popup.'</div>');
$this->append_output('<div id="cpt-form-serialize" class="hidden"></div>');
if( isset( $fields[$this->popup]['no_preview'] ) && $fields[$this->popup]['no_preview'] ) {
$this->append_output( "\n" . '<div id="_inbound_shortcodes_preview" class="hidden">false</div>' );
$this->no_preview = true;
}
$count = 0;
if(is_array($this->options)) {
foreach( $this->options as $key => $option ) {
$first = $key;
$key = 'inbound_shortcode_' . $key;
$uniquekey = 'inbound_shortcode_' . $first . "_" . $count;
$name = ( isset($option['name'])) ? $option['name'] : '';
$desc = ( isset($option['desc'])) ? $option['desc'] : '';
$std = ( isset($option['std']) ) ? $option['std'] : '';
$global = ( isset($option['global']) ) ? $option['global'] : '';
if ($global) {
$uniquekey = $key;
}
$placeholder = (isset($option['placeholder'])) ? $option['placeholder'] : '';
$parent_class = (isset($option['class'])) ? $option['class'] : '';
$row_start = '<tbody class="inbound_tbody inbound_shortcode_parent_tbody parent-'.$key.' '.$parent_class.'">';
if ($key === "inbound_shortcode_form_name") {
$row_start .= '<ol class="steps">
<li class="step-item first active" data-display-options=".main-form-settings"><a href="#inbound_shortcode_parent_tbody" class="step-link">Main Form Settings</a></li>
<li class="step-item" data-display-options=".inbound_shortcode_child_tbody"><a href="#inbound_shortcode_child_tbody" class="step-link">Edit/Add Fields</a></li>
<li class="step-item last" data-display-options=".main-design-settings"><a href="#" class="step-link">Design & Layout</a></li>
</ol>';
}
$row_start .= '<tr class="form-row">';
$row_start .= '<td class="label">' . $name . '</td>';
$row_start .= '<td class="field">';
if( $option['type'] != 'checkbox' ) {
$row_end = '<span class="inbound-shortcodes-form-desc">' . $desc . '</span>';
}
else {
$row_end = '';
}
$row_end .= '</td>';
$row_end .= '</tr>';
$row_end .= '</tbody>';
switch( $option['type'] ) {
case 'text':
$output = $row_start;
$output .= '<input type="text" class="inbound-shortcodes-input '.$key.'" name="'. $uniquekey .'" id="'. $key .'" value="'. $std .'" size="40" placeholder="'.$placeholder.'" />';
$output .= $row_end;
$this->append_output($output);
break;
case 'hidden':
$output = $row_start;
$output .= '<input type="hidden" class="inbound-shortcodes-input '.$key.'" name="'. $uniquekey .'" id="'. $key .'" value="'. $std .'" size="40" placeholder="'.$placeholder.'" />';
$output .= $row_end;
$this->append_output($output);
break;
case 'textarea' :
$output = $row_start;
$output .= '<textarea class="inbound-shortcodes-input inbound-shortcodes-textarea" name="'. $key .'" id="'. $key .'" rows="5" cols="50">'. $std .'</textarea>';
$output .= $row_end;
$this->append_output($output);
break;
case 'select' :
$output = $row_start;
$output .= '<select name="'. $key .'" id="'.$key.'" class="inbound-shortcodes-input select inbound-shortcodes-select">';
if ( isset( $option['options']) && is_array($option['options']) ) {
foreach( $option['options'] as $val => $opt ) {
$selected = ($std == $val) ? ' selected="selected"' : '';
$output .= '<option'. $selected .' value="'. $val .'">'. $opt .'</option>';
}
}
$output .= '</select>';
$output .= $row_end;
$this->append_output($output);
break;
case 'leadlists' :
$output = $row_start;
$output .= '<select multiple name="'. $key .'" id="'.$key.'" class="inbound-shortcodes-input select inbound-shortcodes-select">';
foreach( $option['options'] as $val => $opt ) {
$selected = ($std == $val) ? ' selected="selected"' : '';
$output .= '<option'. $selected .' value="'. $val .'">'. $opt .'</option>';
}
$output .= '</select>';
$output .= '<div class="wp-hidden-children">
<h4><a class="hide-if-no-js" href="#list-add" id="list-add-toggle"> + Add New Lead List </a></h4>
<div class="list-add wp-hidden-child" id="list-add-wrap"><ul class="child-clone-row-form"><li>
<label for="newcategory" class="screen-reader-text">Add New Lead List</label>
<input type="text" aria-required="true" placeholder="New List Name" class="inbound-shortcodes-input inbound_shortcode_notify form-required" id="newformlist" name="newformlist" autocorrect="off" autocomplete="off" style="width: 80%;"></li>';
$output .= '<li><label for="newlist_parent" class="screen-reader-text"> Parent List: </label><select class="postform" id="newlist_parent" name="newlist_parent"><option value="-1">— Parent List —</option>';
$args = array('hide_empty' => false);
$terms = get_terms('wplead_list_category', $args);
foreach($terms as $term){
$term_id=$term->term_id;
$term_name =$term->name;
$parent_level = ($term->parent == 0 ) ? '' : '-';
$output .='<option value="'.$term_id.'" class="level-0">'.$parent_level.$term_name.'</option>';
}
$output .='</select></li>';
$output .='<li><input type="button" value="Add New Lead List" class="button button-primary" data-wp-lists="add:listchecklist:list-add" id="list-add-submit"></li></ul><span id="list-ajax-response"></span></div></div>';
$output .= $row_end;
$this->append_output($output);
break;
case 'leadtags' :
$output = $row_start;
$output .= '<select multiple name="'. $key .'" id="'.$key.'" class="inbound-shortcodes-input select inbound-shortcodes-select">';
foreach( $option['options'] as $val => $opt ) {
$selected = ($std == $val) ? ' selected="selected"' : '';
$output .= '<option'. $selected .' value="'. $val .'">'. $opt .'</option>';
}
$output .= '</select>';
$output .= $row_end;
$this->append_output($output);
break;
case 'multiselect' :
$output = $row_start;
$output .= '<select multiple name="'. $key .'" id="'.$key.'" class="inbound-shortcodes-input select inbound-shortcodes-select">';
foreach( $option['options'] as $val => $opt ) {
$selected = ($std == $val) ? ' selected="selected"' : '';
$output .= '<option'. $selected .' value="'. $val .'">'. $opt .'</option>';
}
$output .= '</select>';
$output .= $row_end;
$this->append_output($output);
break;
case 'checkbox' :
$output = $row_start;
$output .= '<label for="'.$key.'">';
$output .= '<input type="checkbox" class="inbound-shortcodes-input inbound-shortcodes-checkbox" name="'.$key.'" id="'.$key.'"'. checked( $std, 1, false) .' />';
$output .= ' <span class="inbound-shortcodes-form-desc">';
$output .= $desc .'</span></label>';
$output .= $row_end;
$this->append_output($output);
break;
case 'helper-block' :
$output = $row_start;
$output .= $row_end;
$this->append_output($output);
break;
case 'colorpicker':
$output = $row_start;
$output .= '<input type="color" class="inbound-shortcodes-input '.$key.'" name="'. $uniquekey .'" id="'. $key .'" value="'. $std .'" size="40" placeholder="'.$placeholder.'" />';
$output .= $row_end;
$this->append_output($output);
break;
case 'cta' :
$args = array('post_type' => 'wp-call-to-action', 'numberposts' => -1);
$cta_post_type = get_posts($args);
$output = $row_start;
$output .= '<select multiple name="insert_inbound_cta[]"" id="insert_inbound_cta">';
foreach ($cta_post_type as $cta) {
$this_id = $cta->ID;
$post_title = $cta->post_title;
$this_link = get_permalink( $this_id );
$this_link = preg_replace('/\?.*/', '', $this_link);
$output .= '<option value="'.$this_id.'" rel="" >'.$post_title.'</option>';
}
$output .= '</select></div></div>';
$output .= $row_end;
$this->append_output($output);
break;
}
$count++;
}
}
if( isset( $fields[$this->popup]['child'] ) ) {
$this->child_options = $fields[$this->popup]['child']['options'];
$this->child_shortcode = $fields[$this->popup]['child']['shortcode'];
$parent_row_start = '<tbody class="inbound_tbody inbound_shortcode_child_tbody">';
$parent_row_start .= '<tr class="form-row has-child">';
$parent_row_start .= '<td><a href="#" id="form-child-add" class="button button-secondary">'.$fields[$this->popup]['child']['clone'].'</a>';
$parent_row_start .= '<div class="child-clone-rows">';
$parent_row_start .= '<div id="_inbound_shortcodes_child_output" class="hidden">'.$this->child_shortcode.'</div>';
$parent_row_start .= '<div id="field_instructions">Drag and drop fields to reorder.</div>';
$parent_row_start .= '<div class="child-clone-row"><span class="form-field-row-number">1</span><span class="inbound_field_type"></span><a class="child-clone-row-remove child-options-toggles">Remove</a><a href="#" class="child-clone-row-shrink child-options-toggles ">Minimize</a><a href="#" class="child-clone-row-exact child-options-toggles ">Clone</a>';
$parent_row_start .= '<ul class="child-clone-row-form">';
$this->append_output( $parent_row_start );
$count = 1;
foreach( $this->child_options as $key => $option ) {
$first = $key;
$uniquekey = 'inbound_shortcode_' . $first . "_" . $count;
$hide_class = ($count > 1) ? 'minimize-class' : '';
$text_class = ($count == 1) ? ' inbound-form-label-input' : '';
$original_key = $key;
$key = 'inbound_shortcode_' . $key;
$name = ( isset($option['name'])) ? $option['name'] : '';
$desc = ( isset($option['desc'])) ? $option['desc'] : '';
$std = ( isset($option['std']) ) ? $option['std'] : '';
$type = ( isset($option['type']) ) ? $option['type'] : '';
$tab_class = (isset($option['class'])) ? " inbound-tab-class-".$option['class'] : '';
$placeholder = (isset($option['placeholder'])) ? $option['placeholder'] : '';
$field_class = (isset($option['class'])) ? ' ' . $option['class'] : '';
$dynamic_hide = (isset($option['reveal_on'])) ? ' inbound-hidden-row' : '';
$reveal_on = (isset($option['reveal_on'])) ? ' reveal-' . $option['reveal_on'] : '';
$child_row_start = '<li class="child-clone-row-form-row '.$hide_class . $dynamic_hide . $reveal_on. $tab_class.'">';
$child_row_start .= '<div class="child-clone-row-label row-class-'.$type.'">';
$child_row_start .= '<label>' . $option['name'] . '</label>';
$child_row_start .= '</div>';
$child_row_start .= '<div class="child-clone-row-field row-class-'.$type.' row-child-class-'.$type.'">';
if( $option['type'] != 'checkbox' ) {
$child_row_end = '<span class="child-clone-row-desc">'.$desc.'</span>';
}
else {
$child_row_end = '';
}
$child_row_end .= '</div>';
$child_row_end .= '</li>';
switch( $option['type'] ) {
case 'helper-block' :
$child_output = $child_row_start;
$child_output .= $child_row_end;
$this->append_output($child_output);
break;
case 'text' :
$child_output = $child_row_start;
$child_output .= '<input type="text" data-conditional-hide="'.$reveal_on.'" class="inbound-shortcodes-child-input'.$text_class.'" name="'. $uniquekey .'" id="'. $key .'" placeholder="'.$placeholder.'" value="'. $std .'" />';
$child_output .= $child_row_end;
$this->append_output($child_output);
break;
case 'textarea' :
$child_output = $child_row_start;
$child_output .= '<textarea class="inbound-shortcodes-child-input inbound-shortcodes-textarea" name="'. $uniquekey .'" id="'. $key .'">'. $std .'</textarea>';
$child_output .= $child_row_end;
$this->append_output($child_output);
break;
case 'select' :
$child_output = $child_row_start;
$child_output .= '<select data-field-name="'.$original_key.'" name="'. $uniquekey .'" id="'. $key .'" class="inbound-shortcodes-child-input select inbound-shortcodes-select '.$field_class.'">';
foreach( $option['options'] as $value => $option ) {
$selected = ( $std == $value ) ? ' selected="selected"' : '';
$child_output .= '<option'. $selected .' value="'. $value .'">'. $option .'</option>';
}
$child_output .= '</select>';
$child_output .= $child_row_end;
$this->append_output($child_output);
break;
case 'checkbox' :
$child_output = $child_row_start;
$child_output .= '<label for="'.$key.'">';
$child_output .= '<input type="checkbox" class="inbound-shortcodes-child-input inbound-shortcodes-checkbox" name="'. $uniquekey .'" id="'. $key .'" '. checked( $std, 1, false) .' />';
$child_output .= $desc.'</label>';
$child_output .= $child_row_end;
$this->append_output($child_output);
break;
}
$count++;
}
$parent_row_end = '</ul>';
$parent_row_end .= '</div>';
$parent_row_end .= '</div>';
$parent_row_end .= '</td>';
$parent_row_end .= '</tr>';
$parent_row_end .= '</tbody>';
$this->append_output( $parent_row_end );
}
}
}
function append_output( $output ) {
$this->output = $this->output . $output;
}
function reset_output( $output ) {
$this->output = '';
}
function append_error( $error ) {
$this->errors = $this->errors . $error;
}
}
}