Exemple #1
0
/**
 * Outputs a complete ticket form for use within a template.
 * Most strings and form fields may be controlled through the $args array passed
 * into the function, while you may also choose to use the ticket_form_basic_fields,
 * ticket_form_advanced_fields, or ticket_form_meta_fields
 * filter to modify the array of default fields if you'd just like to add a new
 * one or remove a single field. All fields are also individually passed through
 * a filter of the form ticket_form_field_$name where $name is the key used
 * in the array of fields.
 *
 * @since Quality Control 0.1.5
 * @param array $args Options for strings, fields, etc in the form.
 * @param mixed $post_id Post ID to generate the form for, uses current post if null.
 * @return void
 */
function quality_ticket_form($args = array(), $post_id = null)
{
    global $post, $quality_options;
    $category = get_the_category($post->ID);
    $taglist = quality_get_ticket_tags($post->ID);
    if ($args['location'] == 'page') {
        $taglist = quality_form_data('ticket_tags');
    }
    $basic_fields = array('id' => 'ticket', 'label' => __('Basic Info', 'quality'), 'fields' => array('title' => '<p id="ticket-title">
								<label for="ticket_title">' . __('Title:', 'quality') . '</label>
								<input type="text" name="ticket_title" value="' . quality_form_data('ticket_title') . '" />
							</p>', 'tags' => '<p id="ticket-tags">
								<label for="ticket_tags">' . __('Tags: <em>(Optional)</em>', 'quality') . '</label>
								<input type="text" name="ticket_tags" value="' . $taglist . '" />
							</p>', 'comment' => '<p>
								<label for="comment">' . __('Description:', 'quality') . '</label>
								<textarea name="comment" id="comment"></textarea>
							</p>'));
    $advanced_fields = array('id' => 'ticket-properties', 'label' => __('Ticket Properties', 'quality'), 'fields' => array('ticket-status' => '<p id="ticket-status" class="inline-input">
										<label for="ticket_status">' . __('Status:', 'quality') . '</label>' . wp_dropdown_categories(array('name' => 'ticket_status', 'hide_empty' => 0, 'taxonomy' => 'ticket_status', 'hierarchical' => 1, 'selected' => $args['location'] == 'page' ? quality_form_data('ticket_status') ? quality_form_data('ticket_status') : $quality_options['default_status'] : quality_ticket_status($post->ID), 'echo' => 0)) . '
									</p>', 'ticket-milestone' => '<p id="ticket-milestone" class="inline-input">
										<label for="ticket_milestone">' . __('Milestone:', 'quality') . '</label>' . wp_dropdown_categories(array('name' => 'ticket_milestone', 'hide_empty' => 0, 'taxonomy' => 'ticket_milestone', 'hierarchical' => 1, 'selected' => $args['location'] == 'page' ? quality_form_data('ticket_milestone') : quality_ticket_status($post->ID, 'term_id', 'ticket_milestone'), 'echo' => 0)) . '
									</p>', 'ticket-category' => '<p id="ticket-category" class="inline-input">
										<label for="ticket_category">' . __('Category:', 'quality') . '</label>' . wp_dropdown_categories(array('name' => 'ticket_category', 'hide_empty' => 0, 'hierarchical' => 1, 'selected' => $args['location'] == 'page' ? quality_form_data('ticket_category') ? quality_form_data('ticket_category') : get_option('default_category') : $category[0]->cat_ID, 'echo' => 0)) . '
									</p>', 'ticket-assign' => '<p id="ticket-assign" class="inline-input">
										<label for="ticket_assign">' . __('Assigned To: <em>(Optional) Separated multiple usernames by comma. You are automatically assigned.</em>', 'quality') . '</label>
										<input type="text" name="ticket_assign" value="' . ($args['location'] == 'ticket' ? quality_get_ticket_assigned_to() : quality_form_data('ticket_assign')) . '" />
									</p>'));
    $meta_fields = array('id' => 'ticket-meta', 'label' => __('Other Options', 'quality'), 'fields' => array('ticket-attachment' => '<p id="ticket-attachment">
										<label for="ticket_attachment">' . __('Attach File', 'quality') . '</label>
										<input type="file" name="ticket_attachment" id="ticket_attachment"/>
									</p>'));
    $defaults = array('location' => 'page', 'basic_fields' => apply_filters('ticket_form_basic_fields', $basic_fields), 'advanced_fields' => apply_filters('ticket_form_advanced_fields', $advanced_fields), 'meta_fields' => apply_filters('ticket_form_meta_fields', $meta_fields), 'ticket_form_before' => '', 'ticket_form_after' => '', 'id_form' => 'ticket_form', 'id_submit' => 'submit', 'label_submit' => $args['location'] == 'page' ? __('Create Ticket', 'quality') : __('Update Ticket', 'quality'));
    $args = wp_parse_args($args, apply_filters('ticket_form_defaults', $defaults));
    if ($args['location'] == 'ticket') {
        unset($args['basic_fields']['fields']['title']);
        unset($args['advanced_fields']['fields']['ticket-cc']);
    }
    ?>

	<?php 
    do_action('ticket_form_before');
    ?>
	
	<form action="<?php 
    echo $args['location'] == 'page' ? '#respond' : site_url('wp-comments-post.php');
    ?>
" method="post" name="add-ticket" enctype="multipart/form-data" id="<?php 
    echo esc_attr($args['id_form']);
    ?>
">
	
		<?php 
    do_action('ticket_form_top');
    ?>
		
		<?php 
    do_action('ticket_form_before_fields');
    ?>
	
		<fieldset id="<?php 
    echo esc_attr($args['basic_fields']['id']);
    ?>
">
		
			<legend><?php 
    echo esc_attr($args['basic_fields']['label']);
    ?>
</legend>
		
			<?php 
    do_action('ticket_form_before_basic_fields');
    foreach ($args['basic_fields']['fields'] as $name => $field) {
        echo apply_filters("ticket_form_field_{$name}", $field) . "\n";
    }
    do_action('ticket_form_after_basic_fields');
    ?>
			
		</fieldset>
		
		<fieldset id="<?php 
    echo esc_attr($args['advanced_fields']['id']);
    ?>
">
			
			<legend><?php 
    echo esc_attr($args['advanced_fields']['label']);
    ?>
</legend>
		
			<?php 
    do_action('ticket_form_before_advanced_fields');
    foreach ($args['advanced_fields']['fields'] as $name => $field) {
        echo apply_filters("ticket_form_field_{$name}", $field) . "\n";
    }
    do_action('ticket_form_after_advanced_fields');
    ?>
		
		</fieldset>
		
		<fieldset id="<?php 
    echo esc_attr($args['meta_fields']['id']);
    ?>
">
			
			<legend><?php 
    echo esc_attr($args['meta_fields']['label']);
    ?>
</legend>
		
			<?php 
    do_action('ticket_form_before_meta_fields');
    foreach ($args['meta_fields']['fields'] as $name => $field) {
        echo apply_filters("ticket_form_field_{$name}", $field) . "\n";
    }
    do_action('ticket_form_after_meta_fields');
    ?>
		
		</fieldset>
		
		<?php 
    do_action('ticket_form_after_fields');
    ?>
		
		<p id="ticket-create">
		
			<?php 
    if ($args['location'] == 'page') {
        ?>
				<input type="hidden" name="create_ticket" value="proccess" />
			<?php 
    } else {
        ?>
				<?php 
        do_action('comment_form', $post->ID);
        ?>
				<?php 
        comment_id_fields();
        ?>
			<?php 
    }
    ?>
			
			<input type="submit" name="submit" id="<?php 
    echo esc_attr($args['id_submit']);
    ?>
" value="<?php 
    echo esc_attr($args['label_submit']);
    ?>
" />
		</p>
		
		<?php 
    do_action('ticket_form_bottom');
    ?>
		
	</form>
	
	<?php 
    do_action('ticket_form_after');
    ?>

<?php 
}
Exemple #2
0
									
									</ol>
									
								</li>
								
								<?php 
            comments_template();
            ?>
								
								<?php 
        } else {
            ?>

								<li class="ticket no-results">
									<?php 
            printf(__('Sorry, you are not assigned to this ticket, and therefore cannot view it. It is currently assigned to %s', 'quality'), quality_get_ticket_assigned_to());
            ?>
								</li>
								
								<?php 
        }
        ?>
							
							</ol>
						
						</div>
						
					</div><!-- #post -->

				<?php 
    }
Exemple #3
0
/**
 * When a comment has been created, check to see if the assigned
 * users have been changed. If so, see if you can find the difference.
 *
 * @since Quality Control 0.1.2
 * @uses wp_set_object_terms
 * @uses get_term
 */
function quality_update_ticket_owners($post, $comment_meta)
{
    global $updates;
    $ticket_owners = $comment_meta['ticket_assign'];
    if ($ticket_owners != quality_get_ticket_assigned_to()) {
        $updates[] = apply_filters('quality_comment_owners_updated', sprintf(__('<strong>owner(s)</strong> changed from <em>%s</em> to <em>%s</em>', 'quality'), quality_get_ticket_assigned_to(), $ticket_owners));
        $ticket_owners = explode(",", $ticket_owners);
        $owners = array();
        delete_post_meta($post->ID, '_assigned_to');
        foreach ($ticket_owners as $owner) {
            $owner = get_userdatabylogin($owner);
            //$owners[] = $owner->ID;
            add_post_meta($post->ID, '_assigned_to', $owner->ID);
        }
        //$owners = update_post_meta( $post->ID, '_assigned_to', $owners );
        return $updates;
    }
}