avatar.php
21 hours ago
boolean.php
21 hours ago
code.php
21 hours ago
color.php
21 hours ago
comment.php
21 hours ago
currency.php
21 hours ago
date.php
21 hours ago
datetime.php
21 hours ago
email.php
21 hours ago
file.php
21 hours ago
heading.php
21 hours ago
html.php
21 hours ago
link.php
21 hours ago
number.php
21 hours ago
oembed.php
21 hours ago
paragraph.php
21 hours ago
password.php
21 hours ago
phone.php
21 hours ago
pick.php
21 hours ago
slug.php
21 hours ago
taxonomy.php
21 hours ago
text.php
21 hours ago
time.php
21 hours ago
website.php
21 hours ago
wysiwyg.php
21 hours ago
html.php
221 lines
| 1 | <?php |
| 2 | |
| 3 | use Pods\Whatsit\Field; |
| 4 | |
| 5 | /** |
| 6 | * @package Pods\Fields |
| 7 | */ |
| 8 | class PodsField_HTML extends PodsField { |
| 9 | |
| 10 | /** |
| 11 | * {@inheritdoc} |
| 12 | */ |
| 13 | public static $group = 'Layout Elements'; |
| 14 | |
| 15 | /** |
| 16 | * {@inheritdoc} |
| 17 | */ |
| 18 | public static $type = 'html'; |
| 19 | |
| 20 | /** |
| 21 | * {@inheritdoc} |
| 22 | */ |
| 23 | public static $label = 'HTML Content'; |
| 24 | |
| 25 | /** |
| 26 | * {@inheritdoc} |
| 27 | */ |
| 28 | public static $prepare = '%s'; |
| 29 | |
| 30 | /** |
| 31 | * {@inheritdoc} |
| 32 | */ |
| 33 | public function setup() { |
| 34 | static::$group = __( 'Layout Elements', 'pods' ); |
| 35 | static::$label = __( 'HTML Content', 'pods' ); |
| 36 | } |
| 37 | |
| 38 | /** |
| 39 | * {@inheritdoc} |
| 40 | */ |
| 41 | public function options() { |
| 42 | return [ |
| 43 | static::$type . '_content' => [ |
| 44 | 'label' => __( 'HTML Content', 'pods' ), |
| 45 | 'type' => 'code', |
| 46 | ], |
| 47 | static::$type . '_no_label' => [ |
| 48 | 'label' => __( 'Disable the form label', 'pods' ), |
| 49 | 'default' => 1, |
| 50 | 'type' => 'boolean', |
| 51 | 'help' => __( 'By disabling the form label, the HTML will show as full width without the label text. Only the HTML content will be displayed in the form.', 'pods' ), |
| 52 | ], |
| 53 | 'output_options' => [ |
| 54 | 'label' => __( 'Output Options', 'pods' ), |
| 55 | 'type' => 'boolean_group', |
| 56 | 'boolean_group' => [ |
| 57 | static::$type . '_trim' => [ |
| 58 | 'label' => __( 'Trim extra whitespace before/after contents', 'pods' ), |
| 59 | 'default' => 1, |
| 60 | 'type' => 'boolean', |
| 61 | ], |
| 62 | static::$type . '_trim_lines' => [ |
| 63 | 'label' => __( 'Trim whitespace at the end of lines', 'pods' ), |
| 64 | 'default' => 0, |
| 65 | 'type' => 'boolean', |
| 66 | ], |
| 67 | static::$type . '_trim_p_brs' => [ |
| 68 | 'label' => __( 'Remove blank lines including empty "p" tags and "br" tags', 'pods' ), |
| 69 | 'default' => 0, |
| 70 | 'type' => 'boolean', |
| 71 | ], |
| 72 | static::$type . '_trim_extra_lines' => [ |
| 73 | 'label' => __( 'Remove extra blank lines (when there are 3+ blank lines, replace with a maximum of 2)', 'pods' ), |
| 74 | 'default' => 0, |
| 75 | 'type' => 'boolean', |
| 76 | ], |
| 77 | static::$type . '_oembed' => [ |
| 78 | 'label' => __( 'Enable oEmbed', 'pods' ), |
| 79 | 'default' => 0, |
| 80 | 'type' => 'boolean', |
| 81 | 'help' => [ |
| 82 | __( 'Embed videos, images, tweets, and other content.', 'pods' ), |
| 83 | 'http://codex.wordpress.org/Embeds', |
| 84 | ], |
| 85 | ], |
| 86 | static::$type . '_wptexturize' => [ |
| 87 | 'label' => __( 'Enable wptexturize', 'pods' ), |
| 88 | 'default' => 1, |
| 89 | 'type' => 'boolean', |
| 90 | 'help' => [ |
| 91 | __( 'Transforms less-beautiful text characters into stylized equivalents.', 'pods' ), |
| 92 | 'http://codex.wordpress.org/Function_Reference/wptexturize', |
| 93 | ], |
| 94 | ], |
| 95 | static::$type . '_convert_chars' => [ |
| 96 | 'label' => __( 'Enable convert_chars', 'pods' ), |
| 97 | 'default' => 1, |
| 98 | 'type' => 'boolean', |
| 99 | 'help' => [ |
| 100 | __( 'Converts text into valid XHTML and Unicode', 'pods' ), |
| 101 | 'http://codex.wordpress.org/Function_Reference/convert_chars', |
| 102 | ], |
| 103 | ], |
| 104 | static::$type . '_wpautop' => [ |
| 105 | 'label' => __( 'Enable wpautop', 'pods' ), |
| 106 | 'default' => 1, |
| 107 | 'type' => 'boolean', |
| 108 | 'help' => [ |
| 109 | __( 'Changes double line-breaks in the text into HTML paragraphs.', 'pods' ), |
| 110 | 'http://codex.wordpress.org/Function_Reference/wpautop', |
| 111 | ], |
| 112 | ], |
| 113 | static::$type . '_allow_shortcode' => [ |
| 114 | 'label' => __( 'Allow Shortcodes', 'pods' ), |
| 115 | 'default' => 0, |
| 116 | 'type' => 'boolean', |
| 117 | 'dependency' => true, |
| 118 | 'help' => [ |
| 119 | __( 'Embed [shortcodes] that help transform your static content into dynamic content.', 'pods' ), |
| 120 | 'http://codex.wordpress.org/Shortcode_API', |
| 121 | ], |
| 122 | ], |
| 123 | ], |
| 124 | ], |
| 125 | ]; |
| 126 | } |
| 127 | |
| 128 | /** |
| 129 | * {@inheritdoc} |
| 130 | */ |
| 131 | public function schema( $options = null ) { |
| 132 | return false; |
| 133 | } |
| 134 | |
| 135 | /** |
| 136 | * {@inheritdoc} |
| 137 | */ |
| 138 | public function input( $name, $value = null, $options = null, $pod = null, $id = null ) { |
| 139 | $options = ( is_array( $options ) || is_object( $options ) ) ? $options : (array) $options; |
| 140 | |
| 141 | // Enforce boolean. |
| 142 | $options[ static::$type . '_no_label' ] = filter_var( pods_v( static::$type . '_no_label', $options, false ), FILTER_VALIDATE_BOOLEAN ); |
| 143 | |
| 144 | // Format content. |
| 145 | $options[ static::$type . '_content' ] = $this->display( $options[ static::$type . '_content' ], $name, $options, $pod, $id ); |
| 146 | |
| 147 | if ( isset( $options['_field_object'] ) && $options['_field_object'] instanceof Field ) { |
| 148 | $options['_field_object']->set_arg( static::$type . '_no_label', $options[ static::$type . '_no_label' ] ); |
| 149 | $options['_field_object']->set_arg( static::$type . '_content', $options[ static::$type . '_content' ] ); |
| 150 | } |
| 151 | |
| 152 | $type = pods_v( 'type', $options, static::$type ); |
| 153 | |
| 154 | $args = compact( array_keys( get_defined_vars() ) ); |
| 155 | $args = (object) $args; |
| 156 | |
| 157 | $this->render_input_script( $args ); |
| 158 | } |
| 159 | |
| 160 | /** |
| 161 | * {@inheritdoc} |
| 162 | */ |
| 163 | public function display( $value = null, $name = null, $options = null, $pod = null, $id = null ) { |
| 164 | // Support passing html_content into the options for custom HTML option layouts. |
| 165 | if ( in_array( $value, [ '', null ], true ) ) { |
| 166 | $value = pods_v( static::$type . '_content', $options, '' ); |
| 167 | } |
| 168 | |
| 169 | if ( $options ) { |
| 170 | $options[ static::$type . '_allow_html' ] = 1; |
| 171 | } |
| 172 | |
| 173 | $value = $this->strip_html( $value, $options ); |
| 174 | $value = $this->strip_shortcodes( $value, $options ); |
| 175 | $value = $this->trim_whitespace( $value, $options ); |
| 176 | |
| 177 | if ( 1 === (int) pods_v( static::$type . '_oembed', $options, 0 ) ) { |
| 178 | $embed = $GLOBALS['wp_embed']; |
| 179 | $value = $embed->run_shortcode( $value ); |
| 180 | $value = $embed->autoembed( $value ); |
| 181 | } |
| 182 | |
| 183 | if ( 1 === (int) pods_v( static::$type . '_wptexturize', $options, 1 ) ) { |
| 184 | $value = wptexturize( $value ); |
| 185 | } |
| 186 | |
| 187 | if ( 1 === (int) pods_v( static::$type . '_convert_chars', $options, 1 ) ) { |
| 188 | $value = convert_chars( $value ); |
| 189 | } |
| 190 | |
| 191 | if ( 1 === (int) pods_v( static::$type . '_wpautop', $options, 1 ) ) { |
| 192 | $value = wpautop( $value ); |
| 193 | } |
| 194 | |
| 195 | if ( 1 === (int) pods_v( static::$type . '_allow_shortcode', $options, 0 ) ) { |
| 196 | if ( 1 === (int) pods_v( static::$type . '_wpautop', $options, 1 ) ) { |
| 197 | $value = shortcode_unautop( $value ); |
| 198 | } |
| 199 | |
| 200 | $value = do_shortcode( $value ); |
| 201 | } |
| 202 | |
| 203 | return $value; |
| 204 | } |
| 205 | |
| 206 | /** |
| 207 | * {@inheritdoc} |
| 208 | */ |
| 209 | public function ui( $id, $value, $name = null, $options = null, $fields = null, $pod = null ) { |
| 210 | if ( $options ) { |
| 211 | $options[ static::$type . '_allow_html' ] = 1; |
| 212 | } |
| 213 | |
| 214 | $value = $this->strip_html( $value, $options ); |
| 215 | $value = $this->strip_shortcodes( $value, $options ); |
| 216 | $value = $this->trim_whitespace( $value, $options ); |
| 217 | |
| 218 | return wp_trim_words( $value ); |
| 219 | } |
| 220 | } |
| 221 |