Document Gallery Settings

' . __('Settings', 'document-gallery') . ''; array_unshift($links, $settings); return $links; } /** * Adds Document Gallery settings page to admin navigation. */ public static function addAdminPage() { $page = add_options_page( __('Document Gallery Settings', 'document-gallery'), __('Document Gallery', 'document-gallery'), 'manage_options', 'document_gallery', array(__CLASS__, 'renderOptions')); } /** * Registers settings for the Document Gallery options page. */ public static function registerSettings() { global $dg_options; include_once DG_PATH . 'inc/class-gallery.php'; include_once DG_PATH . 'inc/class-thumber.php'; $defaults = $dg_options['gallery']['defaults']; $thumber_active = $dg_options['thumber']['active']; $thumber_gs = $dg_options['thumber']['gs']; register_setting(DG_OPTION_NAME, DG_OPTION_NAME, array(__CLASS__, 'validateSettings')); add_settings_section( 'gallery_defaults', __('Default Settings', 'document-gallery'), array(__CLASS__, 'renderDefaultSettingsSection'), 'document_gallery'); add_settings_section( 'thumber_active', __('Thumbnail Generation', 'document-gallery'), array(__CLASS__, 'renderThumberSection'), 'document_gallery'); add_settings_section( 'css', __('Custon CSS', 'document-gallery'), array(__CLASS__, 'renderCssSection'), 'document_gallery'); add_settings_section( 'thumber_advanced', __('Advanced Thumbnail Generation', 'document-gallery'), array(__CLASS__, 'renderThumberAdvancedSection'), 'document_gallery'); add_settings_field( 'gallery_defaults_attachment_pg', 'attachment_pg', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_attachment_pg', 'name' => 'gallery_defaults][attachment_pg', 'value' => esc_attr($defaults['attachment_pg']), 'option_name' => DG_OPTION_NAME, 'description' => __('Link to attachment page rather than to file', 'document-gallery') )); add_settings_field( 'gallery_defaults_descriptions', 'descriptions', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_descriptions', 'name' => 'gallery_defaults][descriptions', 'value' => esc_attr($defaults['descriptions']), 'option_name' => DG_OPTION_NAME, 'description' => __('Include document descriptions', 'document-gallery') )); add_settings_field( 'gallery_defaults_fancy', 'fancy', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_fancy', 'name' => 'gallery_defaults][fancy', 'value' => esc_attr($defaults['fancy']), 'option_name' => DG_OPTION_NAME, 'description' => __('Use auto-generated document thumbnails', 'document-gallery') )); add_settings_field( 'gallery_defaults_images', 'images', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_images', 'name' => 'gallery_defaults][images', 'value' => esc_attr($defaults['images']), 'option_name' => DG_OPTION_NAME, 'description' => __('Include image attachments in gallery', 'document-gallery') )); add_settings_field( 'gallery_defaults_localpost', 'localpost', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_localpost', 'name' => 'gallery_defaults][localpost', 'value' => esc_attr($defaults['localpost']), 'option_name' => DG_OPTION_NAME, 'description' => __('Only look for attachments in post where [dg] is used', 'document-gallery') )); add_settings_field( 'gallery_defaults_order', 'order', array(__CLASS__, 'renderSelectField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_order', 'name' => 'gallery_defaults][order', 'value' => esc_attr($defaults['order']), 'options' => DG_Gallery::getOrderOptions(), 'option_name' => DG_OPTION_NAME, 'description' => __('Ascending or decending sorting of documents', 'document-gallery') )); add_settings_field( 'gallery_defaults_orderby', 'orderby', array(__CLASS__, 'renderSelectField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_orderby', 'name' => 'gallery_defaults][orderby', 'value' => esc_attr($defaults['orderby']), 'options' => DG_Gallery::getOrderbyOptions(), 'option_name' => DG_OPTION_NAME, 'description' => __('Which field to order documents by', 'document-gallery') )); add_settings_field( 'gallery_defaults_relation', 'relation', array(__CLASS__, 'renderSelectField'), 'document_gallery', 'gallery_defaults', array ( 'label_for' => 'label_gallery_defaults_relation', 'name' => 'gallery_defaults][relation', 'value' => esc_attr($defaults['relation']), 'options' => DG_Gallery::getRelationOptions(), 'option_name' => DG_OPTION_NAME, 'description' => __('Whether matched documents must have all taxa_names (AND) or at least one (OR)', 'document-gallery') )); add_settings_field( 'thumber_active_av', 'Audio/Video', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'thumber_active', array ( 'label_for' => 'label_thumber_active_av', 'name' => 'thumber_active][av', 'value' => esc_attr($thumber_active['av']), 'option_name' => DG_OPTION_NAME, 'description' => esc_html__('Locally generate thumbnails for audio & video files.', 'document-gallery') )); add_settings_field( 'thumber_active_gs', 'Ghostscript', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'thumber_active', array ( 'label_for' => 'label_thumber_active_gs', 'name' => 'thumber_active][gs', 'value' => esc_attr($thumber_active['gs']), 'option_name' => DG_OPTION_NAME, 'description' => DG_Thumber::getGhostscriptExecutable() ? __('Use Ghostscript for faster local PDF processing (compared to Imagick).', 'document-gallery') : __('Your server is not configured to run Ghostscript.', 'document-gallery'), 'disabled' => !DG_Thumber::getGhostscriptExecutable() )); add_settings_field( 'thumber_active_imagick', 'Imagick', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'thumber_active', array ( 'label_for' => 'label_thumber_active_imagick', 'name' => 'thumber_active][imagick', 'value' => esc_attr($thumber_active['imagick']), 'option_name' => DG_OPTION_NAME, 'description' => DG_Thumber::isImagickAvailable() ? __('Use Imagick to handle lots of filetypes locally.', 'document-gallery') : __('Your server is not configured to run Imagick.', 'document-gallery'), 'disabled' => !DG_Thumber::isImagickAvailable() )); add_settings_field( 'thumber_active_google', 'Google Drive Viewer', array(__CLASS__, 'renderCheckboxField'), 'document_gallery', 'thumber_active', array ( 'label_for' => 'label_thumber_active_google', 'name' => 'thumber_active][google', 'value' => esc_attr($thumber_active['google']), 'option_name' => DG_OPTION_NAME, 'description' => DG_Thumber::isGoogleDriveAvailable() ? __('Use Google Drive Viewer to generate thumbnails for MS Office files and many other file types remotely.', 'document-gallery') : __('Your server does not allow remote HTTP access.', 'document-gallery'), 'disabled' => !DG_Thumber::isGoogleDriveAvailable() )); add_settings_field( 'thumber_advanced_gs', 'Ghostscript Absolute Path', array(__CLASS__, 'renderTextField'), 'document_gallery', 'thumber_advanced', array ( 'label_for' => 'label_thumber_advanced_gs', 'name' => 'thumber_advanced][gs', 'value' => esc_attr($thumber_gs), 'option_name' => DG_OPTION_NAME, 'description' => $thumber_gs ? __('Successfully auto-detected the location of Ghostscript.', 'document-gallery') : __('Failed to auto-detect the location of Ghostscript.', 'document-gallery') )); } /** * Render the Default Settings section. */ public static function renderDefaultSettingsSection() { ?>

style.css.'), DG_URL . 'assets/css/style.css'); ?>

really know what you\'re doing, you should not touch these values.', 'document-gallery'); ?>

