options_group, $assignment_desk->get_plugin_option_fullname('general'), array(&$this, 'validate_general_settings') ); /* General */ add_settings_section( 'general', 'General', array(&$this, 'general_setting_section'), $assignment_desk->top_level_page ); add_settings_field( 'default_new_assignment_status', 'Default assignment status', array(&$this, 'default_new_assignment_status_option'), $assignment_desk->top_level_page, 'general' ); add_settings_field( 'default_workflow_status', 'Default workflow status', array(&$this, 'default_workflow_status_option'), $assignment_desk->top_level_page, 'general' ); /* Assignment Management */ add_settings_section( 'assignment_management', 'Assignment Management', array(&$this, 'assignment_management_setting_section'), $assignment_desk->top_level_page ); add_settings_field( 'assignment_email_notifications_enabled', 'Enable assignment email notifications', array(&$this, 'assignment_email_notifications_enabled_option'), $assignment_desk->top_level_page, 'assignment_management' ); add_settings_field( 'assignment_email_template_subject', 'Subject template for notifications', array(&$this, 'assignment_email_template_subject_option'), $assignment_desk->top_level_page, 'assignment_management' ); add_settings_field( 'assignment_email_template', 'Template for notifications', array(&$this, 'assignment_email_template_option'), $assignment_desk->top_level_page, 'assignment_management' ); register_setting( $assignment_desk->pitch_form_options_group, $assignment_desk->get_plugin_option_fullname('pitch_form'), array($this, 'validate_pitch_form_settings') ); /* Pitch form */ add_settings_section( 'story_pitches', 'Story Pitches', array(&$this, 'story_pitches_setting_section'), $assignment_desk->pitch_form_settings_page ); add_settings_field( 'pitch_form_enabled', 'Enable pitch forms', array(&$this, 'pitch_form_enabled_option'), $assignment_desk->pitch_form_settings_page, 'story_pitches' ); add_settings_field( 'pitch_form_elements', 'Pitch form elements', array(&$this, 'pitch_form_elements_option'), $assignment_desk->pitch_form_settings_page, 'story_pitches' ); add_settings_field( 'pitch_form_success_message', 'Success message', array(&$this, 'pitch_form_success_message_option'), $assignment_desk->pitch_form_settings_page, 'story_pitches' ); add_settings_field( 'pitch_form_notification_emails', 'Send email for new pitches', array(&$this, 'pitch_form_notification_emails_option'), $assignment_desk->pitch_form_settings_page, 'story_pitches' ); add_settings_field( 'pitch_form_email_template_subject', 'Subject template for notifications', array(&$this, 'pitch_form_email_template_subject_option'), $assignment_desk->pitch_form_settings_page, 'story_pitches' ); add_settings_field( 'pitch_form_email_template', 'Template for notifications', array(&$this, 'pitch_form_email_template_option'), $assignment_desk->pitch_form_settings_page, 'story_pitches' ); register_setting( $assignment_desk->public_facing_options_group, $assignment_desk->get_plugin_option_fullname('public_facing'), array($this, 'validate_public_facing_settings')); /* Public-facing */ add_settings_section( 'public_facing_views', 'Public-Facing Views', array(&$this, 'public_facing_views_setting_section'), $assignment_desk->public_facing_settings_page ); add_settings_field( 'public_facing_assignment_statuses[]', 'Public-facing assignment statuses', array(&$this, 'public_facing_assignment_statuses'), $assignment_desk->public_facing_settings_page, 'public_facing_views' ); add_settings_field( 'public_facing_filtering', 'Public-facing filtering', array(&$this, 'public_facing_filtering_option'), $assignment_desk->public_facing_settings_page, 'public_facing_views' ); add_settings_field( 'public_facing_elements', 'Public-facing elements', array(&$this, 'public_facing_elements_option'), $assignment_desk->public_facing_settings_page, 'public_facing_views' ); add_settings_field( 'public_facing_functionality', 'Public-facing functionality', array(&$this, 'public_facing_functionality_option'), $assignment_desk->public_facing_settings_page, 'public_facing_views' ); add_settings_field( 'public_facing_no_pitches_message', 'Message to show if no pitches', array(&$this, 'public_facing_no_pitches_message_option'), $assignment_desk->public_facing_settings_page, 'public_facing_views' ); add_settings_field( 'public_facing_logged_out_message', 'Message to show if logged out', array(&$this, 'public_facing_logged_out_message_option'), $assignment_desk->public_facing_settings_page, 'public_facing_views' ); } /** * Define all of the default settings. */ function setup_defaults() { global $assignment_desk, $wpdb; $options = $assignment_desk->general_options; if ( $assignment_desk->edit_flow_enabled() ) { global $edit_flow; $default_workflow_status = get_term_by('slug', $edit_flow->options['custom_status_default_status'], $edit_flow->custom_status->status_taxonomy); $options['default_workflow_status'] = $default_workflow_status->term_id; } // @todo - Why does get_term_by not work during activation? // $new_status = get_term_by('slug', 'new', $assignment_desk->custom_taxonomies->assignment_status_label); $new_status = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = '{$assignment_desk->custom_taxonomies->assignment_status_label}' AND t.slug = 'new' LIMIT 1"); $new_status = $new_status[0]; $options['default_new_assignment_status'] = $new_status->term_id; $options['assignment_email_notifications_enabled'] = true; $options['assignment_email_template_subject'] = _("[%blogname%] You've been assigned to %title%"); $options['assignment_email_template'] = _( "Hello %display_name%, You've been assigned to the story %title%. Please login to %dashboard_link% to accept or decline. Thanks Blog Editor"); update_option($assignment_desk->get_plugin_option_fullname('general'), $options); // Public facing defaults $public_facing_options = $assignment_desk->public_facing_options; $approved_status = $wpdb->get_results("SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = '{$assignment_desk->custom_taxonomies->assignment_status_label}' AND t.slug = 'approved' LIMIT 1"); $approved_status = $approved_status[0]; $public_facing_options['public_facing_assignment_statuses'] = array($approved_status->term_id); // Public facing pitch elements $public_facing_options['public_facing_post_status_enabled'] = true; $public_facing_options['public_facing_description_enabled'] = true; $public_facing_options['public_facing_duedate_enabled'] = true; $public_facing_options['public_facing_location_enabled'] = true; $public_facing_options['public_facing_categories_enabled'] = true; $public_facing_options['public_facing_tags_enabled'] = true; $public_facing_options['public_facing_pitched_by_enabled'] = true; $public_facing_options['public_facing_filtering_post_status_enabled'] = true; $public_facing_options['public_facing_filtering_participant_type_enabled'] = true; $public_facing_options['public_facing_filtering_sort_by_enabled'] = true; $public_facing_options['public_facing_volunteering_enabled'] = true; $public_facing_options['public_facing_voting_enabled'] = true; $public_facing_options['public_facing_commenting_enabled'] = true; $public_facing_options['public_facing_no_pitches_message'] = _('No stories right now.'); $public_facing_options['public_facing_logged_out_message'] = _('Sorry, you must be logged in to vote or volunteer.'); update_option($assignment_desk->get_plugin_option_fullname('public_facing'), $public_facing_options); // Pitch form defaults $pitch_form_options = $assignment_desk->pitch_form_options; $pitch_form_options['pitch_form_enabled'] = true; $pitch_form_options['pitch_form_description_enabled'] = true; $pitch_form_options['pitch_form_categories_enabled'] = true; $pitch_form_options['pitch_form_tags_enabled'] = true; $pitch_form_options['pitch_form_duedate_enabled'] = true; $pitch_form_options['pitch_form_location_enabled'] = true; $pitch_form_options['pitch_form_volunteer_enabled'] = true; $pitch_form_options['pitch_form_email_template_subject'] = _("[%blogname%] A new pitch was submitted. %title%"); $pitch_form_options['pitch_form_email_template'] = _( "Hello, You've received a new pitch from %submitter_display_name%: %title%. Please login to %dashboard_link% to check it out. Once logged in you can view the pitch at %post_link%. Thanks %blogname%"); update_option($assignment_desk->get_plugin_option_fullname('pitch_form'), $pitch_form_options); } function default_new_assignment_status_option() { global $assignment_desk; $options = $assignment_desk->general_options; $assignment_statuses = $assignment_desk->custom_taxonomies->get_assignment_statuses(); if ( count($assignment_statuses) ) { echo ''; } else { echo "No statuses set. Please create at least one assignment status."; } } /** * default_workflow_status_option() * Define post status for newly submitted pitches * @requires Edit Flow */ function default_workflow_status_option() { global $assignment_desk; if ( $assignment_desk->edit_flow_enabled( 'custom_post_statuses' ) ) { global $edit_flow; $options = $assignment_desk->general_options; $post_statuses = $edit_flow->custom_status->get_custom_statuses(); echo '
'; echo 'Indicate the status in your workflow a new story pitch should be given.'; } else { echo 'Please enable Edit Flow to define custom workflow statuses. Without Edit Flow, new pitches will be saved with a post status of "draft"'; } } // END default_workflow_status_option() function general_setting_section() { global $assignment_desk; } function assignment_management_setting_section() { global $assignment_desk; } function assignment_email_notifications_enabled_option() { global $assignment_desk; $options = $assignment_desk->general_options; echo ''; } function assignment_email_template_subject_option() { global $assignment_desk; $options = $assignment_desk->general_options; echo ''; } function assignment_email_template_option() { global $assignment_desk; $options = $assignment_desk->general_options; echo ''; echo '

' . _('Template supports the following tokens') . ': %blogname%, %title%, %excerpt%, %description%, %duedate%, %role%, %display_name%, %location%, %post_link%, and %dashboard_link%.

'; } function story_pitches_setting_section() { global $assignment_desk; echo "Add an Assignment Desk pitch form to any page or post by adding <!--$assignment_desk->pitch_form_key--> where you'd it to appear."; } function pitch_form_enabled_option() { global $assignment_desk; $options = $assignment_desk->pitch_form_options; echo ''; } /** * Enable/disable data elements on pitch form */ function pitch_form_elements_option() { global $assignment_desk; if ($assignment_desk->edit_flow_enabled()) { global $edit_flow; } $options = $assignment_desk->pitch_form_options; echo ''; } function pitch_form_success_message_option() { global $assignment_desk; $options = $assignment_desk->pitch_form_options; echo ''; echo '

' . _('Optional: Enter a custom success message') . '

'; echo '

' . _('Message supports the following tokens') . ': %title%.

'; } function pitch_form_notification_emails_option() { global $assignment_desk; $options = $assignment_desk->pitch_form_options; echo ''; echo '

' . _('Enter comma separated list of email addresses to receive notifications on form submissions. You can notify the submitter by adding %submitter_email%') . '

'; } function pitch_form_email_template_subject_option() { global $assignment_desk; $options = $assignment_desk->pitch_form_options; echo ''; } function pitch_form_email_template_option() { global $assignment_desk; $options = $assignment_desk->pitch_form_options; echo ''; echo '

' . _('Template supports the following tokens') . ': %blogname%, %title%, %excerpt%, %description%, %duedate%, %submitter_email%, %submitter_display_name%, %location%, %post_link%, and %dashboard_link%.

'; } function public_facing_views_setting_section() { global $assignment_desk; echo "Enable public access to pitches and stories in progress by dropping <!--$assignment_desk->all_posts_key--> in a page."; } /** * Admin can choose which assignment statuses will be visible on the public-facing views. */ function public_facing_assignment_statuses() { global $assignment_desk; $options = $assignment_desk->public_facing_options; $public_statuses = $options['public_facing_assignment_statuses']; if ( !is_array($public_statuses) ) { $public_statuses = array((int)$public_statuses); } echo ""; echo ""; } function public_facing_filtering_option() { global $assignment_desk; $options = $assignment_desk->public_facing_options; // Filter by post status echo '  '; // Filter by participant type echo '  '; // Sort by echo ' '; echo '

Indicate the different ways the user can filter posts.'; } function public_facing_elements_option() { global $assignment_desk; if ($assignment_desk->edit_flow_enabled()) { global $edit_flow; } $options = $assignment_desk->public_facing_options; echo 'Which elements of the pitch to show on the public pitch listing.'; echo '

'; } function public_facing_functionality_option() { global $assignment_desk; if ($assignment_desk->edit_flow_enabled()) { global $edit_flow; } $options = $assignment_desk->public_facing_options; echo ''; } function public_facing_no_pitches_message_option() { global $assignment_desk; $options = $assignment_desk->public_facing_options; echo ''; } function public_facing_logged_out_message_option() { global $assignment_desk; $options = $assignment_desk->public_facing_options; echo ''; } /** * Validation for the general settings elements */ function validate_general_settings($input) { // @todo - Validate other general settings elements $input['default_new_assignment_status'] = (int)$input['default_new_assignment_status']; return $input; } /** * Validation for the pitch form settings elements */ function validate_pitch_form_settings( $input ){ // Sanitize the list of email addresses that receive new pitch notififcations. $email_addresses = explode(',', $input['pitch_form_notification_emails']); $sanitized_email_addresses = array(); foreach ( $email_addresses as $email_address ) { $email_address = str_replace(' ', '', $email_address); // remove spaces if ( ($email_address == '%submitter_email%') || is_email($email_address) ){ // token of email address $sanitized_email_addresses[] = $email_address; } } // De-dupe the email addresses $sanitized_email_addresses = array_unique( $sanitized_email_addresses ); $input['pitch_form_notification_emails'] = implode(', ', $sanitized_email_addresses); return $input; } /** * Validation for the public facing settings elements */ function validate_public_facing_settings( $input ){ return $input; } function general_settings() { global $wpdb, $assignment_desk; $msg = null; if ( array_key_exists( 'updated', $_GET ) && $_GET['updated']=='true' ) { $msg = __('Settings Saved', 'assignment-desk'); } ?>

options_group ); ?> top_level_page ); ?>


pitch_form_options_group ); ?> pitch_form_settings_page ); ?>


public_facing_options_group ); ?> public_facing_settings_page ); ?>