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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
| <?php
/**
* The Feature Manager class.
*
* @package All-in-One-SEO-Pack
*/
if ( ! class_exists( 'All_in_One_SEO_Pack_Feature_Manager' ) ) {
/**
* Class All_in_One_SEO_Pack_Feature_Manager
*/
class All_in_One_SEO_Pack_Feature_Manager extends All_in_One_SEO_Pack_Module {
protected $module_info = array();
/**
* All_in_One_SEO_Pack_Feature_Manager constructor.
*
* @param $mod Module.
*/
function __construct( $mod ) {
$this->name = __( 'Feature Manager', 'all-in-one-seo-pack' ); // Human-readable name of the plugin.
$this->prefix = 'aiosp_feature_manager_'; // Option prefix.
$this->file = __FILE__; // The current file.
parent::__construct();
$this->module_info = array(
'sitemap' => array(
'name' => __( 'XML Sitemaps', 'all-in-one-seo-pack' ),
'description' => __( 'Create and manage your XML Sitemaps using this feature and submit your XML Sitemap to Google, Bing/Yahoo and Ask.com.', 'all-in-one-seo-pack' ),
),
'opengraph' => array(
'name' => __( 'Social Meta', 'all-in-one-seo-pack' ),
'description' => __( 'Activate this feature to add Social Meta data to your site to deliver closer integration between your website/blog and Facebook, Twitter, and Google+.', 'all-in-one-seo-pack' ),
),
'robots' => array(
'name' => __( 'Robots.txt', 'all-in-one-seo-pack' ),
'description' => __( 'Generate and validate your robots.txt file to guide search engines through your site.', 'all-in-one-seo-pack' ),
),
'file_editor' => array(
'name' => __( 'File Editor', 'all-in-one-seo-pack' ),
'description' => __( 'Edit your robots.txt file and your .htaccess file to fine-tune your site.', 'all-in-one-seo-pack' ),
),
'importer_exporter' => array(
'name' => __( 'Importer & Exporter', 'all-in-one-seo-pack' ),
'description' => __( 'Exports and imports your All in One SEO Pack plugin settings.', 'all-in-one-seo-pack' ),
),
'bad_robots' => array(
'name' => __( 'Bad Bot Blocker', 'all-in-one-seo-pack' ),
'description' => __( 'Stop badly behaving bots from slowing down your website.', 'all-in-one-seo-pack' ),
),
'performance' => array(
'name' => __( 'Performance', 'all-in-one-seo-pack' ),
'description' => __( 'Optimize performance related to SEO and check your system status.', 'all-in-one-seo-pack' ),
'default' => 'on',
),
);
if ( AIOSEOPPRO ) {
$this->module_info['coming_soon'] = array(
'name' => __( 'Coming Soon...', 'all-in-one-seo-pack' ),
'description' => __( 'Image SEO', 'all-in-one-seo-pack' ),
'save' => false,
);
$this->module_info['video_sitemap'] = array(
'name' => __( 'Video Sitemap', 'all-in-one-seo-pack' ),
'description' => __( 'Create and manage your Video Sitemap using this feature and submit your Video Sitemap to Google, Bing/Yahoo and Ask.com.', 'all-in-one-seo-pack' ),
);
} else {
$this->module_info['coming_soon'] = array(
'name' => __( 'Video Sitemap', 'all-in-one-seo-pack' ),
'description' => __( 'Pro Version Only', 'all-in-one-seo-pack' ),
'save' => false,
);
}
// Set up default settings fields.
// Name - Human-readable name of the setting.
// Help_text - Inline documentation for the setting.
// Type - Type of field; this defaults to checkbox; currently supported types are checkbox, text, select, multiselect.
// Default - Default value of the field.
// Initial_options - Initial option list used for selects and multiselects.
// Other supported options: class, id, style -- allows you to set these HTML attributes on the field.
$this->default_options = array();
$this->module_info = apply_filters( 'aioseop_module_info', $this->module_info );
$mod[] = 'coming_soon';
foreach ( $mod as $m ) {
if ( 'performance' === $m && ! is_super_admin() ) {
continue;
}
$this->default_options["enable_$m"] = array(
'name' => $this->module_info[ $m ]['name'],
'help_text' => $this->module_info[ $m ]['description'],
'type' => 'custom',
'class' => 'aioseop_feature',
'id' => "aioseop_$m",
'save' => true,
);
if ( ! empty( $this->module_info[ $m ]['image'] ) ) {
$this->default_options["enable_$m"]['image'] = $this->module_info[ $m ]['image'];
}
if ( ! empty( $this->module_info[ $m ] ) ) {
foreach ( array( 'save', 'default' ) as $option ) {
if ( isset( $this->module_info[ $m ][ $option ] ) ) {
$this->default_options["enable_$m"][ $option ] = $this->module_info[ $m ][ $option ];
}
}
}
}
$this->layout = array(
'default' => array(
'name' => $this->name,
'help_link' => 'https://semperplugins.com/documentation/feature-manager/',
'options' => array_keys( $this->default_options ),
),
);
// Load initial options / set defaults.
$this->update_options();
if ( is_admin() ) {
add_filter( $this->prefix . 'output_option', array( $this, 'display_option_div' ), 10, 2 );
add_filter( $this->prefix . 'submit_options', array( $this, 'filter_submit' ) );
}
}
/**
* Determines the menu order.
*
* @return int
*/
function menu_order() {
return 20;
}
/**
* @param $submit
*
* @return mixed
*/
function filter_submit( $submit ) {
$submit['Submit']['value'] = __( 'Update Features', 'all-in-one-seo-pack' ) . ' »';
$submit['Submit']['class'] .= ' hidden';
$submit['Submit_Default']['value'] = __( 'Reset Features', 'all-in-one-seo-pack' ) . ' »';
return $submit;
}
/**
* @param $buf
* @param $args
*
* @return string
*/
function display_option_div( $buf, $args ) {
$name = $img = $desc = $checkbox = $class = '';
if ( isset( $args['options']['help_text'] ) && ! empty( $args['options']['help_text'] ) ) {
$desc .= '<p class="aioseop_desc">' . $args['options']['help_text'] . '</p>';
}
if ( $args['value'] ) {
$class = ' active';
}
if ( isset( $args['options']['image'] ) && ! empty( $args['options']['image'] ) ) {
$img .= '<p><img src="' . AIOSEOP_PLUGIN_IMAGES_URL . $args['options']['image'] . '"></p>';
} else {
$img .= '<p><span class="aioseop_featured_image' . $class . '"></span></p>';
}
if ( $args['options']['save'] ) {
$name = "<h3>{$args['options']['name']}</h3>";
$checkbox .= '<input type="checkbox" onchange="jQuery(\'#' . $args['options']['id'] . ' .aioseop_featured_image, #' . $args['options']['id'] . ' .feature_button\').toggleClass(\'active\', this.checked);jQuery(\'input[name=Submit]\').trigger(\'click\');" style="display:none;" id="' . $args['name'] . '" name="' . $args['name'] . '"';
if ( $args['value'] ) {
$checkbox .= ' CHECKED';
}
$checkbox .= '><span class="button-primary feature_button' . $class . '"></span>';
} else {
$name = "<b>{$args['options']['name']}</b>";
}
if ( ! empty( $args['options']['id'] ) ) {
$args['attr'] .= " id='{$args['options']['id']}'";
}
return $buf . "<div {$args['attr']}><label for='{$args['name']}'><div class='free flag'>FREE</div><div class='pro flag'>PRO</div>{$name}{$img}{$desc}{$checkbox}</label></div>";
}
}
} |