__('General', 'acp'),
'acp_toolbar' => __('Toolbar', 'acp'),
'acp_skiplinks' => __('Skiplinks', 'acp'),
'acp_customcode' => __('Custom Code', 'acp'),
);
foreach ($sections as $section_key => $section_name) {
add_settings_section($section_key, $section_name, array($this, 'empty_section_info'), 'accessible-poetry');
}
$fields = array(
'focus' => 'acp_general',
'link_underline' => 'acp_general',
'empty_alt' => 'acp_general',
'toolbar' => 'acp_toolbar',
'toolbar_skin' => 'acp_toolbar',
'toolbar_fontsizer' => 'acp_toolbar',
'toolbar_additional_buttons' => 'acp_toolbar',
'toolbar_visibility' => 'acp_toolbar',
'toolbar_important' => 'acp_toolbar',
'skiplinks' => 'acp_skiplinks',
'skiplinks_action' => 'acp_skiplinks',
'skiplinks_side' => 'acp_skiplinks',
'custom_css' => 'acp_customcode',
);
foreach ($fields as $field_key => $field_section) {
add_settings_field($field_key, '', array( $this, $field_key . '_callback' ), 'accessible-poetry', $field_section);
}
}
public function sanitize($input) {
$new_input = array();
foreach ($input as $key => $value) {
$new_input[$key] = $value;
}
return $new_input;
}
/////////////// SECTIONS CALLBACKS
public function empty_section_info() {}
/////////////// FIELDS CALLBACKS
/*
* Add alt attribute to images without alt
*
* @type checkbox
* @id empty_alt
* @since 2.0.1
*/
public function empty_alt_callback() {
$field = '
';
$field .= '
' . __('Images', 'acp') . ' ';
$field .= ' options['empty_alt'] ), false ) . '> ' . __('Fix missing ALT attrributes on IMG tags', 'acp') . ' ';
$field .= '';
printf($field,isset( $this->options['image_alt'] ) ? esc_attr( $this->options['image_alt']) : '');
}
/*
* Add effect to all focusable items
*
* @type select
* @id focus
* @since 2.0.1
*/
public function focus_callback() {
$focus = isset($this->options['focus']) ? $this->options['focus'] : '';
$focus_type = isset($this->options['focus_type']) ? $this->options['focus_type'] : '';
$customColor = isset($this->options['outline_color']) ? $this->options['outline_color'] : '';
$field = '
' . __('Focus', 'acp') . '
';
$field .= '
';
$field .= '
'. __('Add effect to items on focus mode:','acp').'
' . __('Don\'t do nothing', 'acp') . '
' . __('Only using the toolbar', 'acp') . '
' . __('Use always', 'acp') . '
';
$field .= '
';
printf($field,isset($focus) ? esc_attr($focus) : '');
$field = '
';
$field .= '
'. __('Choose the type of effect for focus mode:','acp').'
' . __('-- None --', 'acp') . '
' . __('Red outline', 'acp') . '
' . __('Blue outline', 'acp') . '
' . __('Yellow background', 'acp') . '
' . __('Custom Outline', 'acp') . '
';
$field .= '
';
$field .= '
';
printf($field,isset( $focus_type ) ? esc_attr( $this->options['focus_type']) : '');
$outline_color_class = ( $focus_type === 'custom' ) ? ' open' : '';
$field = '
'.__('Choose custom outline color for focus mode', 'acp').':
';
printf($field,isset( $this->options['outline_color'] ) ? esc_attr( $this->options['outline_color']) : '');
$field = '
options['outline_important'] ), false ) . '> ' . __('Use !important for the outline CSS (check this only if it\'s does not work).', 'acp') . '
';
$field .= '
';
$field .= '
';
printf($field,isset( $this->options['outline_important'] ) ? esc_attr( $this->options['outline_important']) : '');
}
public function link_underline_callback() {
$focus_only = ($this->options['link_underline'] == 'focus') ? ' selected' : '';
$focus_hover = ($this->options['link_underline'] == 'hover') ? ' selected' : '';
$on_all = ($this->options['link_underline'] == 'all') ? ' selected' : '';
$field = '
';
$field .= '
' . __('Links', 'acp') . ' ';
$field .= ''. __('Links Underline','acp').' ';
$field .= '';
$field .= '' . __('-- None --', 'acp') . ' ';
$field .= ' ' . __('On focus mode only', 'acp') . ' ';
$field .= ' ' . __('On focus and hover mode', 'acp') . ' ';
$field .= ' ' . __('Always', 'acp') . ' ';
$field .= ' ';
$field .= '';
printf($field,isset( $this->options['link_underline'] ) ? esc_attr( $this->options['link_underline']) : '');
$field = '
';
$field .= ' options['underline_important'] ), false ) . '> ' . __('Use !important for the underline CSS (check this only if the underline does not work).', 'acp') . ' ';
$field .= '
';
$field .= '
';
printf($field,isset( $this->options['underline_important'] ) ? esc_attr( $this->options['underline_important']) : '');
}
public function toolbar_callback() {
$field = '
options['toolbar']), false) . '> ' . __('Activate the toolbar', 'acp') . '
';
printf($field,isset( $this->options['toolbar'] ) ? esc_attr( $this->options['toolbar']) : '');
$right = ($this->options['toolbar_side'] == 'right') ? ' selected' : '';
$left = ($this->options['toolbar_side'] == 'left') ? ' selected' : '';
$field = '
';
$field .= '
';
$field .= '' . __('Toolbar Side', 'acp') . ' ';
$field .= '';
$field .= '' . __('Right side', 'acp') . ' ';
$field .= '' . __('Left side', 'acp') . ' ';
$field .= ' ';
$field .= '
';
$field .= '
';
printf($field,isset( $this->options['toolbar_side'] ) ? esc_attr( $this->options['toolbar_side']) : '');
}
public function toolbar_visibility_callback() {
$fields = array(
'disable_blackscreen' => __("Disable the black screen", 'acp'),
'hide_toolbar_mobile' => __("Hide the toolbar for mobile users", 'acp'),
'hide_flashes' => __("Hide the button to disable flashes", 'acp'),
'hide_headingmarks' => __("Hide the button to to mark heading", 'acp'),
'disable_zoom' => __("Hide the screen zoom buttons", 'acp'),
'disable_fontzoom' => __("Hide the font resize buttons", 'acp'),
'hide_readable' => __("Hide the button that change to readable font", 'acp'),
'hide_contrast' => __("Hide the contrast buttons", 'acp'),
'hide_underline' => __("Hide the underline button", 'acp'),
'hide_linkmarks' => __("Hide the button to mark links", 'acp'),
);
$i = 0;
foreach($fields as $key => $value) {
$i++;
$output = '';
if($i == 1) {
$output .= '
' . __('Visibility', 'acp') . ' ';
$output .= '
';
}
printf($output,isset( $this->options[$key] ) ? esc_attr( $this->options[$key]) : '');
}
}
public function toolbar_important_callback() {
$fields = array(
'mheading_important' => __("Mark headings mode", 'acp'),
'readable_important' => __("Readable font mode", 'acp'),
'contrast_important' => __("Contrast modes", 'acp'),
'underline_important' => __("Underline mode", 'acp'),
'mlinks_important' => __("Mark links mode", 'acp'),
);
$i = 0;
foreach($fields as $key => $value) {
$i++;
$field_output = '';
if($i == 1) {
$field_output .= '
' . __('CSS Important (Advanced)', 'acp') . ' ';
$field_output .= '
' . __('You can hardened the effect of some toolbar button with the use of CSS important. this is not the best way, the best way is to implement a better CSS by yourself with Accessible Poetry set of classes.', 'acp') . '
';
$field_output .= '
';
}
$field_output .= '';
$field_output .= ' options[$key]), false ).'> ';
$field_output .= $value;
$field_output .= ' ';
if($i == count($fields)) {
$field_output .= '
';
}
printf($field_output,isset( $this->options[$key] ) ? esc_attr( $this->options[$key]) : '');
}
}
public function toolbar_customization_callback() {
/// icon size
$icon_size = $this->options['icon_size'];
$small = ($icon_size == 'small') ? ' selected' : '';
$normal = ($icon_size == 'normal') ? ' selected' : '';
$big = ($icon_size == 'big') ? ' selected' : '';
$field = '
' . __('Customization', 'acp') . ' ';
$field .= '
' . __('Customize Toolbar Icon', 'acp') . ' ';
$field .= '
';
$field .= '
';
$field .= '' . __('Icon Size', 'acp') . ' ';
$field .= '';
$field .= '' . __('Normal size (default)', 'acp') . ' ';
$field .= '' . __('Small size', 'acp') . ' ';
$field .= '' . __('Big size', 'acp') . ' ';
$field .= ' ';
$field .= '
';
$field .= '
';
printf($field, isset( $this->options['icon_size'] ) ? esc_attr( $this->options['icon_size']) : '');
$icon_shape = $this->options['icon_shape'];
$circle = ($icon_shape == 'circle') ? ' selected' : '';
$square = ($icon_shape == 'square') ? ' selected' : '';
$field = '
';
$field .= '
';
$field .= '' . __('Icon Shape', 'acp') . ' ';
$field .= '';
$field .= '' . __('Circle', 'acp') . ' ';
$field .= '' . __('Square', 'acp') . ' ';
$field .= ' ';
$field .= '
';
$field .= '
';
printf($field, isset( $this->options['icon_shape'] ) ? esc_attr( $this->options['icon_shape']) : '');
/// toolbar position
$field = '
';
$field .= '' . __('From Top (default: 70)', 'acp') . ' ';
$field .= 'px ';
$field .= '
';
printf($field, isset( $this->options['toolbar_position'] ) ? esc_attr( $this->options['toolbar_position']) : '');
$field = '
';
$field .= '' . __('From Side (default: 25)', 'acp') . ' ';
$field .= 'px ';
$field .= '
';
printf($field, isset( $this->options['toolbar_position_side'] ) ? esc_attr( $this->options['toolbar_position_side']) : '');
}
/*
* {...}
*
* @id toolbar_additional_buttons_callback
* @since 3.0
*/
public function toolbar_additional_buttons_callback() {
$acp_statement = ( isset($this->options['acp_statement']) ) ? $this->options['acp_statement'] : '';
$field = '
' . __('Additional Buttons', 'acp') . ' ';
$field .= '
';
$field .= '
';
$field .= '' . __('To display a link to your Accessibility Statement page, select your Accessibility Statement page', 'acp') . ' ';
$field .= '';
$field .= '' . esc_attr( __( 'Select page', 'acp' ) ) . ' ';
$pages = get_pages();
foreach ( $pages as $page ) {
$selected = ( $acp_statement == $page->ID ) ? 'selected' : '';
$option = '';
$option .= $page->post_title;
$option .= ' ';
$field .= $option;
}
$field .= ' ';
$field .= '
';
printf($field,isset( $this->options['toolbar_statement'] ) ? esc_attr( $this->options['toolbar_statement']) : '');
$acp_feedback = ( isset($this->options['acp_feedback']) ) ? $this->options['acp_feedback'] : '';
$field = '
';
$field .= '' . __('To display a link to your Feedback page, select your Feedback page', 'acp') . ' ';
$field .= '';
$field .= '' . esc_attr( __( 'Select page', 'acp' ) ) . ' ';
$pages = get_pages();
foreach ( $pages as $page ) {
$selected = ( $acp_feedback == $page->ID ) ? 'selected' : '';
$option = '';
$option .= $page->post_title;
$option .= ' ';
$field .= $option;
}
$field .= ' ';
$field .= '
';
$field .= '
';
$field .= '
';
printf($field,isset( $this->options['acp_feedback'] ) ? esc_attr( $this->options['acp_feedback']) : '');
}
/*
* {...}
*
* @id toolbar_fontsizer_callback
* @since 3.0
*/
public function toolbar_fontsizer_callback() {
$fontsizer_inc = (isset($this->options['fontsizer_inc'])) ? $this->options['fontsizer_inc'] : '';
$field = '
';
$field .= '
' . __('Font Size Modifier', 'acp') . ' ';
$field .= '' . __('Include additional elements that should be affected with the font size modifier (default is: body, p, h1, h2, h3, h4, h5, h6, label, input, a, button, textarea)', 'acp') . ' ';
$field .= '';
$field .= '';
printf($field,isset( $this->options['fontsizer_inc'] ) ? esc_attr( $this->options['fontsizer_inc']) : '');
$fontsizer_exc = (isset($this->options['fontsizer_exc'])) ? $this->options['fontsizer_exc'] : '';
$field = '
';
$field .= '' . __('Exclude additional elements from the effect of the font size modifier', 'acp') . ' ';
$field .= '';
$field .= '
';
printf($field,isset( $this->options['fontsizer_exc'] ) ? esc_attr( $this->options['fontsizer_exc']) : '');
}
/*
* Activate Skiplinks
*
* @type checkbox
* @id skiplinks
* @since 2.0.1
*/
public function skiplinks_callback() {
$field = '
' . __('Skiplinks', 'acp') . ' ';
$field .= '
';
$field .= ' options['skiplinks']),false). '>';
$field .= __('Activate skiplinks menus', 'acp') . ' ';
$field .= '
';
printf($field,isset( $this->options['skiplinks'] ) ? esc_attr( $this->options['skiplinks']) : '');
}
/*
* Skiplinks side
*
* @type checkbox
* @id skiplinks_side
* @since 2.1.1
*/
public function skiplinks_side_callback() {
$left = ($this->options['skiplinks_side'] == 'left') ? ' selected' : '';
$right = ($this->options['skiplinks_side'] == 'right') ? ' selected' : '';
$field = '
';
$field .= '' . __('Skiplinks Side', 'acp') . ' ';
$field .= ' ';
$field .= ' ' . __('Left', 'acp') . ' ';
$field .= ' ' . __('Right', 'acp') . ' ';
$field .= ' ';
$field .= '
';
printf($field,isset( $this->options['skiplinks_side'] ) ? esc_attr( $this->options['skiplinks_side']) : '');
}
/*
* Skiplinks action
*
* @type checkbox
* @id skiplinks_action
* @since 3.0.7
*/
public function skiplinks_action_callback() {
$footer = ($this->options['skiplinks_action'] == 'footer') ? ' selected' : '';
$body = ($this->options['skiplinks_action'] == 'body') ? ' selected' : '';
$field = '
';
$field .= '' . __('Skiplinks Action', 'acp') . ' ';
$field .= ' ';
$field .= ' ' . __('Fire in footer', 'acp') . ' ';
$field .= ' ' . __('Fire after body (advanced)', 'acp') . ' ';
$field .= ' ';
$field .= '
';
printf($field,isset( $this->options['skiplinks_action'] ) ? esc_attr( $this->options['skiplinks_action']) : '');
}
public function customcode_callback() {
$customcss = (isset($this->options['custom_css'])) ? $this->options['custom_css'] : '';
$field = '
';
$field .= '
' . __('Custom Code', 'acp') . ' ';
$field .= '' . __('Add additional CSS code', 'acp') . ' ';
$field .= '';
$field .= '';
printf($field,isset( $this->options['custom_css'] ) ? esc_attr( $this->options['custom_css']) : '');
$customjs = (isset($this->options['custom_js'])) ? $this->options['custom_js'] : '';
$field = '
';
$field .= '
' . __('Add additional JS code', 'acp') . ' ';
$field .= '
To use jQuery $ functionality wrap your code with this:
';
$field .= '
jQuery(document).ready(function($){
});';
$field .= '
';
$field .= '
';
printf($field,isset( $this->options['custom_js'] ) ? esc_attr( $this->options['custom_js']) : '');
}
/*
* Register administration scripts & styles
*/
function admin_assets($hook) {
wp_register_style( 'acp-admin-style', plugins_url('accessible-poetry/assets/css/acp-admin-style.css') );
wp_enqueue_style( 'acp-admin-style' );
wp_enqueue_script( 'bootstrap', plugins_url('accessible-poetry/assets/js/bootstrap.min.js') );
wp_enqueue_script( 'acp-admin', plugins_url('accessible-poetry/assets/js/acp-admin.js') );
}
}
new ACP_OptionsPanel();