1: <?php
2:
3: 4: 5:
6: class Papi_Property_Datetime extends Papi_Property {
7:
8: 9: 10: 11: 12:
13: public function get_default_settings() {
14: return [
15: 'format' => 'YYYY-MM-DD hh:mm:ss',
16: 'show_seconds' => false,
17: 'show_time' => true,
18: 'show_week_number' => false,
19: 'use_24_hours' => get_locale() === 'sv_SE'
20: ];
21: }
22:
23: 24: 25:
26: public function html() {
27: $settings = $this->get_settings();
28: $value = $this->get_value();
29:
30: $settings_json = [
31: 'i18n' => [
32: 'previousMonth' => __( 'Previous Month', 'papi' ),
33: 'nextMonth' => __( 'Next Month', 'papi' ),
34: 'midnight' => __( 'Midnight', 'papi' ),
35: 'months' => [
36: __( 'January', 'papi' ),
37: __( 'February', 'papi' ),
38: __( 'March', 'papi' ),
39: __( 'April', 'papi' ),
40: __( 'May', 'papi' ),
41: __( 'June', 'papi' ),
42: __( 'July', 'papi' ),
43: __( 'August', 'papi' ),
44: __( 'September', 'papi' ),
45: __( 'October', 'papi' ),
46: __( 'November', 'papi' ),
47: __( 'December', 'papi' )
48: ],
49: 'noon' => __( 'Noon', 'papi' ),
50: 'weekdays' => [
51: __( 'Sunday', 'papi' ),
52: __( 'Monday', 'papi' ),
53: __( 'Tuesday', 'papi' ),
54: __( 'Wednesday', 'papi' ),
55: __( 'Thursday', 'papi' ),
56: __( 'Friday', 'papi' ),
57: __( 'Saturday', 'papi' )
58: ],
59: 'weekdaysShort' => [
60: __( 'Sun', 'papi' ),
61: __( 'Mon', 'papi' ),
62: __( 'Tue', 'papi' ),
63: __( 'Wed', 'papi' ),
64: __( 'Thu', 'papi' ),
65: __( 'Fri', 'papi' ),
66: __( 'Sat', 'papi' )
67: ]
68: ]
69: ];
70:
71:
72: if ( isset( $settings->i18n ) ) {
73: unset( $settings->i18n );
74: }
75:
76:
77: if ( isset( $settings->show_time ) && ! $settings->show_time && isset( $settings->format ) ) {
78: $settings->format = trim(
79: str_replace( 'hh:mm:ss', '', $settings->format )
80: );
81: }
82:
83:
84: foreach ( (array) $settings as $key => $val ) {
85: if ( ! is_string( $key ) ) {
86: continue;
87: }
88:
89: $settings_json[papi_camel_case( $key )] = $val;
90: }
91:
92:
93:
94: if ( isset( $settings_json['use24Hours'] ) ) {
95: $settings_json['use24hour'] = $settings_json['use24Hours'];
96: unset( $settings_json['use24Hours'] );
97: }
98:
99: papi_render_html_tag( 'input', [
100: 'class' => 'papi-property-datetime',
101: 'data-settings' => (object) $settings_json,
102: 'id' => $this->html_id(),
103: 'name' => $this->html_name(),
104: 'type' => 'text',
105: 'value' => $value
106: ] );
107: }
108: }
109: