We have a case open for your request to allow fields to be disabled on a per-project basis. Please up-vote this question to show your support.
Here is a workaround using javascript:
You can hide drop-down and text fields as well as links using the guides linked to here.
You will need your code to run conditionally based on the category of the case. You can find it using the goBug object on the case page:
var oCategory = new CCategory();
oCategory.LoadByIx(goBug.ixCategory);
var sCategory = oCategory.name;
if (sCategory == 'Feature')
{
console.log('Feature case');
// call your function to hide the field/link
}
Run your code when the case view changes to edit mode. You will also need to bind to the event when the category drop-down changes and run when it is changed.
Here is a sample to hide the priority drop-down for feature category cases.
name: Disable feature priorities
description: Disables the priority droplist for feature cases
author: Adam Wishneusky and Dane Bertram
version: 1.0.0.0
js:
// set the ixCategory to hide Priorities for
var ixCategoryHideEnabled = 2; // Features
// if we're not on the case page, don't do anything
if (!$('#bugviewContainer').length) return;
var setPriorityEnabled = function() {
if (!$('#ixCategory').length) return;
var ixCategory = parseInt($('#ixCategory').val(), 10);
if (ixCategory === ixCategoryHideEnabled) {
DropListControl.refresh($("#ixPriority")[0]).disable();
console.log('disabled Priority field');
} else {
DropListControl.refresh($("#ixPriority")[0]).enable();
console.log('enabled Priority field');
}
};
// whenever the category changes, check if we need to disable anything
$('body').on("change", "#ixCategory", setPriorityEnabled);
// in case we're on the new case page
setPriorityEnabled();
// when the view changes to edit mode, check if we need to disable anything
$(window).on('BugViewChange', function(e, data) {
if (data.sCommand === 'edit') {
// add delay to allow for view transition
setTimeout(setPriorityEnabled, 100);
}
});