class-metabox-form-tab.php
2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
/**
* WPSEO plugin file.
*
* @package WPSEO\Admin
*/
/**
* Generates the HTML for a metabox tab.
*/
class WPSEO_Metabox_Form_Tab implements WPSEO_Metabox_Tab {
/**
* The tab identifier.
*
* @var string
*/
private $name;
/**
* The tab content.
*
* @var string
*/
private $content;
/**
* The tab link content.
*
* @var string
*/
private $link_content;
/**
* Additional tab content class.
*
* @var string
*/
private $tab_class;
/**
* Additional tab link class.
*
* @var string
*/
private $link_class;
/**
* Title attribute on the link span.
*
* @var string
*/
private $link_title;
/**
* Arial label attribute on the link span.
*
* @var string
*/
private $link_aria_label;
/**
* Does it contain a single tab.
*
* @var bool
*/
private $single;
/**
* Constructor.
*
* @param string $name The name of the tab, used as an identifier in the html.
* @param string $content The tab content.
* @param string $link_content The text content of the tab link.
* @param array $options Optional link attributes.
*/
public function __construct( $name, $content, $link_content, array $options = [] ) {
$default_options = [
'tab_class' => '',
'link_class' => '',
'link_title' => '',
'link_aria_label' => '',
'single' => false,
];
$options = array_merge( $default_options, $options );
$this->name = $name;
$this->content = $content;
$this->link_content = $link_content;
$this->tab_class = $options['tab_class'];
$this->link_class = $options['link_class'];
$this->link_title = $options['link_title'];
$this->link_aria_label = $options['link_aria_label'];
$this->single = $options['single'];
}
/**
* Returns the html for the tab link.
*
* @return string
*/
public function link() {
$html = '<li class="%1$s%2$s"><a class="wpseo_tablink%3$s" href="#wpseo_%1$s"%4$s%5$s>%6$s</a></li>';
if ( $this->single ) {
$html = '<li class="%1$s%2$s"><span class="wpseo_tablink%3$s"%4$s%5$s>%6$s</span></li>';
}
return sprintf(
$html,
esc_attr( $this->name ),
( $this->tab_class !== '' ) ? ' ' . esc_attr( $this->tab_class ) : '',
( $this->link_class !== '' ) ? ' ' . esc_attr( $this->link_class ) : '',
( $this->link_title !== '' ) ? ' title="' . esc_attr( $this->link_title ) . '"' : '',
( $this->link_aria_label !== '' ) ? ' aria-label="' . esc_attr( $this->link_aria_label ) . '"' : '',
$this->link_content
);
}
/**
* Returns the html for the tab content.
*
* @return string
*/
public function content() {
return sprintf(
'<div id="%1$s" class="wpseotab %2$s">%3$s</div>',
esc_attr( 'wpseo_' . $this->name ),
esc_attr( $this->name ),
$this->content
);
}
}