Customise Publishing Options based on Role
The Revisioning module automatically generates separate create, edit, and publish permissions by role for all content types for which revison control is enabled.  It also integrates with the Rules module.  You may find this to be a simpler approach.