public function __construct($handle) { Settings::$pagehook = add_submenu_page($handle, 'Settings', 'Settings', 'administrator', 'podlove_settings_settings_handle', array($this, 'page')); add_settings_section('podlove_settings_general', __('General Settings', 'podlove'), function () { /* section head html */ }, Settings::$pagehook); add_settings_field('podlove_setting_merge_episodes', sprintf('<label for="merge_episodes">%s</label>', __('Display episodes on front page together with blog posts', 'podlove')), function () { ?> <input name="podlove[merge_episodes]" id="merge_episodes" type="checkbox" <?php checked(\Podlove\get_setting('merge_episodes'), 'on'); ?> > <?php }, Settings::$pagehook, 'podlove_settings_general'); add_settings_field('podlove_setting_hide_wp_feed_discovery', sprintf('<label for="hide_wp_feed_discovery">%s</label>', __('Hide default WordPress Feeds for blog and comments (no auto-discovery).', 'podlove')), function () { ?> <input name="podlove[hide_wp_feed_discovery]" id="hide_wp_feed_discovery" type="checkbox" <?php checked(\Podlove\get_setting('hide_wp_feed_discovery'), 'on'); ?> > <?php }, Settings::$pagehook, 'podlove_settings_general'); add_settings_field('podlove_setting_custom_episode_slug', sprintf('<label for="custom_episode_slug">%s</label>', __('URL segment prefix for podcast episode posts. Leave empty to remove the prefix.', 'podlove')), function () { ?> <input name="podlove[custom_episode_slug]" id="custom_episode_slug" type="text" value="<?php echo \Podlove\get_setting('custom_episode_slug'); ?> "> <p> <span class="description"><?php echo __('Must be a suitable URL part: lowercase characters, numbers and hyphens.', 'podlove'); ?> </span> </p> <?php }, Settings::$pagehook, 'podlove_settings_general'); add_settings_section('podlove_settings_modules', __('Modules', 'podlove'), function () { /* section head html */ }, Settings::$pagehook); $modules = \Podlove\Modules\Base::get_all_module_names(); foreach ($modules as $module_name) { $class = \Podlove\Modules\Base::get_class_by_module_name($module_name); if (!class_exists($class)) { continue; } $module = $class::instance(); $module_options = $module->get_registered_options(); if ($module_options) { register_setting(Settings::$pagehook, $module->get_module_options_name()); } add_settings_field('podlove_setting_module_' . $module_name, sprintf('<label for="' . $module_name . '">%s</label>', $module->get_module_name()), function () use($module, $module_name, $module_options) { ?> <label for="<?php echo $module_name; ?> "> <input name="podlove_active_modules[<?php echo $module_name; ?> ]" id="<?php echo $module_name; ?> " type="checkbox" <?php checked(\Podlove\Modules\Base::is_active($module_name), true); ?> > <?php echo $module->get_module_description(); ?> </label> <?php if ($module_options) { ?> <h4><?php echo __('Settings'); ?> </h4><?php // prepare settings object because form framework expects an object $settings_object = new \stdClass(); foreach ($module_options as $key => $value) { $settings_object->{$key} = $module->get_module_option($key); } \Podlove\Form\build_for($settings_object, array('context' => $module->get_module_options_name(), 'submit_button' => false), function ($form) use($module_options) { $wrapper = new \Podlove\Form\Input\TableWrapper($form); foreach ($module_options as $module_option_name => $args) { call_user_func_array(array($wrapper, $args['input_type']), array($module_option_name, $args['args'])); } }); } }, Settings::$pagehook, 'podlove_settings_modules'); } register_setting(Settings::$pagehook, 'podlove'); register_setting(Settings::$pagehook, 'podlove_active_modules'); }
public function __construct($handle) { Modules::$pagehook = add_submenu_page($handle, 'Modules', 'Modules', 'administrator', 'podlove_settings_modules_handle', array($this, 'page')); $this->init_page_documentation(self::$pagehook); add_settings_section('podlove_settings_modules', __('', 'podlove'), function () { /* section head html */ }, Modules::$pagehook); $grouped_modules = array(); $modules = \Podlove\Modules\Base::get_all_module_names(); foreach ($modules as $module_name) { $class = \Podlove\Modules\Base::get_class_by_module_name($module_name); if (!class_exists($class)) { continue; } if ($class::is_core()) { continue; } $module = $class::instance(); $module_options = $module->get_registered_options(); if ($group = $module->get_module_group()) { add_settings_section('podlove_setting_module_group_' . $group, ucwords($group), function () { }, Modules::$pagehook); } if ($module_options) { register_setting(Modules::$pagehook, $module->get_module_options_name()); } add_settings_field('podlove_setting_module_' . $module_name, sprintf('<label for="' . $module_name . '">%s</label>', $module->get_module_name()), function () use($module, $module_name, $module_options) { ?> <label for="<?php echo $module_name; ?> "> <input name="podlove_active_modules[<?php echo $module_name; ?> ]" id="<?php echo $module_name; ?> " type="checkbox" <?php checked(\Podlove\Modules\Base::is_active($module_name), true); ?> > <?php echo $module->get_module_description(); ?> </label> <?php do_action('podlove_module_before_settings_' . $module_name); if ($module_options) { ?> <h4><?php echo __('Settings'); ?> </h4><?php // prepare settings object because form framework expects an object $settings_object = new \stdClass(); foreach ($module_options as $key => $value) { $settings_object->{$key} = $module->get_module_option($key); } \Podlove\Form\build_for($settings_object, array('context' => $module->get_module_options_name(), 'submit_button' => false, 'form' => false), function ($form) use($module_options) { $wrapper = new \Podlove\Form\Input\TableWrapper($form); foreach ($module_options as $module_option_name => $args) { call_user_func_array(array($wrapper, $args['input_type']), array($module_option_name, $args['args'])); } }); } do_action('podlove_module_after_settings_' . $module_name); }, Modules::$pagehook, $group ? 'podlove_setting_module_group_' . $group : 'podlove_settings_modules'); } register_setting(Modules::$pagehook, 'podlove_active_modules'); }