'; echo '' . esc_html( $total_files->publish ) . ''; echo '' . esc_html__( 'Ticks', 'stklcode-liveticker' ) . ''; echo ''; } /** * Register settings page. * * @return void */ public static function register_settings_page() { add_submenu_page( 'edit.php?post_type=scliveticker_tick', 'Liveticker ' . __( 'Settings', 'stklcode-liveticker' ), __( 'Settings', 'stklcode-liveticker' ), 'manage_options', 'scliveticker_settings', array( __CLASS__, 'settings_page', ) ); } /** * Register settings API * * @return void */ public static function register_settings() { register_setting( 'scliveticker_settings', self::OPTION, array( __CLASS__, 'validate_settings' ) ); // Form sections. add_settings_section( 'scliveticker_settings_general', __( 'General', 'stklcode-liveticker' ), array( __CLASS__, 'settings_general_section' ), 'scliveticker-settings-page' ); // Form fields. add_settings_field( 'enable_ajax', __( 'Use AJAX', 'stklcode-liveticker' ), array( __CLASS__, 'settings_enable_ajax_field' ), 'scliveticker-settings-page', 'scliveticker_settings_general', array( 'label_for' => esc_attr( self::OPTION ) . '-enable-ajax' ) ); add_settings_field( 'poll_interval', __( 'AJAX poll interval', 'stklcode-liveticker' ), array( __CLASS__, 'settings_poll_interval_field' ), 'scliveticker-settings-page', 'scliveticker_settings_general', array( 'label_for' => esc_attr( self::OPTION ) . '-poll-interval' ) ); add_settings_field( 'enable_css', __( 'Default CSS Styles', 'stklcode-liveticker' ), array( __CLASS__, 'settings_enable_css_field' ), 'scliveticker-settings-page', 'scliveticker_settings_general', array( 'label_for' => esc_attr( self::OPTION ) . '-enable-css' ) ); add_settings_field( 'show_feed', __( 'Show RSS feed', 'stklcode-liveticker' ), array( __CLASS__, 'settings_show_feed_field' ), 'scliveticker-settings-page', 'scliveticker_settings_general', array( 'label_for' => esc_attr( self::OPTION ) . '-show-feed' ) ); add_settings_field( 'enable_shortcode', __( 'Shortcode support', 'stklcode-liveticker' ), array( __CLASS__, 'settings_enable_shortcode_field' ), 'scliveticker-settings-page', 'scliveticker_settings_general', array( 'label_for' => esc_attr( self::OPTION ) . '-enable-shortcode' ) ); add_settings_field( 'embedded_script', __( 'Embedded JavaScript', 'stklcode-liveticker' ), array( __CLASS__, 'settings_embedded_script_field' ), 'scliveticker-settings-page', 'scliveticker_settings_general', array( 'label_for' => esc_attr( self::OPTION ) . '-embedded-script' ) ); } /** * Render general section. * * @return void */ public static function settings_general_section() { } /** * Render uninstall section. * * @return void */ public static function settings_uninstall_section() { } /** * Render enable AJAX field. * * @return void */ public static function settings_enable_ajax_field() { $checked = self::$options['enable_ajax']; echo ' '; esc_html_e( 'Enable', 'stklcode-liveticker' ); echo '

' . esc_html__( 'Disable this option to not use AJAX update. This means all liveticker widgets and shortcodes are only updated once on site load.', 'stklcode-liveticker' ) . '

'; } /** * Render AJAX poll interval field. * * @return void */ public static function settings_poll_interval_field() { $poll_interval = self::$options['poll_interval']; echo ' '; esc_html_e( 'seconds', 'stklcode-liveticker' ); echo '

' . esc_html__( 'Interval (in seconds) to update ticker if AJAX is enabled.', 'stklcode-liveticker' ) . '

'; } /** * Render enable css field. * * @return void */ public static function settings_enable_css_field() { $checked = self::$options['enable_css']; echo ' '; esc_html_e( 'Enable', 'stklcode-liveticker' ); echo '

' . esc_html__( 'Disable this option to remove the default styling CSS file.', 'stklcode-liveticker' ) . '

'; } /** * Render enable css field. * * @return void */ public static function settings_show_feed_field() { $checked = self::$options['show_feed']; echo ' '; esc_html_e( 'Enable', 'stklcode-liveticker' ); echo '

' . esc_html__( 'Can be overwritten in shortcode.', 'stklcode-liveticker' ) . '

'; } /** * Render enable shortcode field. * * @return void * * @since 1.2 */ public static function settings_enable_shortcode_field() { $checked = self::$options['enable_shortcode']; echo ' '; esc_html_e( 'Enable', 'stklcode-liveticker' ); echo '

' . esc_html__( 'Enable shortcode processing in tick content.', 'stklcode-liveticker' ) . '

'; } /** * Render embedded script field. * * @return void * * @since 1.2 */ public static function settings_embedded_script_field() { $checked = self::$options['embedded_script']; echo ' '; esc_html_e( 'Enable', 'stklcode-liveticker' ); echo '

' . esc_html__( 'Allow embedded script evaluation in tick contents. This might be useful for embedded content, e.g. social media integrations.', 'stklcode-liveticker' ) . '

'; } /** * Render the settings page. * * @return void */ public static function settings_page() { include SCLIVETICKER_DIR . 'views/settings-page.php'; } /** * Validate settings callback. * * @param array $input Input arguments. * * @return array Parsed arguments. */ public static function validate_settings( $input ) { $defaults = self::default_options(); $result['enable_ajax'] = isset( $input['enable_ajax'] ) ? intval( $input['enable_ajax'] ) : 0; $result['poll_interval'] = isset( $input['poll_interval'] ) ? intval( $input['poll_interval'] ) : $defaults['poll_interval']; $result['enable_css'] = isset( $input['enable_css'] ) ? intval( $input['enable_css'] ) : 0; $result['show_feed'] = isset( $input['show_feed'] ) ? intval( $input['show_feed'] ) : 0; $result['enable_shortcode'] = isset( $input['enable_shortcode'] ) ? intval( $input['enable_shortcode'] ) : 0; $result['embedded_script'] = isset( $input['embedded_script'] ) ? intval( $input['embedded_script'] ) : 0; return $result; } /** * Register custom Gutenberg block type. * * @return void * @since 1.1 */ public static function register_block() { wp_register_script( 'scliveticker-editor', SCLIVETICKER_BASE . 'scripts/block.min.js', array( 'wp-blocks', 'wp-element' ), self::VERSION, true ); wp_register_style( 'scliveticker-editor', SCLIVETICKER_BASE . 'styles/block.min.css', array(), self::VERSION ); register_block_type( 'scliveticker-block/liveticker', array( 'editor_script' => 'scliveticker-editor', 'editor_style' => 'scliveticker-editor', ) ); } }