function render_admin_field($field) { ob_start(); $field['placeholder'] = isset($field['placeholder']) ? $field['placeholder'] : ''; $field['value'] = isset($field['value']) ? $field['value'] : get_post_meta($thepostid, $field['id'], true); $field['name'] = isset($field['name']) ? $field['name'] : $field['id']; $field['value_type'] = isset($field['value_type']) ? $field['value_type'] : 'text'; $field['class'] = isset($field['class']) ? $field['class'] : ''; $data_type = empty($field['data_type']) ? '' : $field['data_type']; switch ($data_type) { case 'price': $field['class'] = ' wc_input_price'; $field['value'] = wc_format_localized_price($field['value']); break; case 'decimal': $field['class'] = ' wc_input_decimal'; $field['value'] = wc_format_localized_decimal($field['value']); break; case 'stock': $field['class'] = ' wc_input_stock'; $field['value'] = wc_stock_amount($field['value']); break; case 'url': $field['class'] = ' wc_input_url'; $field['value'] = esc_url($field['value']); break; default: break; } if ($field["location"] != "product_cat_add_form_fields" && $field["location"] != "product_cat_edit_form_fields") { ?> <p class="form-field <?php echo esc_attr($field['name']); ?> _field "> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <input type="text" class="wccaf-field <?php echo esc_attr($field['class']); ?> " name="<?php echo esc_attr($field['name']); ?> " id="<?php echo esc_attr($field['name']); ?> " value="<?php echo esc_attr($field['value']); ?> " placeholder="<?php echo esc_attr($field['placeholder']); ?> " wccaf-type="text" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <?php if (!empty($field['description'])) { if (isset($field['desc_tip']) && "no" != $field['desc_tip']) { ?> <img class="help_tip" data-tip="<?php echo wp_kses_post($field['description']); ?> " src="<?php echo esc_url(wcff()->info["dir"]); ?> /assets/images/help.png" height="16" width="16" /> <?php } else { ?> <span class="description"><?php echo wp_kses_post($field['description']); ?> </span> <?php } } ?> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </p> <?php } else { if ($field["location"] == "product_cat_add_form_fields") { ?> <div class="form-field"> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <input type="text" class="wccaf-field <?php echo esc_attr($field['class']); ?> " name="<?php echo esc_attr($field['name']); ?> " id="<?php echo esc_attr($field['name']); ?> " value="<?php echo esc_attr($field['value']); ?> " placeholder="<?php echo esc_attr($field['placeholder']); ?> " wccaf-type="text" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </div> <?php } else { if ($field["location"] == "product_cat_edit_form_fields") { ?> <tr class="form-field"> <th scope="row" valign="top"><label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label></th> <td> <input type="text" class="wccaf-field <?php echo esc_attr($field['class']); ?> " name="<?php echo esc_attr($field['name']); ?> " id="<?php echo esc_attr($field['name']); ?> " value="<?php echo esc_attr($field['value']); ?> " placeholder="<?php echo esc_attr($field['placeholder']); ?> " wccaf-type="text" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </td> </tr> <?php } } } return ob_get_clean(); }
function wccaf_front_end_enqueue_scripts() { wp_enqueue_style('spectrum-css', wcff()->info['dir'] . 'assets/css/spectrum.css', array(), null); wp_register_script('wccpf-color-picker', wcff()->info['dir'] . 'assets/js/spectrum.js'); wp_enqueue_script('wccpf-color-picker'); }
function render_admin_field($field) { ob_start(); if ($field["location"] != "product_cat_add_form_fields" && $field["location"] != "product_cat_edit_form_fields") { ?> <p class="form-field <?php echo esc_attr($field['name']); ?> _field "> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <input type="email" name="<?php echo esc_attr($field['name']); ?> " id="<?php echo esc_attr($field['name']); ?> " value="<?php echo esc_attr($field['value']); ?> " placeholder="<?php echo esc_attr($field['placeholder']); ?> " class="wccaf-field" wccaf-type="email" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <?php if (!empty($field['description'])) { if (isset($field['desc_tip']) && "no" != $field['desc_tip']) { ?> <img class="help_tip" data-tip="<?php echo wp_kses_post($field['description']); ?> " src="<?php echo esc_url(wcff()->info["dir"]); ?> /assets/images/help.png" height="16" width="16" /> <?php } else { ?> <span class="description"><?php echo wp_kses_post($field['description']); ?> </span> <?php } } ?> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </p> <?php } else { if ($field["location"] == "product_cat_add_form_fields") { ?> <div class="form-field"> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <input type="email" name="<?php echo esc_attr($field['name']); ?> " id="<?php echo esc_attr($field['name']); ?> " value="<?php echo esc_attr($field['value']); ?> " placeholder="<?php echo esc_attr($field['placeholder']); ?> " class="wccaf-field" wccaf-type="email" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </div> <?php } else { if ($field["location"] == "product_cat_edit_form_fields") { ?> <tr class="form-field"> <th scope="row" valign="top"><label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label></th> <td> <input type="email" name="<?php echo esc_attr($field['name']); ?> " id="<?php echo esc_attr($field['name']); ?> " value="<?php echo esc_attr($field['value']); ?> " placeholder="<?php echo esc_attr($field['placeholder']); ?> " class="wccaf-field" wccaf-type="email" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </td> </tr> <?php } } } return ob_get_clean(); }
function wcff_post_admin_listing($hook_suffix) { global $post_type; if ($post_type == "wccpf" || $post_type == "wccaf") { ?> <script type="text/javascript"> (function($) { $(document).ready(function(){ var wrapper = $('<div class="wcff-post-listing-column"></div>'); wrapper.append( $('<div class="wcff-left-column"></div>') ); $("#posts-filter, .subsubsub").wrapAll( wrapper ); var wcff_message_box = '<div class="wcff-message-box">'; wcff_message_box += '<div class="wcff-msg-header"><h3>WC Fields Factory <span><?php echo wcff()->info["version"]; ?> </span></h3></div>'; wcff_message_box += '<div class="wcff-msg-content">'; wcff_message_box += '<h5>Documentations</h5>'; wcff_message_box += '<a href="https://sarkware.com/wc-fields-factory-a-wordpress-plugin-to-add-custom-fields-to-woocommerce-product-page/" title="Product Fields" target="_blank">Product Fields</a>'; wcff_message_box += '<a href="https://sarkware.com/add-custom-fields-woocommerce-admin-products-admin-product-category-admin-product-tabs-using-wc-fields-factory/" title="Admin Fields" target="_blank">Admin Fields</a>'; wcff_message_box += '<a href="https://sarkware.com/wc-fields-factory-api/" title="WC Fields Factory APIs" target="_blank">WC Fields Factory APIs</a>'; wcff_message_box += '<a href="https://sarkware.com/woocommerce-change-product-price-dynamically-while-adding-to-cart-without-using-plugins#override-price-wc-fields-factory" title="Override Product Prices" target="_blank">Override Product Prices</a>'; wcff_message_box += '<a href="https://sarkware.com/how-to-change-wc-fields-factory-custom-product-fields-rendering-behavior/" title="Rendering Behaviour" target="_blank">Rendering Behaviour</a>'; wcff_message_box += '</div>'; wcff_message_box += '<div class="wcff-msg-footer">'; wcff_message_box += '<a href="https://sarkware.com" title="Sarkware" target="_blank">'; wcff_message_box += '<img src="<?php echo wcff()->info["dir"]; ?> /assets/images/sarkware.png" alt="Sarkware" /> by Sarkware'; wcff_message_box += '</a>'; wcff_message_box += '</div>'; $(".wcff-post-listing-column").append( $('<div class="wcff-right-column">'+ wcff_message_box +'</div>') ); }); })(jQuery); </script> <style type="text/css"> #posts-filter p.search-box { display:none; } </style> <?php } }
/** * Called from listen method * Primary handler for all wcff related Ajax request * It drilled down the wcff()->request object and determine what operation has been requested by client * Perform that operation and stores the rersponse on wcff()->response object */ function handleRequest() { $data = array(); $fields = array(); $status = true; $message = "Success"; do_action('wcff/update/post/type', wcff()->request["post_type"]); if (wcff()->request["context"] == "product") { /* Request arrived for Product List */ if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/build/products/list', "wcff_condition_value select"); } } else { if (wcff()->request["context"] == "product_cat") { /* Request arrived for Product Cat List */ if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/build/products/cat/list', "wcff_condition_value select"); } } else { if (wcff()->request["context"] == "product_tag") { if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/build/products/tag/list', "wcff_condition_value select"); } } else { if (wcff()->request["context"] == "product_type") { if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/build/products/type/list', "wcff_condition_value select"); } } else { if (wcff()->request["context"] == "location_product" || wcff()->request["context"] == "location_product_cat") { /* Request arrived for Metabox Context & Priority List */ if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/build/metabox/context/list', "wcff_location_metabox_context_value select"); $data .= apply_filters('wcff/build/metabox/priority/list', "wcff_location_metabox_priorities_value select"); } } else { if (wcff()->request["context"] == "location_product_data") { /* Request arrived for Product Tab List */ if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/build/products/tabs/list', "wcff_location_product_data_value select"); } } else { if (wcff()->request["context"] == "wcff_meta_fields") { /* Request arrived for Meta Fields for one of a wcff field */ if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/render/setup/fields/type=' . wcff()->request["payload"]["type"], wcff()->request["post_type"]); } } else { if (wcff()->request["context"] == "wcff_field_single") { } else { if (wcff()->request["method"] == "GET") { $data = apply_filters('wcff/load/field', wcff()->request["post"], wcff()->request["payload"]["field_key"]); if (!$data) { $data = array(); $message = "Failed to load wcff meta"; } } else { if (wcff()->request["method"] == "POST") { $res = apply_filters('wcff/save/field', wcff()->request["post"], wcff()->request["payload"]); if ($res) { $message = "Successfully Inserted"; $fields = apply_filters('wcff/load/fields', wcff()->request["post"]); $data = apply_filters('wcff/build/fields', $fields); } else { $status = false; $message = "Failed to create custom field"; } } else { if (wcff()->request["method"] == "PUT") { $res = apply_filters('wcff/update/field', wcff()->request["post"], wcff()->request["payload"]); if ($res) { $message = "Successfully Updated"; $fields = apply_filters('wcff/load/fields', wcff()->request["post"]); $data = apply_filters('wcff/build/fields', $fields); } else { $status = false; $message = "Failed to update the custom field"; } } else { $res = apply_filters('wcff/remove/field', wcff()->request["post"], wcff()->request["payload"]["field_key"]); if ($res) { $message = "Successfully removed"; $fields = apply_filters('wcff/load/fields', wcff()->request["post"]); $data = apply_filters('wcff/build/fields', $fields); } else { $status = false; $message = "Failed to remove the custom field"; } } } } } } } } } } } } /* Store Status, Message and Data, which will be flushed out to client later */ wcff()->response = apply_filters('wcff/response', $status, $message, $data); }
function render_admin_field($field) { ob_start(); $select_options = ''; $selected_val = isset($field["default_value"]) ? $field["default_value"] : ""; if (isset($field["value"]) && $field["value"] != "") { $selected_val = $field["value"]; } $choices = explode(";", $field["choices"]); foreach ($choices as $choice) { $attr = ''; $key_val = explode("|", $choice); if ($choice == $field["default_value"]) { $attr = 'selected="selected"'; } else { $attr = ''; } if (isset($field["value"]) && $field["value"] == $selected_val) { if ($key_val[0] == $selected_val) { $attr = 'selected="selected"'; } else { $attr = ""; } } else { if (isset($field["default_value"]) && $field["default_value"] == $selected_val) { if ($choice == $selected_val) { $attr = 'selected="selected"'; } else { $attr = ""; } } } $select_options .= '<option value="' . esc_attr(trim($key_val[0])) . '" ' . $attr . '>' . esc_html(trim($key_val[1])) . '</option>'; } if ($field["location"] != "product_cat_add_form_fields" && $field["location"] != "product_cat_edit_form_fields") { ?> <p class="form-field <?php echo esc_attr($field['name']); ?> _field "> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <select class="wccaf-field" name="<?php echo esc_attr($field["name"]); ?> " wccaf-type="select" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " > <?php echo $select_options; ?> </select> <?php if (!empty($field['description'])) { if (isset($field['desc_tip']) && "no" != $field['desc_tip']) { ?> <img class="help_tip" data-tip="<?php echo wp_kses_post($field['description']); ?> " src="<?php echo esc_url(wcff()->info["dir"]); ?> /assets/images/help.png" height="16" width="16" /> <?php } else { ?> <span class="description"><?php echo wp_kses_post($field['description']); ?> </span> <?php } } ?> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </p> <?php } else { if ($field["location"] == "product_cat_add_form_fields") { ?> <div class="form-field"> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <select class="wccaf-field" name="<?php echo esc_attr($field["name"]); ?> " wccaf-type="select" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " > <?php echo $select_options; ?> </select> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </div> <?php } else { if ($field["location"] == "product_cat_edit_form_fields") { ?> <tr class="form-field"> <th scope="row" valign="top"><label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label></th> <td> <select class="wccaf-field" name="<?php echo esc_attr($field["name"]); ?> " wccaf-type="select" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " > <?php echo $select_options; ?> </select> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </td> </tr> <?php } } } return ob_get_clean(); }
include_once 'classes/wcff-listener.php'; include_once 'classes/wcff-post-form.php'; include_once 'classes/wcff-product-form.php'; if (is_admin()) { include_once 'classes/wcff-admin-form.php'; } include_once 'classes/fields/wcff-fields.php'; include_once 'classes/fields/wcff-text.php'; include_once 'classes/fields/wcff-number.php'; include_once 'classes/fields/wcff-email.php'; include_once 'classes/fields/wcff-hidden.php'; include_once 'classes/fields/wcff-label.php'; include_once 'classes/fields/wcff-textarea.php'; include_once 'classes/fields/wcff-checkbox.php'; include_once 'classes/fields/wcff-radio.php'; include_once 'classes/fields/wcff-select.php'; include_once 'classes/fields/wcff-datepicker.php'; include_once 'classes/fields/wcff-colorpicker.php'; include_once 'classes/fields/wcff-file.php'; } } function wcff() { global $wcff; if (!isset($wcff)) { $wcff = new wcff(); } return $wcff; } wcff(); }
function wccpf_front_end_enqueue_scripts($is_datepicker_there, $is_colorpicker_there) { if (is_shop() || is_product() || is_cart() || is_checkout()) { $wccpf_options = get_option('wccpf_options'); $wccpf_options = is_array($wccpf_options) ? $wccpf_options : array(); $fields_cloning = isset($wccpf_options["fields_cloning"]) ? $wccpf_options["fields_cloning"] : "no"; wp_register_style('wccpf-font-end-style', wcff()->info['dir'] . 'assets/css/wccpf-front-end.css'); wp_enqueue_style('wccpf-font-end-style'); if ($is_datepicker_there) { wp_enqueue_style('wccpf-jquery-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.9.0/themes/base/jquery-ui.css', false, "1.9.0", false); wp_enqueue_style('time-picker-addon', wcff()->info['dir'] . 'assets/css/jquery-ui-timepicker-addon.css', array(), null); wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-datepicker'); wp_register_script('wccpf-datepicker-i18n', wcff()->info['dir'] . 'assets/js/jquery-ui-i18n.min.js'); wp_register_script('wccpf-datetime-picker', wcff()->info['dir'] . 'assets/js/jquery-ui-timepicker-addon.min.js'); wp_enqueue_script('wccpf-datetime-picker'); wp_enqueue_script('wccpf-datepicker-i18n'); } if ($is_colorpicker_there) { wp_register_style('spectrum-css', wcff()->info['dir'] . 'assets/css/spectrum.css'); wp_register_script('wccpf-color-picker', wcff()->info['dir'] . 'assets/js/spectrum.js'); wp_enqueue_style('spectrum-css'); wp_enqueue_script('wccpf-color-picker'); } wp_register_script('wccpf-front-end', wcff()->info['dir'] . 'assets/js/wccpf-front-end.js'); wp_enqueue_script('wccpf-front-end'); } }
function render_admin_field($field) { ob_start(); if ($field["location"] != "product_cat_add_form_fields" && $field["location"] != "product_cat_edit_form_fields") { ?> <p class="form-field <?php echo esc_attr($field['name']); ?> _field "> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <input type="text" name="<?php echo esc_attr($field["name"] . $name_index); ?> " class="wccaf-field wccaf-color wccaf-color-<?php echo esc_attr($field["name"]); ?> " value="<?php echo $field["value"]; ?> " wccaf-type="textbox" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <?php if (!empty($field['description'])) { if (isset($field['desc_tip']) && "no" != $field['desc_tip']) { ?> <img class="help_tip" data-tip="<?php echo wp_kses_post($field['description']); ?> " src="<?php echo esc_url(wcff()->info["dir"]); ?> /assets/images/help.png" height="16" width="16" /> <?php } else { ?> <span class="description"><?php echo wp_kses_post($field['description']); ?> </span> <?php } } ?> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </p> <?php } else { if ($field["location"] == "product_cat_add_form_fields") { ?> <div class="form-field"> <label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label> <input type="text" name="<?php echo esc_attr($field["name"] . $name_index); ?> " class="wccaf-field wccaf-color wccaf-color-<?php echo esc_attr($field["name"]); ?> " value="<?php echo $field["value"]; ?> " wccaf-type="textbox" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </div> <?php } else { if ($field["location"] == "product_cat_edit_form_fields") { ?> <tr class="form-field"> <th scope="row" valign="top"><label for="<?php echo esc_attr($field['name']); ?> "><?php echo wp_kses_post($field['label']); echo isset($field["required"]) && $field["required"] == "yes" ? ' <span>*</span>' : ''; ?> </label></th> <td> <input type="text" name="<?php echo esc_attr($field["name"] . $name_index); ?> " class="wccaf-field wccaf-color wccaf-color-<?php echo esc_attr($field["name"]); ?> " value="<?php echo $field["value"]; ?> " wccaf-type="textbox" wccaf-pattern="mandatory" wccaf-mandatory="<?php echo $field["required"]; ?> " /> <p class="description"><?php echo wp_kses_post($field['description']); ?> </p> <span class="wccaf-validation-message wccaf-is-valid-<?php echo $this->valid; ?> "><?php echo $field["message"]; ?> </span> </td> </tr> <?php } } } ?> <script type="text/javascript"> var $ = jQuery; $( document ).ready(function() { <?php $palettes = null; $colorformat = isset($field["color_format"]) ? $field["color_format"] : "hex"; if (isset($field["palettes"]) && $field["palettes"] != "") { $palettes = explode(";", $field["palettes"]); } ?> $( ".wccaf-color-<?php echo esc_attr($field["name"]); ?> ").spectrum({ preferredFormat: "<?php echo $colorformat; ?> ", <?php $comma = ""; $indexX = 0; $indexY = 0; if (is_array($palettes) && count($palettes) > 0) { if ($field["show_palette_only"] == "yes") { echo "showPaletteOnly: true,"; } echo "showPalette: true,"; echo "palette : ["; foreach ($palettes as $palette) { $indexX = 0; $comma = $indexY == 0 ? "" : ","; echo $comma . "["; $colors = explode(",", $palette); foreach ($colors as $color) { $comma = $indexX == 0 ? "" : ","; echo $comma . "'" . $color . "'"; $indexX++; } echo "]"; $indexY++; } echo "]"; } ?> }); }); </script> <?php return ob_get_clean(); }