/**
  * to_json()
  * 
  * You can use this method to modify the field properties that are added to the JSON object.
  * The JSON object is used by the Backbone Model and the Underscore template.
  * 
  * @param bool $load  Should the value be loaded from the database or use the value from the current instance.
  * @return array
  */
 function to_json($load)
 {
     $field_data = parent::to_json($load);
     // do not delete
     $field_data = array_merge($field_data, array('example_property' => $this->example_property));
     return $field_data;
 }
 function init()
 {
     $this->labels = array('singular_name' => __('Entry', 'crb'), 'plural_name' => __('Entries', 'crb'));
     if (defined('WP_ADMIN') && WP_ADMIN) {
         wp_enqueue_script('jquery-ui-sortable');
     }
     Carbon_Field::init();
 }
 /**
  * @depends testFactory
  */
 public function testEscapedQuotes()
 {
     // correct
     $field = Carbon_Field::factory('text', 'fancy_name');
     // set_value must not alter the data
     $field->set_value('Lorem \\\' ipsum');
     $this->assertEquals($field->get_value(), 'Lorem \\\' ipsum');
     // set_value must strip slashes
     $field->set_value_from_input(array($field->get_name() => 'Lorem \\\' ipsum'));
     $this->assertEquals($field->get_value(), 'Lorem \' ipsum');
 }
 function delete_values(Carbon_Field $field)
 {
     $field_name = $field->get_name();
     foreach ($this->store_data as $key => $value) {
         if (strpos($key, $field_name) === 0) {
             unset($this->store_data[$key]);
         }
     }
 }
 /**
  * @group slow
  */
 public function testSaveGroupAndCheckLoad()
 {
     global $wpdb;
     // prepare container
     $container = new Carbon_Container_ThemeOptions('Test Container');
     $container->setup();
     $container->add_fields(array(Carbon_Field::factory('complex', 'group')->add_fields(array(Carbon_Field::factory('text', 'field1'), Carbon_Field::factory('text', 'field2')), 'group1')->add_fields(array(Carbon_Field::factory('text', 'field3'), Carbon_Field::factory('text', 'field4')), 'group2')));
     // Prepare POST
     $_POST = array('_group' => array('0' => array('group' => '_group1', '_field1' => 'lorem', '_field2' => 'ipsum', '_field3' => 'dolor', '_field4' => 'sit'), '1' => array('group' => '_group2', '_field1' => 'lorem', '_field2' => 'ipsum', '_field3' => 'dolor', '_field4' => 'sit')));
     // execute
     $container->save(123);
     $container->load();
     // check field
     $fields = $container->get_fields();
     $group_fields = $fields[0]->get_values();
     $expected_values = array('_group1' => array(array('_field1', 'lorem'), array('_field2', 'ipsum')), '_group2' => array(array('_field3', 'dolor'), array('_field4', 'sit')));
     $index = 0;
     $this->assertCount(2, $group_fields);
     foreach ($expected_values as $exp_group => $exp_group_values) {
         $group_values = $group_fields[$index];
         $this->assertEquals($group_values['type'], $exp_group);
         unset($group_values['type']);
         foreach ($exp_group_values as $subindex => $expected) {
             $this->assertEquals($group_values[$subindex]->get_name(), $expected[0]);
             $this->assertEquals($group_values[$subindex]->get_value(), $expected[1]);
         }
         $index++;
     }
     // cleanup
     $container->detach();
 }
    function delete_values(Carbon_Field $field)
    {
        global $wpdb;
        $group_names = $field->get_group_names();
        $field_name = $field->get_name();
        $meta_key_constraint = '`meta_key` LIKE "' . $field_name . implode('-%" OR `meta_key` LIKE "' . $field_name, $group_names) . '-%"';
        return $wpdb->query('
			DELETE FROM ' . $wpdb->usermeta . '
			WHERE (' . $meta_key_constraint . ') AND `user_id`="' . intval($this->user_id) . '"
		');
    }
function rb_register_resume_meta_boxes()
{
    Carbon_Container::factory('custom_fields', __('Resume Builder'))->show_on_post_type('rb_resume')->add_fields(array(Carbon_Field::factory('separator', 'rb_resume_shortcode_title', __('Resume Shortcodes', 'resume-builder')), Carbon_Field::factory('html', 'rb_resume_shortcode')->set_html(rb_get_resume_shortcode_help_text()), Carbon_Field::factory('separator', 'rb_resume_sections_title', __('The Resume Builder', 'resume-builder')), Carbon_Field::factory('complex', 'rb_resume_sections', __('Resume Sections', 'resume-builder'))->setup_labels(array('singular_name' => __('Resume Section', 'resume-builder'), 'plural_name' => __('Resume Sections', 'resume-builder')))->add_fields('introduction_block', array(Carbon_Field::factory('text', 'sectiontitle', __('Introduction Title', 'resume-builder')), Carbon_Field::factory('text', 'sectionsubtitle', __('Introduction Subtitle', 'resume-builder')), Carbon_Field::factory('attachment', 'sectionimage', __('Introduction Image', 'resume-builder'))->help_text(__('The image should be sized to 237 x 303 pixels.', 'resume-builder')), Carbon_Field::factory('rich_text', 'sectiontext', __('Introduction Text', 'resume-builder')), Carbon_Field::factory('complex', 'sectionbuttons', __('Introduction Buttons', 'resume-builder'))->setup_labels(array('singular_name' => __('Button', 'resume-builder'), 'plural_name' => __('Buttons', 'resume-builder')))->add_fields(array(Carbon_Field::factory('text', 'label', __('Button Label', 'resume-builder'))->set_required(true), Carbon_Field::factory('text', 'link', __('Button Link', 'resume-builder'))->set_required(true), Carbon_Field::factory('select', 'type', __('Button Style', 'resume-builder'))->set_required(true)->add_options(array('filled' => __('Filled', 'resume-builder'), 'open' => __('Open', 'resume-builder')))))))->add_fields('default_block', array(Carbon_Field::factory('text', 'sectiontitle', __('Section Title', 'resume-builder')), Carbon_Field::factory('complex', 'sectioncontent', __('Section Content', 'resume-builder'))->setup_labels(array('singular_name' => __('Subsection', 'resume-builder'), 'plural_name' => __('Subsections', 'resume-builder')))->add_fields('text_block', array(Carbon_Field::factory('rich_text', 'text', __('Text', 'resume-builder'))->set_required(true)))->add_fields('detailed_row', array(Carbon_Field::factory('text', 'rowtitle', __('Row Title', 'resume-builder')), Carbon_Field::factory('text', 'rowsubtitle', __('Row Subtitle', 'resume-builder')), Carbon_Field::factory('text', 'rowsidetext', __('Row Side Text', 'resume-builder')), Carbon_Field::factory('rich_text', 'rowtext', __('Row Text', 'resume-builder')))))), Carbon_Field::factory('separator', 'rb_resume_widget', __('Resume Widgets', 'resume-builder')), Carbon_Field::factory('text', 'rb_resume_widget_contacts_title', __('Contact Info Title', 'resume-builder')), Carbon_Field::factory('text', 'rb_resume_widget_contacts_email', __('Email', 'resume-builder')), Carbon_Field::factory('text', 'rb_resume_widget_contacts_phone', __('Phone', 'resume-builder')), Carbon_Field::factory('text', 'rb_resume_widget_contacts_website', __('Website', 'resume-builder')), Carbon_Field::factory('text', 'rb_resume_widget_contacts_address', __('Address', 'resume-builder')), Carbon_Field::factory('text', 'rb_resume_widget_skills_title', __('Skills Title', 'resume-builder')), Carbon_Field::factory('complex', 'rb_resume_widget_skills', __('Skills', 'resume-builder'))->setup_labels(array('singular_name' => __('Skill', 'resume-builder'), 'plural_name' => __('Skills', 'resume-builder')))->add_fields(array(Carbon_Field::factory('text', 'title', __('Title', 'resume-builder')), Carbon_Field::factory('select', 'rating', __('Star Rating', 'resume-builder'))->add_options(rb_generate_rating()), Carbon_Field::factory('textarea', 'text', __('Description', 'resume-builder'))))));
}
 function get_label()
 {
     $label = parent::get_label();
     return '<h3 class="title carbon-separator">' . $label . '</h3>';
 }
 function to_json($load)
 {
     $field_data = parent::to_json($load);
     $field_data = array_merge($field_data, array('html' => $this->field_html));
     return $field_data;
 }