2017-05-22 19:48:43 +02:00
< ? php
if ( ! defined ( 'ABSPATH' ) ) exit ;
class DKPDF_Settings {
private static $_instance = null ;
public $parent = null ;
public $_token ;
public $base = '' ;
public $settings = array ();
public function __construct ( $parent ) {
$this -> parent = $parent ;
$this -> base = 'dkpdf_' ;
// Initialise settings
add_action ( 'init' , array ( $this , 'init_settings' ), 11 );
// Register plugin settings
add_action ( 'admin_init' , array ( $this , 'register_settings' ) );
// Add settings page to menu
add_action ( 'admin_menu' , array ( $this , 'add_menu_item' ) );
// Add settings link to plugins page
add_filter ( 'plugin_action_links_' . plugin_basename ( DKPDF_PLUGIN_FILE ) , array ( $this , 'add_settings_link' ) );
}
/**
* Initialise settings
* @ return void
*/
public function init_settings () {
$this -> settings = $this -> settings_fields ();
}
/**
* Adds DK PDF admin menu
* @ return void
*/
public function add_menu_item () {
// main menu
$page = add_menu_page ( 'DK PDF' , 'DK PDF' , 'manage_options' , 'dkpdf' . '_settings' , array ( $this , 'settings_page' ) );
// Addons submenu
2017-05-31 21:10:55 +02:00
//add_submenu_page( 'dkpdf' . '_settings', 'Addons', 'Addons', 'manage_options', 'dkpdf-addons', array( $this, 'dkpdf_addons_screen' ));
2017-05-22 19:48:43 +02:00
// support
add_submenu_page ( 'dkpdf' . '_settings' , 'Support' , 'Support' , 'manage_options' , 'dkpdf-support' , array ( $this , 'dkpdf_support_screen' ));
// settings assets
add_action ( 'admin_print_styles-' . $page , array ( $this , 'settings_assets' ) );
}
public function dkpdf_support_screen () { ?>
< div class = " wrap " >
< h2 style = " float:left;width:100%; " > DK PDF Support </ h2 >
< div class = " dkpdf-item " >
2017-05-31 21:10:55 +02:00
<!--
2017-05-22 19:48:43 +02:00
< h3 > Documentation </ h3 >
< p > Everything you need to know for getting DK PDF up and running .</ p >
< p >< a href = " http://wp.dinamiko.com/demos/dkpdf/documentation/ " target = " _blank " > Go to Documentation </ a ></ p >
2017-05-31 21:10:55 +02:00
-->
< h3 > Dokumentcja </ h3 >
< p > Wszystkie informacje , które potrzebujesz do uruchomienia oraz zarządznaia pluginem DK PDF </ p >
< p >< a href = " http://wp.dinamiko.com/demos/dkpdf/documentation/ " target = " _blank " > Dokuemtacja pluginu !</ a ></ p >
2017-05-22 19:48:43 +02:00
</ div >
< div class = " dkpdf-item " >
2017-05-31 21:10:55 +02:00
<!--
2017-05-22 19:48:43 +02:00
< h3 > Support </ h3 >
< p > Having trouble ? don ' t worry , create a ticket in the support forum .</ p >
< p >< a href = " https://wordpress.org/support/plugin/dk-pdf " target = " _blank " > Go to Support </ a ></ p >
2017-05-31 21:10:55 +02:00
-->
< h3 > Pomoc </ h3 >
< p > Masz problem ? Nie przejmuj się ! Utwórz wątek na stronie forum pomocy DK PDF !</ p >
< p >< a href = " https://wordpress.org/support/plugin/dk-pdf " target = " _blank " > Pomoc !</ a ></ p >
2017-05-22 19:48:43 +02:00
</ div >
</ div >
< ? php do_action ( 'dkpdf_after_support' ); ?>
< ? php }
/*
public function dkpdf_addons_screen () { ?>
< div class = " wrap " >
< h2 > DK PDF Addons </ h2 >
< div class = " dkpdf-item " >
< h3 > DK PDF Generator </ h3 >
< p > Allows creating PDF documents with your selected WordPress content , also allows adding a Cover and a Table of contents .</ p >
< p >< a href = " http://codecanyon.net/item/dk-pdf-generator/13530581 " target = " _blank " > Go to DK PDF Generator </ a ></ p >
</ div >
</ div >
< ? php }
*/
/**
* Load settings JS & CSS
* @ return void
*/
public function settings_assets () {
// We're including the farbtastic script & styles here because they're needed for the colour picker
// If you're not including a colour picker field then you can leave these calls out as well as the farbtastic dependency for the dkpdf-admin-js script below
wp_enqueue_style ( 'farbtastic' );
wp_enqueue_script ( 'farbtastic' );
// We're including the WP media scripts here because they're needed for the image upload field
// If you're not including an image upload then you can leave this function call out
wp_enqueue_media ();
wp_register_script ( 'dkpdf' . '-settings-js' , plugins_url ( 'dk-pdf/assets/js/settings-admin.js' ), array ( 'farbtastic' , 'jquery' ), '1.0.0' );
wp_enqueue_script ( 'dkpdf' . '-settings-js' );
}
/**
* Add settings link to plugin list table
* @ param array $links Existing links
* @ return array Modified links
*/
public function add_settings_link ( $links ) {
$settings_link = '<a href="admin.php?page=' . 'dkpdf' . '_settings">' . __ ( 'Settings' , 'dkpdf' ) . '</a>' ;
array_push ( $links , $settings_link );
return $links ;
}
/**
* Build settings fields
* @ return array Fields to be displayed on settings page
*/
private function settings_fields () {
$post_types_arr = dkpdf_get_post_types ();
// pdf button settings
$settings [ 'pdfbtn' ] = array (
'title' => __ ( 'PDF Button' , 'dkpdf' ),
'description' => '' ,
'fields' => array (
array (
'id' => 'pdfbutton_text' ,
'label' => __ ( 'Button text' , 'dkpdf' ),
2017-05-31 21:10:55 +02:00
'description' => ' Tekst jaki będzie wyświetlany na przyciskach' ,
2017-05-22 19:48:43 +02:00
'type' => 'text' ,
2017-05-31 21:10:55 +02:00
'default' => 'Generuj PDF' , //PDF Button
2017-05-22 19:48:43 +02:00
'placeholder' => ''
),
array (
'id' => 'pdfbutton_post_types' ,
'label' => __ ( 'Post types to apply:' , 'dkpdf' ),
2017-05-31 21:10:55 +02:00
'description' => 'Domyślne wprowadzenie typów treści, w których będą umieszczone przyciski' ,
2017-05-22 19:48:43 +02:00
'type' => 'checkbox_multi' ,
'options' => $post_types_arr ,
'default' => array ()
),
array (
'id' => 'pdfbutton_action' ,
'label' => __ ( 'Action' , 'dkpdf' ),
2017-05-31 21:10:55 +02:00
'description' => 'Sposób w którym będzie można pobrać dokument PDF' ,
2017-05-22 19:48:43 +02:00
'type' => 'radio' ,
2017-05-31 21:10:55 +02:00
'options' => array ( 'open' => 'Otwórz plik PDF w nowym oknie' , 'download' => 'Bezpośrenio pobierz plik PDF' ), //'open' => 'Open PDF in new Window', 'download' => 'Download PDF directly'
2017-05-22 19:48:43 +02:00
'default' => 'open'
),
array (
'id' => 'pdfbutton_position' ,
'label' => __ ( 'Position' , 'dkpdf' ),
2017-05-31 21:10:55 +02:00
'description' => 'Sposób umieszczenia przycisku generowania pliku' ,
2017-05-22 19:48:43 +02:00
'type' => 'radio' ,
2017-05-31 21:10:55 +02:00
'options' => array ( 'shortcode' => 'Wykorzystuj shortcode' , 'before' => 'Przed zawartością' , 'after' => 'Po zawartości' ), //'shortcode' => 'Use shortcode', 'before' => 'Before content', 'after' => 'After content'
'default' => 'shortcode' //before
2017-05-22 19:48:43 +02:00
),
array (
'id' => 'pdfbutton_align' ,
'label' => __ ( 'Align' , 'dkpdf' ),
2017-05-31 21:10:55 +02:00
'description' => 'Wyrównanie przycisku' ,
2017-05-22 19:48:43 +02:00
'type' => 'radio' ,
2017-05-31 21:10:55 +02:00
'options' => array ( 'left' => 'Lewo' , 'center' => 'Środek' , 'right' => 'Prawo' ), //'left' => 'Left', 'center' => 'Center', 'right' => 'Right'
2017-05-22 19:48:43 +02:00
'default' => 'right'
),
)
);
// pdf setup
$settings [ 'dkpdf_setup' ] = array (
2017-05-31 21:10:55 +02:00
'title' => __ ( 'Ustawienia DK PDF' , 'dkpdfg' ), //PDF Setup
2017-05-22 19:48:43 +02:00
'description' => '' ,
'fields' => array (
array (
'id' => 'page_orientation' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Orientacja strony' , 'dkpdfg' ), //Page orientation
'description' => 'Ustawienie domyślnej orintacji strony' ,
2017-05-22 19:48:43 +02:00
'type' => 'radio' ,
'options' => array ( 'vertical' => 'Vertical' , 'horizontal' => 'Horizontal' ),
'default' => 'vertical'
),
array (
'id' => 'font_size' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Rozmiar czcionki' , 'dkpdfg' ), //Font size
'description' => 'Ustawienie rozmiaru czcionki w punktach (pt)' ,
2017-05-22 19:48:43 +02:00
'type' => 'number' ,
'default' => '12' ,
'placeholder' => '12'
),
array (
'id' => 'margin_left' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Lewy margines' , 'dkpdfg' ), //Margin left
'description' => 'Ustawienie rozmiaru lewego marginesu w punktach (pt)' ,
2017-05-22 19:48:43 +02:00
'type' => 'number' ,
'default' => '15' ,
'placeholder' => '15'
),
array (
'id' => 'margin_right' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Prawy margines' , 'dkpdfg' ), //Margin right
'description' => 'Ustawienie rozmiaru prawego marginesu w punktach (pt)' ,
2017-05-22 19:48:43 +02:00
'type' => 'number' ,
'default' => '15' ,
'placeholder' => '15'
),
array (
'id' => 'margin_top' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Górny margines' , 'dkpdfg' ), //Margin top
'description' => 'Ustawienie rozmiaru górnego marginesu w punktach (pt)' ,
2017-05-22 19:48:43 +02:00
'type' => 'number' ,
'default' => '50' ,
'placeholder' => '50'
),
array (
'id' => 'margin_bottom' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Dolny margines' , 'dkpdfg' ), //Margin bottom
'description' => 'Ustawienie rozmiaru dolnego marginesu w punktach (pt)' ,
2017-05-22 19:48:43 +02:00
'type' => 'number' ,
'default' => '30' ,
'placeholder' => '30'
),
array (
'id' => 'margin_header' ,
2017-05-31 21:10:55 +02:00
'label' => __ ( 'Margines nagłówka' , 'dkpdfg' ), //Margin header
'description' => 'Ustawienie rozmiaru dolnego marginesu w punktach (pt)' ,
2017-05-22 19:48:43 +02:00
'type' => 'number' ,
'default' => '15' ,
'placeholder' => '15'
),
)
);
// header & footer settings
$settings [ 'pdf_header_footer' ] = array (
'title' => __ ( 'PDF Header & Footer' , 'dkpdf' ),
'description' => '' ,
'fields' => array (
array (
'id' => 'pdf_header_image' ,
'label' => __ ( 'Header logo' , 'dkpdf' ),
'description' => '' ,
'type' => 'image' ,
'default' => '' ,
'placeholder' => ''
),
array (
'id' => 'pdf_header_show_title' ,
'label' => __ ( 'Header show title' , 'dkpdf' ),
'description' => '' ,
'type' => 'checkbox' ,
2017-05-31 21:10:55 +02:00
'default' => 'true'
2017-05-22 19:48:43 +02:00
),
array (
'id' => 'pdf_header_show_pagination' ,
'label' => __ ( 'Header show pagination' , 'dkpdf' ),
'description' => '' ,
'type' => 'checkbox' ,
2017-05-31 21:10:55 +02:00
'default' => 'true'
2017-05-22 19:48:43 +02:00
),
array (
'id' => 'pdf_footer_text' ,
'label' => __ ( 'Footer text' , 'dkpdf' ),
'description' => __ ( 'HTML tags: a, br, em, strong, hr, p, h1 to h4' , 'dkpdf' ),
'type' => 'textarea' ,
'default' => '' ,
'placeholder' => ''
),
array (
'id' => 'pdf_footer_show_title' ,
'label' => __ ( 'Footer show title' , 'dkpdf' ),
'description' => '' ,
'type' => 'checkbox' ,
'default' => ''
),
array (
'id' => 'pdf_footer_show_pagination' ,
'label' => __ ( 'Footer show pagination' , 'dkpdf' ),
'description' => '' ,
'type' => 'checkbox' ,
'default' => ''
),
)
);
// style settings
$settings [ 'pdf_css' ] = array (
'title' => __ ( 'PDF CSS' , 'dkpdf' ),
'description' => '' ,
'fields' => array (
array (
'id' => 'pdf_custom_css' ,
'label' => __ ( 'PDF Custom CSS' , 'dkpdf' ),
2017-05-31 21:10:55 +02:00
'description' => __ ( 'Wprowadź odpowiedi kod CSS by zmanipulować wyściowym plikiem PDF' , 'dkpdf' ),
2017-05-22 19:48:43 +02:00
'type' => 'textarea_code' ,
2017-05-31 21:10:55 +02:00
'default' => '.AnkietyGO { display:none; }' ,
2017-05-22 19:48:43 +02:00
'placeholder' => ''
),
array (
'id' => 'print_wp_head' ,
'label' => __ ( 'Use your enqueued theme and plugin CSS' , 'dkpdf' ),
'description' => __ ( 'Adds wp_head() in PDF head' , 'dkpdf' ),
'type' => 'checkbox' ,
'default' => ''
),
)
);
$settings = apply_filters ( 'dkpdf' . '_settings_fields' , $settings );
return $settings ;
}
/**
* Register plugin settings
* @ return void
*/
public function register_settings () {
if ( is_array ( $this -> settings ) ) {
// Check posted/selected tab
$current_section = '' ;
if ( isset ( $_POST [ 'tab' ] ) && $_POST [ 'tab' ] ) {
$current_section = $_POST [ 'tab' ];
} else {
if ( isset ( $_GET [ 'tab' ] ) && $_GET [ 'tab' ] ) {
$current_section = $_GET [ 'tab' ];
}
}
foreach ( $this -> settings as $section => $data ) {
if ( $current_section && $current_section != $section ) continue ;
// Add section to page
add_settings_section ( $section , $data [ 'title' ], array ( $this , 'settings_section' ), 'dkpdf' . '_settings' );
foreach ( $data [ 'fields' ] as $field ) {
// Validation callback for field
$validation = '' ;
if ( isset ( $field [ 'callback' ] ) ) {
$validation = $field [ 'callback' ];
}
// Register field
$option_name = $this -> base . $field [ 'id' ];
register_setting ( 'dkpdf' . '_settings' , $option_name , $validation );
// Add field to page
add_settings_field ( $field [ 'id' ], $field [ 'label' ], array ( $this -> parent -> admin , 'display_field' ), 'dkpdf' . '_settings' , $section , array ( 'field' => $field , 'prefix' => $this -> base ) );
}
if ( ! $current_section ) break ;
}
}
}
public function settings_section ( $section ) {
$html = '<p> ' . $this -> settings [ $section [ 'id' ] ][ 'description' ] . '</p>' . " \n " ;
echo $html ;
}
/**
* Load settings page content
* @ return void
*/
public function settings_page () {
if ( isset ( $_GET [ 'settings-updated' ]) ) { ?>
< div id = " message " class = " updated " >
< p >< ? php _e ( 'Settings saved.' , 'dkpdf' ); ?> </p>
</ div >
< ? php }
// Build page HTML
$html = '<div class="wrap" id="' . 'dkpdf' . '_settings">' . " \n " ;
$html .= '<h2>' . __ ( 'DK PDF Settings' , 'dkpdf' ) . '</h2>' . " \n " ;
$tab = '' ;
if ( isset ( $_GET [ 'tab' ] ) && $_GET [ 'tab' ] ) {
$tab .= $_GET [ 'tab' ];
}
// Show page tabs
if ( is_array ( $this -> settings ) && 1 < count ( $this -> settings ) ) {
$html .= '<h2 class="nav-tab-wrapper">' . " \n " ;
$c = 0 ;
foreach ( $this -> settings as $section => $data ) {
// Set tab class
$class = 'nav-tab' ;
if ( ! isset ( $_GET [ 'tab' ] ) ) {
if ( 0 == $c ) {
$class .= ' nav-tab-active' ;
}
} else {
if ( isset ( $_GET [ 'tab' ] ) && $section == $_GET [ 'tab' ] ) {
$class .= ' nav-tab-active' ;
}
}
// Set tab link
$tab_link = add_query_arg ( array ( 'tab' => $section ) );
if ( isset ( $_GET [ 'settings-updated' ] ) ) {
$tab_link = remove_query_arg ( 'settings-updated' , $tab_link );
}
// Output tab
$html .= '<a href="' . $tab_link . '" class="' . esc_attr ( $class ) . '">' . esc_html ( $data [ 'title' ] ) . '</a>' . " \n " ;
++ $c ;
}
$html .= '</h2>' . " \n " ;
}
$html .= '<form method="post" action="options.php" enctype="multipart/form-data">' . " \n " ;
// Get settings fields
ob_start ();
settings_fields ( 'dkpdf' . '_settings' );
do_settings_sections ( 'dkpdf' . '_settings' );
$html .= ob_get_clean ();
$html .= '<p class="submit">' . " \n " ;
$html .= '<input type="hidden" name="tab" value="' . esc_attr ( $tab ) . '" />' . " \n " ;
$html .= '<input name="Submit" type="submit" class="button-primary" value="' . esc_attr ( __ ( 'Save Settings' , 'dkpdf' ) ) . '" />' . " \n " ;
$html .= '</p>' . " \n " ;
$html .= '</form>' . " \n " ;
$html .= '</div>' . " \n " ;
echo $html ;
}
/**
* Main DKPDF_Settings Instance
*/
public static function instance ( $parent ) {
if ( is_null ( self :: $_instance ) ) {
self :: $_instance = new self ( $parent );
}
return self :: $_instance ;
} // End instance()
/**
* Cloning is forbidden .
*/
public function __clone () {
_doing_it_wrong ( __FUNCTION__ , __ ( 'Cheatin’ huh?' ), $this -> parent -> _version );
} // End __clone()
/**
* Unserializing instances of this class is forbidden .
*/
public function __wakeup () {
_doing_it_wrong ( __FUNCTION__ , __ ( 'Cheatin’ huh?' ), $this -> parent -> _version );
} // End __wakeup()
}