vB Project Tools - Color to Indicate Status

Background:

I am a visual person and with the project(s) I will be using using Project Tools with I need to be able to quickly look at my pages to determine if I still have outstanding issues that need to be addressed. This modification makes it easier for me to keep track of the issues that I have to still address.

About the Modification:

I am posting this here with the hope that vBulletin takes the code and improves it and turns this into a standard feature of project tools. There are lots of ways this script could be improved but java is not my strong suite and I hope by posing this here someone else can help improve this!

The Modifications that are needed:

Two files must be edited.
Install a product file with one small phrase and a small pluggin.
Edit one template

OK, let the fun begin!

STEP 1: Install the Attached Product File!

STEP 2: A Bunch of File Edits!

OPEN FILE /AdminCP/project.php

FIND


PHP:
if ($_POST['do'] == 'statusupdate') 
{  
    $vbulletin->input->clean_array_gpc('p', array( 
        'issuestatusid' => TYPE_UINT,  
        'title' => TYPE_STR,  
        'issuetypeid' => TYPE_STR,  
        'displayorder' => TYPE_UINT,  
        'canpetitionfrom' => TYPE_UINT  
    ));

REPLACE WITH:


PHP:
if ($_POST['do'] == 'statusupdate') 
{  
    $vbulletin->input->clean_array_gpc('p', array( 
        'issuestatusid' => TYPE_UINT,  
        'title' => TYPE_STR,  
        'issuetypeid' => TYPE_STR,  
        'displayorder' => TYPE_UINT,  
        'canpetitionfrom' => TYPE_UINT,  
        'background' => TYPE_STR  
    ));

FIND:


PHP:
    $statusdata->set('displayorder', $vbulletin->GPC['displayorder']);  
    $statusdata->set('canpetitionfrom', $vbulletin->GPC['canpetitionfrom']);  
    $statusdata->set_info('title', $vbulletin->GPC['title']); 
    $statusdata->save(); 

    define('CP_REDIRECT', 'project.php?do=typelist'); 
    print_stop_message('issue_status_saved'); 
}
REPLACE WITH:


PHP:
    $statusdata->set('displayorder', $vbulletin->GPC['displayorder']);  
    $statusdata->set('canpetitionfrom', $vbulletin->GPC['canpetitionfrom']);  
    $statusdata->set_info('title', $vbulletin->GPC['title']); 
    $statusdata->set('background', $vbulletin->GPC['background']);  
    $statusdata->save(); 

    define('CP_REDIRECT', 'project.php?do=typelist'); 
    print_stop_message('issue_status_saved'); 
}

FIND:


PHP:
        $issuestatus = array( 
            'issuestatusid' => 0, 
            'issuetypeid' => $vbulletin->GPC['type'], 
            'displayorder' => $maxorder['maxorder'] + 10, 
            'canpetitionfrom' => 1, 
            'title' => ''  
        ); 
    }

REPLACE WITH:


PHP:
        $issuestatus = array( 
            'issuestatusid' => 0, 
            'issuetypeid' => $vbulletin->GPC['type'], 
            'displayorder' => $maxorder['maxorder'] + 10, 
            'canpetitionfrom' => 1, 
            'title' => '', 
            'background' => $vbulletin->GPC['background']  
        ); 
    }

FIND:


PHP:
    print_input_row($vbphrase['display_order'], 'displayorder', $issuestatus['displayorder'], true, 5); 
    print_yes_no_row($vbphrase['can_create_petitions_from_this_status'], 'canpetitionfrom', $issuestatus['canpetitionfrom']);  

    construct_hidden_code('issuestatusid', $issuestatus['issuestatusid']);  
    print_submit_row(); 

}

REPLACE WITH:


PHP:
    print_input_row($vbphrase['display_order'], 'displayorder', $issuestatus['displayorder'], true, 5); 
    print_yes_no_row($vbphrase['can_create_petitions_from_this_status'], 'canpetitionfrom', $issuestatus['canpetitionfrom']);  
    print_input_row($vbphrase['background_color'], 'background', $issuestatus['background'], true, 5); 

    construct_hidden_code('issuestatusid', $issuestatus['issuestatusid']);  
    print_submit_row(); 

}