exec() is not accessible. Ghostscript will not function.', 'document-gallery'); ?>

%6$s', $args['option_name'], $args['name'], $args['label_for'], checked($args['value'], 1, false), $args['disabled'] ? 'disabled="disabled"' : '', $args['description']); } /** * Render a text field. * @param array $args */ public static function renderTextField($args) { printf(' %5$s', $args['value'], $args['option_name'], $args['name'], $args['label_for'], $args['description']); } /** * Render a select field. * @param array $args */ public static function renderSelectField($args) { printf(' ' . $args['description']; } /** * Validates submitted options, sanitizing any invalid options. * @param array $values User-submitted new options. * @return array Sanitized new options. */ public static function validateSettings($values) { include_once DG_PATH . 'inc/class-gallery.php'; global $dg_options; $ret = $dg_options; // handle gallery shortcode defaults $errs = array(); $ret['gallery']['defaults'] = DG_Gallery::sanitizeDefaults($values['gallery_defaults'], $errs); foreach ($errs as $k => $v) { add_settings_error(DG_OPTION_NAME, str_replace('_', '-', $k), $v); } // handle setting the active thumbers foreach ($ret['thumber']['active'] as $k => $v) { $ret['thumber']['active'][$k] = isset($values['thumber_active'][$k]); } // if new thumbers available, clear failed thumbnails for retry foreach ($dg_options['thumber']['active'] as $k => $v) { if (!$v && $ret['thumber']['active'][$k]) { foreach ($dg_options['thumber']['thumbs'] as $k => $v) { if (false === $v) { unset($ret['thumber']['thumbs'][$k]); } } break; } } // handle modified CSS if (trim($ret['css']['text']) !== trim($values['css'])) { $ret['css']['text'] = trim($values['css']); $ret['css']['minified'] = DocumentGallery::compileCustomCss($ret['css']['text']); $ret['css']['version']++; $ret['css']['last-modified'] = gmdate('D, d M Y H:i:s'); $ret['css']['etag'] = md5($ret['css']['last-modified']); } // handle setting the Ghostscript path if (isset($values['thumber_advanced']['gs']) && 0 != strcmp($values['thumber_advanced']['gs'], $ret['thumber']['gs'])) { if (false === strpos($values['thumber_advanced']['gs'], ';')) { $ret['thumber']['gs'] = $values['thumber_advanced']['gs']; } else { add_settings_error(DG_OPTION_NAME, 'thumber-gs', __('Invalid Ghostscript path given: ', 'document-gallery') . $values['thumber_advanced']['gs']); } } return $ret; } /** * Blocks instantiation. All functions are static. */ private function __construct() { } }