Using Rules link to Un/Publish content
I solved a similar problem with the Flag and Rules modules. I created a flag called 'Published' for nodes and two rules that are activated when content is flagged/unflagged with this flag. These are my settings:

'Published' flag


Bundles: Article
Display in entity links: Display link as field
Link type: JavaScript toggle


If you need the flag for (an)other content type(s) too, you simply have to check the box in the flag settings.

'Published node' rule


Event: A node has been flagged, under 'Published'
Action: Publish content: Parameter: Content: [flagged-node]


'Unpublished node' rule


Event: A node has been unflagged, under 'Published'
Action: Unpublish content: Parameter: Content: [flagged-node]


If you want to, you can add some extra actions to the rule (e.g. display a message).