FIND:

PHP:
 if ($_REQUEST['do'] == 'statusadd' OR $_REQUEST['do'] == 'statusedit') 
{  
    $vbulletin->input->clean_array_gpc('r', array( 
        'issuestatusid' => TYPE_UINT,  
        'type' => TYPE_STR  
    ));
REPLACE WITH


PHP:
if ($_REQUEST['do'] == 'statusadd' OR $_REQUEST['do'] == 'statusedit') 
{  
    $vbulletin->input->clean_array_gpc('r', array( 
        'issuestatusid' => TYPE_UINT,  
        'type' => TYPE_STR,  
        'background' => TYPE_STR  
    ));


OPEN FILE includes/class_dm_pt_issuestatus.php

FIND:

PHP:
var $validfields = array(  
        'issuestatusid'    => array(TYPE_UINT, REQ_INCR),  
        'issuetypeid'      => array(TYPE_STR,  REQ_YES),  
        'displayorder'     => array(TYPE_UINT, REQ_NO), 
        'canpetitionfrom'  => array(TYPE_UINT, REQ_NO), 
    );

REPLACE WITH:


PHP:
var $validfields = array(  
        'issuestatusid'    => array(TYPE_UINT, REQ_INCR),  
        'issuetypeid'      => array(TYPE_STR,  REQ_YES),  
        'displayorder'     => array(TYPE_UINT, REQ_NO), 
        'canpetitionfrom'  => array(TYPE_UINT, REQ_NO), 
        'background' => array(TYPE_STR, REQ_NO), 
    );

STEP 3: EDIT template pt_issuebit

NOTE - You can change as many or as few cells in row of each issue. In this example I did the first three as shown in the attached image!

FIND:

PHP:
<td class="alt2" align="center">

REPLACE WITH:

PHP:
<td class="alt2" align="center" style="background-color: $issue[background]">

FIND:
PHP:
 <td class="alt1" align="$stylevar">
REPLACE WITH:

PHP:
<td class="alt1" align="$stylevar" style="background-color: $issue[background]">
FIND:

PHP:
<td class="alt2 smallfont" align="$stylevar[align=right]" nowrap="nowrap">

REPLACE WITH:

PHP:
<td class="alt2 smallfont" align="$stylevar[align=right]" nowrap="nowrap" style="background-color: $issue[background]">

I also did the same edits to all of the cells on my site and attached a screen shot as an example!

Well, if I didn't scare you off and you are still reading... Just remember to use the color codes as the six digit hexadecimal values with the number sign. Here are the ones I am using:

#FFFFFF - White
#FFFFCC - Pastel Yellow
#CCFFFF - Pastel Blue
#FFCCFF - Pastel Pink

Note that I use color for issues that need my attention. I use white for the issues that I can ignore... But obviously you can use any colors you want! Now, if you do not add a color value, your site will use the default style colors as well!
 
actually you can kill one more file edit ....

hook:issuestatusdata_start

code



PHP:
$this->validfields['background'] = array(TYPE_STR,REQ_NO);

that will kill the class_dm_pt_issuestatus.php edit
 
hi,

To get the vBulletin default colorpicker working in the Porject Tools admin page (project.php) you need

edit

step 1

open /admincp/project.php and find



PHP:
print_cp_header($vbphrase['project_tools']);

replace with



PHP:
print_cp_header($vbphrase['project_tools'],'init_color_preview()');
?>
<script type="text/javascript" src="../clientscript/vbulletin_cpcolorpicker.js"></script>
<?php
step 2

find (and remove this line)



PHP:
print_input_row($vbphrase['background_color'],'background',$issuestatus['background'],true,5);

step 3

find this line



PHP:
print_yes_no_row($vbphrase['can_create_petitions_from_this_status'], 'canpetitionfrom', $issuestatus['canpetitionfrom']);

below that add this



PHP:
require_once(DIR . '/includes/adminfunctions_template.php');
 $colorPicker = construct_color_picker(11);
 echo "<tr>
  <td class=\"alt1\">$vbphrase[background_color]</td>
  <td class=\"alt1\">
   <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">
   <tr>
    <td><input type=\"text\" class=\"bginput\" name=\"background\" id=\"color_0\" value=\"{$issuestatus['background']}\" title=\"background\" tabindex=\"1\" size=\"22\" onchange=\"preview_color(0)\" dir=\"ltr\" />&nbsp;</td>
    <td><div id=\"preview_0\" class=\"colorpreview\" onclick=\"open_color_picker(0, event)\"></div></td>
   </tr>
   </table>
  </td>
 </tr>\n";

step 4

find this lines



PHP:
construct_hidden_code('issuestatusid', $issuestatus['issuestatusid']);
 print_submit_row();

below that add



PHP:
echo $colorPicker;
 ?>
 <script type="text/javascript">
 <!--
 var bburl = "<?php echo $vbulletin->options['bburl']; ?>/";
 var cpstylefolder = "<?php echo $vbulletin->options['cpstylefolder']; ?>";
 var numColors = 1;
 var colorPickerWidth = <?php echo intval($colorPickerWidth); ?>;
 var colorPickerType = <?php echo intval($colorPickerType); ?>;
 //-->
 </script>
<?php
that should do it
 
I am just getting home from a trip so it will take me a while to get back into a routein that I can fight with this... I have added Delphiprogrammi as a Co-Author!

EDIT:

OK, I am not sure this is all of the edits but it should be... this will add a small table to the main issue status listing so that the colors for each status will be displayed.

All of these edits are in Admin/project.php

FIND:

PHP:
		print_cells_row(array(
			'<span class="normal">' . $vbphrase['status'] . '</span>',
			'<span class="normal">' . $vbphrase['display_order'] . '</span>',
			'<b>' . construct_link_code($vbphrase['add_status'], 'project.php?do=statusadd&type=' . $type['issuetypeid']) . '</b>'
		), true);


REPLACE WITH:

PHP:
		print_cells_row(array(
			'<span class="normal">' . $vbphrase['status'] . '</span>',

			'<span class="normal">' . $vbphrase['display_order'] . '</span>',

			'<span class="normal">' . $vbphrase['background_color'] . '</span>',

			'<b>' . construct_link_code($vbphrase['add_status'], 'project.php?do=statusadd&type=' . $type['issuetypeid']) . '</b>'
		), true);

FIND:

PHP:
print_cells_row(array(
					$vbphrase["issuestatus$status[issuestatusid]"],
					"<input type=\"text\" class=\"bginput\" name=\"order[$status[issuestatusid]]\" value=\"$status[displayorder]\" tabindex=\"1\" size=\"3\" />",
					"<div align=\"$stylevar[align=right]\" class=\"smallfont\">" .
						construct_link_code($vbphrase['edit'], 'project.php?do=statusedit&issuestatusid=' . $status['issuestatusid']) .
						construct_link_code($vbphrase['delete'], 'project.php?do=statusdelete&issuestatusid=' . $status['issuestatusid']) .
					'</div>'
				));

REPLACE WITH:

PHP:
print_cells_row(array(
					$vbphrase["issuestatus$status[issuestatusid]"],
					"<input type=\"text\" class=\"bginput\" name=\"order[$status[issuestatusid]]\" value=\"$status[displayorder]\" tabindex=\"1\" size=\"3\" />",
					"<table height=\"24\" width=\"85\" cellpadding=\"0\" cellspacing=\"0\" border=\"1\">
					<tr><td style=\"background-color: $status[background]\"><font color = \"black\"> $status[background] </font></td>
					</tr></table>",
					"<div align=\"$stylevar[align=right]\" class=\"smallfont\">" .
						construct_link_code($vbphrase['edit'], 'project.php?do=statusedit&issuestatusid=' . $status['issuestatusid']) .
						construct_link_code($vbphrase['delete'], 'project.php?do=statusdelete&issuestatusid=' . $status['issuestatusid']) .
					'</div>'
				));

FIND:

PHP:
print_submit_row($vbphrase['save_display_order'], '', 3);

REPLACE WITH:

PHP:
print_submit_row($vbphrase['save_display_order'], '', 4);
 
well i didn't know it didn't worked in search results until i saw your post and i didn't liked it either so here we go to make it work within the search results

1)open hooks_vbprojecttools.xml (/includes/xml folder from the pt distrubution) and find

Code:
<hook>projectsearch_results_groupbit</hook>

replace that with

Code:
<hook>projectsearch_results_bit</hook>
<hook>projectsearch_results_groupbit</hook>

upload the modified hooks_vbprojecttools.xml to /includes/xml

2)create a new plugin with this information
  • product: Project Tools Status Colors
  • hook:projectsearch_results_bit
  • phpcode

    $get_background = $vbulletin->db->query_first("SELECT background FROM " . TABLE_PREFIX . "pt_issuestatus WHERE issuestatusid='{$issue['issuestatusid']}'");
    $issue['background'] = $get_background['background'];
  • active:yes
