Quality Control WordPress Theme

View The Official Site

This WordPress theme was designed to allow the creation, and tracking, of tickets. It was kept simple, and packaged lightly, allowing the user to use it however he/she wants. Just the essentials have been added, and the rest is up to you.

The idea is to provide a base “framework” of sorts, that creates the core functionality needed for ticket tracking, but leaves room for the user to take it in any direction they want.

I’m sure there are many bugs, but that’s why I’m doing a soft release here first. I’ll update any bugs that are reported (email me at [spencerfinnell (at) gmail (dot) com]) then upload it to the WordPress.org Theme Directory.

View The Official Site

143 thoughts on “Quality Control WordPress Theme

  1. Wow, if this rocks as hard as I think it will, I’m totally sending donation money! Looks great so far, taking it for a test spin now.

  2. Excellent implementation. I’ve setup a custom section to my WordPress site just for my clients where I have built something very similar, but I must admit it appears as though you’ve done a better job.

    Congratz! I’ll be looking into using this as well… if I decide it’s worth switching—expect a donation.

    -B

  3. I got this error after I installed the theme:
    Fatal error: Call to undefined function wp_nav_menu() in C:\Programs\xampp\htdocs\express\wp-content\themes\quality-control\header.php on line 48

  4. Pingback: Convierte a WordPress en un bug tracker con Quality Control

  5. This is one hell of a theme. I not only does it have amazing function that I never thought possible from wordpress, but it has form as well.

    Major congratz to you! I know that I wont be considering anything else for quite some time when it comes to ticket systems :D

  6. Excellent theme, i can imagine this now being featured and talked about on all the big sites when they create a list of superb WP themes.

    Congrats.

  7. Pingback: Un thème pour transformer WordPress en un système de support technique ! sur Geekeries.fr | Découvrir WordPress

  8. Pingback: links for 2010-08-27 « Giri’s Blogmarks

  9. Great theme. and brilliant idea! One question though. On your demo you have the option to “create a ticket” on the front screen. This doesnt seem to be a default option for registered users. How do you make this option ‘”active”?

    • When you install it on your own server, make sure you create a “Create a Ticket” page and apply the page template. Then in the Quality Control Options, select the page. The link in the main navigation bar should then show up.

  10. Pingback: links for 2010-08-27 « Giri’s Blogmarks

  11. Quick question – I’m working on a child theme and was wondering how I’d go about changing the “Milestones” to “Theme” since I’m using this for a theme site support ticket system, it makes more sense than Milestones. Just wanted to see if you knew of a way to do this as I am not very familiar with Child Themes.

    • Um…. There is really an easy way that I can think of. You’d have to remove the taxonomy, and then change it throughout the theme.

      But wouldn’t milestones still work for a theme support system? I have it setup for one, and I use Milestones like (0.1, 0.2, etc) and then just create a category for each theme.

      • Hey Spencer,

        Yeah, using the categories for the themes would work well, but for the milestones being used as the theme version, it kind of throws things off to me a bit – I’d know it was the theme version, but it may be easier for users to see it as “version” so they know what it’s for.

        I’m digging into it now. If/when I come up with a child theme for it, I’ll let you know and will release it to the public as well. This is an awesome theme idea by the way – thanks again for releasing it.

  12. Pingback: links for 2010-08-27 « Giri’s Blogmarks

  13. Hi it’s GREAT.. i love it even as a template but i have one question-how to make Create ticket page?? what should i put? is there any shortcode to put in editor??

    thanks.

    • When you are creating the page, select the “Create Ticket” page template. The form will appear below any content you add in the body.

      • Thaks man for quick replay! I’m to poor to donate any money, but man..this is AWESOME stuff.. people can use it as they want..not only ticket-bug tracker… thanks! Only people like you makes others feel that opensource really metters (as joomla says) :)

        good luck!

  14. Pingback: 12 Creative Uses of WordPress | kmsm

  15. I’m far from having any use for this, but I find it incredible how flexible WordPress is for building any kind of site. And of course thank you a ton for creating this and giving it to the community for free.

  16. Pingback: Rapidop » Quality Control WordPress Theme

  17. Pingback: Link-urile săptămânii 23-29 August | Staicu Ionuţ-Bogdan - the Frontend Developer

  18. Pingback: Un thème pour transformer WordPress en un système de support technique ! | L.M Centre communautaire

  19. Pingback: Using WordPress As A Bug Tracker – Quality Control

  20. Spencer -

    This is great. Love it. We’ve been thinking about building a bug tracker on top of WordPress (and actually use it for core development). Seeing things like this done on WordPress is very inspiring, especially as we begin our next development cycle.

    Nacin

    • Glad you like it; it means a lot. I’m trying to get it into the WordPress.org theme repo, but things seem to be taking a while. I think I read somewhere they were updating that process?

      • They’ve whittled their backlog to about a week and most themes are improved under that time frame.

        I’m looking through it now. Not an official review, but it might as well be. Few things I’m noticing. Most of which should prevent approval of the theme, except for a security issue (end).

        – comments.php. Instead of get_option(‘siteurl’), use site_url(‘wp-comments-post.php’). It’s not only cleaner, but it handles HTTPS situations. Same with get_bloginfo(‘url’) in functions.php — that can become home_url(). (Also, don’t 301 redirect there; 302 is appropriate in that instance.)

        – Remove trailing whitespace from translations. e.g. ‘Milestone:’ instead of ‘Milestone: ‘.

        – @package should be Quality_Control, not WordPress.

        – Typo for the options global at the top of create_ticket.php.

        – For consistency it might help to know that get_bloginfo(‘template_directory’ ) can also be retrieved via get_template_directory_uri(). Perhaps easier to remember when get_template_directory() is the path.

        – I’m confused by tags being added to the tag?

        – In header.php, ‘Hey, ‘ is untranslatable. Should be ‘Hey, %s’, then use sprintf() to insert the name in place of %s. The translator will then be able to move %s where necessary.

        – No need to pass ID to get_author_posts_url(). It should just work on the author for the post currently being checked in the loop.

        – Since you’re calling is_user_logged_in() before you’re pulling the current user information, you can skip the whole get_currentuserinfo() bit and just pull from $current_user. is_user_logged_in() sets it.

        – In quality_save_comment() and quality_add_ticket() you may want to include wp-admin/includes/admin.php instead of just those three files, as there may be dependencies in the future that span outside of those files. (I’ve been bitten by this.)

        – In quality_add_ticket() you use esc_attr__() incorrectly. That’s for translation (hence __) and then escaping. You only need esc_attr(), however that’s actually only for output sanitization. In fact you don’t need it at all there, because wp_insert_post() will handle it for you.

        – if( !$_FILES[ 'ticket_attachment' ][ 'size' ] == 0 ) is goofy logic, with the !. A better check might be !empty( $_FILES['ticket_attachment']['size']).

        – You should have a sanitization callback for register_setting() that way you can verify, whitelist, sanitize incoming option values.

        – quality_form_data() has an XSS security vulnerability. If you’re going to use it directly into attributes, then you need to esc_attr() what you’re returning. Never trust information from $_POST and $_GET directly.

        Long comment. Sorry :-)

      • Thanks Andrew.

        Just a question about register_settings though. I assumed since I didn’t want to do any “special” validation of the options, the rest would be handled for me (whitelisting, etc).

        How would I validate multiple inputs that can have any number of values?

        Also, some of the things you mentioned where already fixed in the version I released last night. Is there a way I can update the version on WP.org to the latest one I have? Or do I need to wait for it to be declined?

      • Not sure what you mean by any number of values. Looking through inc/options.php quickly tells me a few things.

        1. Some options are storing a post_id or term_id.

        2. Other options are storing colors.

        Both can easily be whitelisted. post_id and term_id are always integers (absint()) and colors can be matched with a regular expression, removing the opening # and stripping non-hex, then verifying its length as either 3 or 6.

        The way to do a sanitization callback for register_setting() when you are actually storing many settings is something like this:

        function my_callback( $input ) {
           $output = array(); // Or maybe fetch existing, that way you have a fallback if, say, color is invalid.
           $output['page_id'] = absint( $input[ 'page_id' ] );
           $input['color'] = ltrim( $input['color'], '#' );
           $input['color'] = preg_replace( '/[^A-F0-9]/', '', $input['color'] );
           ...
           return $output;
        }

        Also again in inc/options.php make sure you are always escaping your attributes.

        If you want to re-upload, I can close the original ticket (we have a status for themes where a newer version is uploaded). I will then approve the new one since I have reviewed it. Because it is so unique, it’s not a good candidate for a typical review anyway. Just let me know.

  21. wow this is really great.

    As a test just tried to upload a gif on one of the ticket it fall apart:

    Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /home/spencerf/public_html/lab/pt/wp-content/plugins/pjw-mime-config/pjw-mime-config.php on line 254

    Warning: Invalid argument supplied for foreach() in /home/spencerf/public_html/lab/pt/wp-includes/functions.php on line 2365

    Catchable fatal error: Object of class WP_Error could not be converted to string in /home/spencerf/public_html/lab/pt/wp-content/themes/quality/inc/updates.php on line 133

    • If you tried on the live demo, it won’t work, as I don’t want people uploading stuff. Everything will work fine on your own installation.

  22. Pingback: Sumolari.com » Quality Control: Un theme para WordPress para gestionar nuestros proyectos

  23. Spence! Great theme. Awesome added functionality. I am using 3.0.1 and I cant click on the actual tickets though. I get a page not found.

    I think a really great option for this theme would be a colour selector. The yellow is fairly inaccessible. I’d like to pick either black or a darker blue. I know I can change it in the theme css files and images, but it’d be good if you’re going to put this out as a premium theme.

  24. Pingback: Crie um sistema de tickets ou report de bugs em Wordpress | Templates e Wordpress Themes

  25. Pingback: New Site: bugs.johnpbloch.com | JohnPBloch.com

  26. Very good and very usefull tool, thanks !

    I’ve found a missing parameter, for the indentation of the select dropdown on the create ticket page :

    'hierarchical' => 1,

    on line 83 of file create-ticket.php

    mikael

  27. Fantastic. I’m going to kick the tires a bit on this one.

    Something that would take this to the next level is breaking it down by project. You’d probably need an additional “project” taxonomy for that. And then you’d probably be looking to add clients to certain projects while restricting their access to other projects, which is where things become way more complex.

    Still, a great start on something that lots of us have been thinking about but doing nothing with.

    • Thanks Matt,

      There are certainly many different ways this can be expanded upon, but I’m still not sure what the best direction is.

      You could build a child theme based off this one, adding the extra taxonomy like you say, and updating a few files like navigation.php to include it. Then with other plugins (like a role/capability plugin), restrict certain projects to certain people.

      I’m cautious about adding more functionality to the base theme right away, and am probably going to wait until I get a better feeling of how other people are using it.

      But remember, it’s GPL, so you do whatever you want with it. Make it work how you want, and share it with us. :)

      • For sure. I’d love to find the time to hack on this and see what could be done. I may or may not have time to do so in the next while, but this was one of the first use-cases I thought of when custom post types where announced for WP 3.0 and I’m excited that someone’s taking a crack at it!

  28. So I’m very impressed with what you’ve done using the custom post types and taxonomies. I’ve already done some pretty heavy modifications to the Theme to suit my needs…. which brings me to my question:

    “Are you planning on maintaining this theme and releasing updates/enhancements to it? What I’ve done will undoubtedly break my upgrade path in the future, so I want to be smart/careful about how far I take this!”

    Thanks in advance for your thoughts.

    P.S. I’ve got a lot of ideas how to continue to improve this theme and would be happy to contribute time/energy to contribute code and ideas to the theme if you were to make it an open-source project where users of the theme could collaborate….

    • Thanks!

      I’m going to maintain, update, improve it for as long as I can.

      However, it’s currently in the queue for the WordPress.org Theme Directory, which means it’ll have it’s own SVN setup, and be archived forever. So you’ll always have access to the theme. I’ll also probably upload a copy of it to Git, so you can fork it (if you’re into that kind of stuff.)

      Since it’s GPL, you’re free to make any change/update you want, and redistribute it. And want it put in my version, then I’d be more than happy to do that (if I think it adds value.)

      If you want to get in touch, feel free to email me at [spencerfinnell (at) gmail (dot) com]

  29. Pingback: Quality Control Wordpress theme Ticket system | Social Media Marketing Consultant Blog

  30. IDEA:

    Why don’t we create an install of this theme to track bugs that people find within the theme?

    Seem obvious to anyone else? :-)

  31. Pingback: Using WordPress As A Bug Tracker – Quality Control | Rapid Library

  32. Pingback: Wordpress As A Bug Tracking Application: Quality Control | Greepit

    • Under “Settings” in the WordPress admin panel, you should see a link for “Quality Control.” In there you can set the colors.

      • You have already answered in your previous comments. I have seen it now, you may delete my comment.

      • I’m having the same problem, but can’t find the solution:

        When I click on a status in a ticket, wordpress directs me to a page like this -> http://www.*******.com/wp/status/yapildi/ However this page is not foun

        Can someone point me in the right direction? Is it a permalink issue? If so, what are the correct settings?

      • If you get a 404, try updating your permalinks. They may need to be refreshed.

        Go to Settings > Permalinks, and click save. This will update them.

  33. Spence, this is awesome. Thanks for sharing this. One question: can I configure the theme so that anyone can create a new ticket?

    • Yes, there are ways. I’m looking into making that an easier thing to do in the next version. Because right now, there’s now way of changing permissions without editing the theme directly.

      For now, if you want to, check out line 345 of tickets.php. Take out the current_user_can part. You’ll also need to edit create-ticket.php and take out the the is_user_logged_in line.

    • I’ve worked out a better solution, abstracting a lot of the code into multiple, hookable functions.

      So the next release you’ll easily be able to create a child theme and define you’re own permissions, and more.

  34. First I need to say: great work! Really great.

    I’ll use it in my next project, but things I’ve missed:

    1. If the user is not logged and click in “New Ticket” (page created) it shows a blank page. It would be nice to show a message like “Login to create a new ticket” with a link to login and redirecting to the New Ticket page. I’ve done that locally, but I think it is better if you do it in the official version of the theme.

    2. There would be nice if only logged user have access to it, not only to create tickets, but to see the tickets.

    3. I don’t know if it is possible.. to have the tickets assigned to users. Now, the tickets is “created by …” – and its ok. But in real world, who creates the ticket don’t work on it. So, not only “created by” but “assigned to” also.

    Thanks for the great job.

    • Hey,

      There will be more consistent control of permissions in the next version.

      I’m still trying to think of the best way to assign tickets too… keep a watch for future updates.

      • That’s great.

        Two small issues I noticed right now..

        - The States in the menu bar on top is in alphabetic order, but not in Taxonomy Widget.

        - The dropdown menu on the top bar is not working ok. There is a space between the bar and the dropdown menu (CSS issue). You need to be fast with the mouse.. lol. I’m using Chrome and Safari @ Mac OS X (all of them the latest version).

        thanks.

  35. Pingback: Thunder-Boy » Blog Archive » Utilizando Wordpress como Bug tracker

  36. Hi Spencer,

    Thanks so much for the great theme! I’ve got it running on http://bugs.johnpbloch.com to track bugs for my plugin(s) and main website. I’m really happy with the implementation. It’s great to see custom post types used in an inventive (and correct!) way.

    I’ve written a couple of plugins to help the functionality of the theme, like allowing for empty comments (sometimes I just want to update the tags, not leave a comment), and a redirect keeping non-admins out of the wp-admin area.

    Great work, and I can’t wait to see what you do with it next!

    • Cool John, looks great.

      Would you mind sharing the code for allowing blank comments? I wanted to put that in, but couldn’t find a way around it.

      • Sure, no problem! This is what I did:

        function jpb_comm(){
        $comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
        if(empty($comment_content))
        $_POST['comment'] = ‘ ’;
        }
        add_action(‘pre_comment_on_post’,'jpb_comm’);

      • Also, that should be   in the quotes there, so the last line of that function should be

        $_POST['comment'] = ' ';

      • So, all together now:


        function jpb_comm(){
        $comment_content = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
        if(empty($comment_content))
        $_POST['comment'] = ' ';
        }
        add_action('pre_comment_on_post','jpb_comm');

      • No problem!

        Another one I made allows the user to upload .diff and .patch files. If you’re interested, this is it:

        <?php
        function jpb_mimes( $mimes ){
        	$mimes['diff'] = 'text/plain';
        	$mimes['patch'] = 'text/plain';
        	return $mimes;
        }
        add_filter('upload_mimes', 'jpb_mimes');

        I haven’t figured out how to make it show the diff in any sane way yet, though… Right now, it’s just plain text.

      • Thanks for the snippet John. I’m going to leave that to the plugins though, as there are already plugins out there that allow you to add any mime types you want.

    • I have the same question, i would like to have an event date start and a event date end, so you could track a project with it…

      i want to use in combination with Simile Timeline plugin, and that plugin needs a date for the post/ticket.

      Have you already found a way to do that?

      Roald

  37. Pingback: Quality Control WordPress Theme – ticket managing system as a WordPress theme » Wordpress Things - Themes, plugins, wordpress tips and tricks

  38. Pingback: Theme: Quality Control WordPress Theme | Metro Big Sale

  39. Pingback: Quality Control Theme para Wordpress — Guiabreve

  40. Pingback: Free Wordpress-Powered Ticket, Bug-Tracking System | ChurchIT

  41. simple! usefull! great! Thank you!

    sometimes I get a server error after update ticket (HTTP – 500 Internal Server Error) – only sometimes. (?) Permalinks are updated. Do you have an idea?

  42. UPDATE: the first ticket update works without problems, but the second ticket update requires an update text – not just changing Ticket Properties. Else 500 Internal Server Error. Is this a bug.

    Thank you very much for an answer.

  43. Pingback: Quality control, il tema che trasforma WordPress in un ticket system « Skimbu

  44. Pingback: Quality Control: Turn Wordpress into a Ticketing Support System

    • Hello, Pedro. I’d like those files, since I’m portuguese and I’m needing them. :) I could have done it myself, but without the original en_US files, I can’t load the strings to PoEdit and therefore I’m not able to translate.

      Thank you!

      P.S.: Last but not least: great theme/plugin, Spencer!

  45. Pingback: Quality Control Theme – Turn WordPress Into a Ticketing System | Theme Lab

  46. i figure out..the best permalink work for this template is
    /%category%/%postname%/

    if u use different permalink, you would found 500 or 404 issues..

  47. Pingback: Theme: Quality Control WordPress Theme | wp form, plugins and wordpress themes blog | wordpress form

  48. Thank you! You’ve made the perfect starting point for a customer care ticketing system. With only a few modifications, this has really helped us.

  49. This is really brilliant solution – easy and lightweight.
    Is it possible to extend functionality a bit ? By adding additional field “Platform” which can be used along with “Milestone”.
    We got crossplatform software (Win, WM, WinCE, Symbian, Android, iPhone) and quite a lot of builds (versions) for each platform. So creating Milestone for each Platform+Version gives us many Milestones… So adding an additional field “Platform” will make this wonderful theme more flexible and suitable for different projects.

    I hope many users would love this small feature.

  50. Pingback: Quality Control Theme » Beitrag » WordPress Candy

  51. Pingback: Free Theme: Quality Control, a Simple Ticket or Bug Tracker | putrakuningan.net

  52. Pingback: Sistema de soporte vía theme en WordPress | Summarg

  53. Pingback: Free Theme: Quality Control, a Simple Ticket or Bug Tracker | NiceUI

  54. Hi,

    first of all i’d like to say thank for this wonderful theme. I have a question to ask you. How can I notify every open ticket? When a registered user open a ticket, using the usual form, i’d like to receive an email that notify it to me. How can i do? It’s a setting thet is possible to manage by admin pannel or it’s necessary to modify one of the php page? If it’s so…what page have i modify?

    in the tickets.php there is this function :

    function quality_notify_user( $ticket_id, $ticket )

    {

    $ticket_post = get_post( $ticket_id );

    $author = get_user_by( ‘id’, $ticket_post->post_author );

    $to = apply_filters( ‘quality_notify_to’, $ticket[ 'ticket_notify' ] );

    $subject = apply_filters( ‘quality_notify_subject’, ‘A New Ticket Has Been Created’ );

    $message = apply_filters( ‘quality_notify_message’, sprintf( __( ‘A new ticket, and someone thinks you would like you to know about it: %s’, ‘quality’ ), get_permalink( $ticket_post->ID ) ) );

    $headers = apply_filters( ‘quality_notify_headers’, sprintf( __( ‘From: %s’, ‘quality’ ), get_option( ‘admin_email’ ) ) );

    wp_mail( $to, $subject, $message, $headers );

    }

    if ( !function_exists( ‘quality_ticket_creation_cap’ ) ) :

    But it doesn’ work…why?

    Waiting forr your answer. Thanks a lot
    Umberto

  55. Pingback: [Linkdump #17] Wielki Przegląd WordPressa. « Tomasz Kowalczyk

  56. Wow. really great theme. There is just one thing I can’t get figured out:
    Is it possible to add a category instead of changing it on the page? Now you have to do this in the admin.

      • OK, then I have to the Tags-option for this thing I have in mind.
        Your theme fits as a perfect base for a CRM-system.

  57. Hi, I encounter a problem here. When display the Recent Activity page, it display this error:
    ——————————-
    Catchable fatal error: Object of class WP_Error could not be converted to string in D:\Local\xampp\htdocs\wp-content\themes\quality-control\inc\templates\loop.php on line 37
    ——————————

    What went wrong?

  58. hi! I’m not english so, sorry for my poor english.
    Now!: I can’t undertand one thing in the comments…if I have a lot of comments, how could paginated all of them?

  59. Spencer – Brilliant use of custom post types. We’re just transitioning from Mantis BugTracker, and this is much more the direction we need to go in. Thanks for the conceptual & executional brilliance!

  60. Pingback: Theme: Quality Control WordPress Theme | WPmob

  61. Pingback: Links der Woche 34/2010 | Kai Köpke

  62. Pingback: JohnPBloch.com » New Site: bugs.johnpbloch.com

  63. I know the theme is not being supported anymore, but for those of you who have an old version of the theme running, have you had any problems upgrading to WordPress 3.1? I did, and now I can’t add tickets properly. Everything else seems to work fine.

    Just curious. Let me know if you’ve run into the same thing.

    • Chris ,

      I got a few problems while using it on earlier versions to 3.0.3 . Later I have solved them myself,Actually they are not the problems at all. You can contact me . Now I am able to use on 3.1 without issues.However I have not make it to public access and still testing everyday to make sure that there are no issues :)

      (–bharatkumarvbk at gmail [dot] com–) if you need to discuss further

  64. Pingback: Using WordPress As A Bug Tracker – Quality Control « 蝌蚪网赚联盟

  65. Is anyone else having problems sorting by TAG? I am entering a tag for every Ticket but when I click on a particular tag it is bringing up every ticket, not just tickets with that tag.

    For example, clicking on Tag1 brings up the proper URL: http://www.abc.com/tag/tag1

    but I am getting all records, even ones that have been tagged as Tag1, Tag2, Tag3, etc.

    Any idea how to remedy this? Is anyone else having this issue?

  66. Pingback: Quality Control WordPress Theme | themesforge.com - Premium Wordpress Themes, News, TIps and More

  67. @Dale

    I didn’t face such issues with tag . Could you try changing the Permalinks ? What is the current permalink you set it to?

    Thanks!

  68. Hi Everyone,

    I am using this theme right now on my site.
    Now i want, where you can ticket update can update, there i want comments.
    So i have copyd, the comments php from the theme, twenty eleven. But now i am getting the error. See the site. you can test it under the dutch word plaats reactie.
    and then you will see an error. I want only that readers can post a comment. ;)

    I hope that some one can help me with this.

    Best regards.

    Idaniël

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>