name = 'Typography'; /* * label (string) Multiple words, can include spaces, visible when selecting a field type */ $this->label = __('Typography', 'acf-typography'); /* * category (string) basic | content | choice | relational | jquery | layout | CUSTOM GROUP NAME */ $this->category = 'content'; /* * defaults (array) Array of default settings which are merged into the field object. These are used later in settings */ $this->defaults = array( 'display_properties' => array(), 'required_properties' => array(), 'font_size' => 15, 'font_weight' => '400', 'font_family' => 'Arial, Helvetica, sans-serif', 'font_style' => 'normal', 'font_variant' => 'normal', 'font_stretch' => 'normal', 'text_align' => 'left', 'letter_spacing' => 0, 'text_decoration' => 'none', 'text_color' => '#000', 'text_transform' => 'none' ); $this->font_family = array( 'Arial, Helvetica, sans-serif' => 'Arial, Helvetica, sans-serif', '"Arial Black", Gadget, sans-serif' => '"Arial Black", Gadget, sans-serif', '"Bookman Old Style", serif' => '"Bookman Old Style", serif', '"Comic Sans MS", cursive' => '"Comic Sans MS", cursive', 'Courier, monospace' => 'Courier, monospace', 'Garamond, serif' => 'Garamond, serif', 'Georgia, serif' => 'Georgia, serif', 'Impact, Charcoal, sans-serif' => 'Impact, Charcoal, sans-serif', '"Lucida Console", Monaco, monospace' => '"Lucida Console", Monaco, monospace', '"Lucida Sans Unicode", "Lucida Grande", sans-serif' => '"Lucida Sans Unicode", "Lucida Grande", sans-serif', '"MS Sans Serif", Geneva, sans-serif' => '"MS Sans Serif", Geneva, sans-serif', '"MS Serif", "New York", sans-serif' => '"MS Serif", "New York", sans-serif', '"Palatino Linotype", "Book Antiqua", Palatino, serif' => '"Palatino Linotype", "Book Antiqua", Palatino, serif', 'Tahoma,Geneva, sans-serif' => 'Tahoma, Geneva, sans-serif', '"Times New Roman", Times,serif' => '"Times New Roman", Times, serif', '"Trebuchet MS", Helvetica, sans-serif' => '"Trebuchet MS", Helvetica, sans-serif', 'Verdana, Geneva, sans-serif' => 'Verdana, Geneva, sans-serif', ); $google_font_family = acft_get_google_font_family(); // get google fonts from json file // merge web-safe-fonts and google fonts arrays if( is_array( $google_font_family ) ) $this->font_family = array_merge( $this->font_family, $google_font_family ); // sort array by array key ksort( $this->font_family ); $this->font_weight = array( '100' => '100', '300' => '300', '400' => '400', '600' => '600', '700' => '700', '800' => '800' ); $this->font_style = array( 'normal' => 'normal', 'italic' => 'italic', 'oblique' => 'oblique', ); $this->font_variant = array( 'normal' => 'normal', 'small-caps' => 'small-caps', 'initial' => 'initial', 'inherit' => 'inherit' ); $this->font_stretch = array( 'ultra-condensed' => 'ultra-condensed', 'extra-condensed' => 'extra-condensed', 'condensed' => 'condensed', 'semi-condensed' => 'semi-condensed', 'normal' => 'normal', 'semi-expanded' => 'semi-expanded', 'expanded' => 'expanded', 'extra-expanded' => 'extra-expanded', 'ultra-expanded' => 'ultra-expanded', 'initial' => 'initial', 'inherit' => 'inherit' ); $this->text_align = array( 'inherit' => 'inherit', 'left' => 'left', 'right' => 'right', 'center' => 'center', 'justify' => 'justify', 'inital' => 'initial' ); $this->text_decoration = array( 'none' => 'none', 'underline' => 'underline', 'overline' => 'overline', 'line-through' => 'line-through', 'initial' => 'initial', 'inherit' => 'inherit' ); $this->text_transform = array( 'none' => 'none', 'capitalize' => 'capitalize', 'uppercase' => 'uppercase', 'lowercase' => 'lowercase', 'initial' => 'initial', 'inherit' => 'inherit' ); /* * l10n (array) Array of strings that are used in JavaScript. This allows JS strings to be translated in PHP and loaded via: * var message = acf._e('FIELD_NAME', 'error'); */ $this->l10n = array( 'error' => __('Error! Please enter a higher value', 'acf-typography'), ); /* * settings (array) Store plugin settings (url, path, version) as a reference for later use with assets */ $this->settings = $settings; // do not delete! parent::__construct(); } /* * render_field_settings() * * Create extra settings for your field. These are visible when editing a field * * @type action * @since 3.6 * @date 23/01/13 * * @param $field (array) the $field being edited * @return n/a */ function render_field_settings( $field ) { /* * acf_render_field_setting * * This function will create a setting for your field. Simply pass the $field parameter and an array of field settings. * The array of settings does not require a `value` or `prefix`; These settings are found from the $field array. * * More than one setting can be added by copy/paste the above code. * Please note that you must also have a matching $defaults value for the field name (font_size) */ acf_render_field_setting( $field, array( 'label' => __('Display Properties','acf-typography'), 'instructions' => __('Select fields to display on edit page','acf-typography'), 'type' => 'checkbox', 'name' => 'display_properties', 'choices' => array( 'font_size' => __("Font Size",'acf-typography'), 'font_family' => __("Font Family",'acf-typography'), 'font_weight' => __("Font Weight",'acf-typography'), 'font_style' => __("Font Style",'acf-typography'), 'font_variant' => __("Font Variant",'acf-typography'), 'font_stretch' => __("Font Stretch",'acf-typography'), 'line_height' => __("Line Height",'acf-typography'), 'letter_spacing' => __("Letter Spacing",'acf-typography'), 'text_align' => __("Text Align",'acf-typography'), 'text_color' => __("Text Color",'acf-typography'), 'text_decoration' => __("Text Decoration",'acf-typography'), 'text_transform' => __("Text Transform",'acf-typography'), ), 'layout' => 'horizontal', )); acf_render_field_setting( $field, array( 'label' => __('Required Properties','acf-typography'), 'instructions' => __('Select fields which are required on edit page','acf-typography'), 'type' => 'checkbox', 'name' => 'required_properties', 'choices' => array( 'font_size' => __("Font Size",'acf-typography'), 'font_family' => __("Font Family",'acf-typography'), 'font_weight' => __("Font Weight",'acf-typography'), 'font_style' => __("Font Style",'acf-typography'), 'font_variant' => __("Font Variant",'acf-typography'), 'font_stretch' => __("Font Stretch",'acf-typography'), 'line_height' => __("Line Height",'acf-typography'), 'letter_spacing' => __("Letter Spacing",'acf-typography'), 'text_align' => __("Text Align",'acf-typography'), 'text_color' => __("Text Color",'acf-typography'), 'text_decoration' => __("Text Decoration",'acf-typography'), 'text_transform' => __("Text Transform",'acf-typography'), ), 'layout' => 'horizontal', )); acf_render_field_setting( $field, array( 'label' => __('Font Size','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'number', 'name' => 'font_size', 'append' => 'px' )); acf_render_field_setting( $field, array( 'label' => __('Font Family','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'font_family', 'choices' => $this->font_family, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Font Weight','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'font_weight', 'choices' => $this->font_weight, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Font Style','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'font_style', 'choices' => $this->font_style, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Font Variant','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'font_variant', 'choices' => $this->font_variant, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Font Stretch','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'font_stretch', 'choices' => $this->font_stretch, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Line Height','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'number', 'name' => 'line_height', 'append' => 'px' )); acf_render_field_setting( $field, array( 'label' => __('Letter Spacing','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'number', 'name' => 'letter_spacing', 'append' => 'px' )); acf_render_field_setting( $field, array( 'label' => __('Text Align','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'text_align', 'choices' => $this->text_align, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Text Color','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'text', 'name' => 'text_color', )); acf_render_field_setting( $field, array( 'label' => __('Text Decoration','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'text_decoration', 'choices' => $this->text_decoration, 'layout' => 'horizontal' )); acf_render_field_setting( $field, array( 'label' => __('Text Transform','acf-typography'), 'instructions' => __('Default','acf-typography'), 'type' => 'select', 'name' => 'text_transform', 'choices' => $this->text_transform, 'layout' => 'horizontal' )); } /* * render_field() * * Create the HTML interface for your field * * @param $field (array) the $field being rendered * * @type action * @since 3.6 * @date 23/01/13 * * @param $field (array) the $field being edited * @return n/a */ function render_field( $field ) { $field = array_merge($this->defaults, $field); $key = $field['key']; // create Field HTML if( sizeof($field['display_properties']) > 0){ foreach( $field['display_properties'] as $f ){ $numbers = $selects = array(); $data_required = ''; $required = ''; if( is_array($field['required_properties']) && in_array($f, $field['required_properties']) ){ $required = 'required'; $data_required = 'data-required="1"'; } if( $f == 'font_size' || $f == 'line_height' || $f == 'letter_spacing' ){ $numbers[] = $f; }else if( $f == 'font_family' || $f == 'font_weight' || $f == 'font_style' || $f == 'font_variant' || $f == 'font_stretch' || $f == 'text_align' || $f == 'text_decoration' || $f == 'text_transform' ){ $selects[] = $f; } if( in_array($f, $numbers) ){ ?>