3)edit template pt_searchresultbit and add the background color in all "<td>" tags like this

HTML:
<td class="alt2" align="center" style="background-color:$issue[background]">

all done
 
hi,

or you could "kill" the template edits by doing it like this

hook project_issuebit find

PHP:
$get_background = $vbulletin->db->query_first("SELECT background FROM " . TABLE_PREFIX . "pt_issuestatus  WHERE issuestatusid = $issue[issuestatusid] LIMIT 1");
$issue[background] = $get_background[background];

below add

PHP:
$vbulletin->templatecache['pt_issuebit'] = preg_replace('/<td class=\\\"alt2\\\"/', '<td style=\"background-color:$issue[background]\"', $vbulletin->templatecache['pt_issuebit']);
$vbulletin->templatecache['pt_issuebit'] = preg_replace('/<td class=\\\"alt1\\\"/', '<td style=\"background-color:$issue[background]\"', $vbulletin->templatecache['pt_issuebit']);
$vbulletin->templatecache['pt_issuebit'] = preg_replace('/<td class=\\\"alt2 smallfont\\\"/', '<td style=\"background-color: $issue[background]\" class=\"smallfont\"', $vbulletin->templatecache['pt_issuebit']);
$vbulletin->templatecache['pt_issuebit'] = preg_replace('/<td class=\\\"alt1 smallfont\\\"/', '<td style=\"background-color: $issue[background]\" class=\"smallfont\"', $vbulletin->templatecache['pt_issuebit']);

