Example #1
0
 <?php 
        the_author_posts_link();
        ?>
			</p>
			
			<a href="<?php 
        bloginfo('url');
        ?>
/status/<?php 
        echo quality_ticket_status($post->ID, 'slug');
        ?>
/" class="ticket-status <?php 
        echo quality_ticket_status($post->ID, 'slug');
        ?>
"><?php 
        echo quality_ticket_status($post->ID, 'name');
        ?>
</a>
			
			<h2 class="ticket-title">
				<a href="<?php 
        the_permalink();
        ?>
" title="<?php 
        printf(esc_attr__('Permalink to %s', 'quality'), the_title_attribute('echo=0'));
        ?>
" rel="bookmark"><?php 
        the_title();
        ?>
</a>
			</h2> 
Example #2
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 
}
Example #3
0
/**
 * Create a shortcode so tickets can be easily
 * called when creating/updating tickets.
 *
 * [ticket id=""] where id is the ID of the post (ticket).
 *
 * @since Quality Control 0.1.4
 */
function quality_link_ticket_shortcode($atts, $content = null)
{
    global $quality_options;
    extract(shortcode_atts(array('id' => 0, 'before' => '', 'after' => ''), $atts));
    $ticket = get_post(absint($id));
    if ($ticket->post_status != 'publish') {
        return apply_filters('quality_invalid_ticket_shortcode', '#' . $id);
    }
    if (empty($content)) {
        $content = '#' . $ticket->ID;
    }
    if (quality_ticket_status($ticket->ID) == $quality_options['ticket_resolved_state']) {
        $class = quality_ticket_status($ticket->ID, 'slug');
    }
    $link = $before;
    $link .= sprintf('<a href="%1$s" title="%4$s" class="link-to-ticket %3$s">%2$s</a>', get_permalink($ticket->ID), $content, $class, $ticket->post_title . ' [' . quality_ticket_status($ticket->ID, 'name') . ']');
    $link .= $after;
    return apply_filters('quality_link_ticket_shortcode', $link);
}
Example #4
0
/**
 * When a comment has been created, check to see if they are updating the milestone.
 * If they are, actually update the milestone, but then also provide a string which
 * says what is updated.
 *
 * @since Quality Control 0.1.2
 * @uses wp_set_object_terms
 * @uses get_term
 */
function quality_update_ticket_milestone($post, $comment_meta)
{
    global $updates;
    $ticket_milestone = get_term(esc_attr($comment_meta['ticket_milestone']), 'ticket_milestone');
    if ($ticket_milestone->term_id != quality_ticket_status($post->ID, 'term_id', 'ticket_milestone')) {
        $updates[] = apply_filters('quality_comment_milestone_updated', sprintf(__('<strong>milestone</strong> changed from <em>%s</em> to <em>%s</em>', 'quality'), quality_ticket_status($post->ID, 'name', 'ticket_milestone'), $ticket_milestone->name));
        $milestone = wp_set_object_terms($post->ID, intval($ticket_milestone->term_id), 'ticket_milestone', false);
        return $updates;
    }
}