hook projectsearch_results_bit find

PHP:
$get_background = $vbulletin->db->query_first("SELECT background FROM " . TABLE_PREFIX . "pt_issuestatus WHERE issuestatusid='{$issue['issuestatusid']}'");
$issue['background'] = $get_background['background'];

below add

PHP:
$vbulletin->templatecache['pt_searchresultbit'] = preg_replace('/<td class=\\\"alt2\\\"/', '<td style=\"background-color: $issue[background]\"', $vbulletin->templatecache['pt_searchresultbit']);
$vbulletin->templatecache['pt_searchresultbit'] = preg_replace('/<td class=\\\"alt1\\\"/', '<td style=\"background-color: $issue[background]\"', $vbulletin->templatecache['pt_searchresultbit']);
$vbulletin->templatecache['pt_searchresultbit'] = preg_replace('/<td class=\\\"alt2 smallfont\\\"/', '<td style=\"background-color: $issue[background]\" class=\"smallfont\"', $vbulletin->templatecache['pt_searchresultbit']);
$vbulletin->templatecache['pt_searchresultbit'] = preg_replace('/<td class=\\\"alt1 smallfont\\\"/', '<td style=\"background-color: $issue[background]\" class=\"smallfont\"', $vbulletin->templatecache['pt_searchresultbit']);

that should do it
 
there is an error in the product uninstall code the MySQL query should be

PHP:
$db->query_write("ALTER TABLE " . TABLE_PREFIX . "pt_issuestatus DROP background");


THATS ALL ;)

ENJOY
 
Back
Top