publishcontent_views_handler_field_node_link.inc 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. * Field handler to present a link node publish.
  4. */
  5. class publishcontent_views_handler_field_node_link extends views_handler_field_node_link {
  6. function construct() {
  7. parent::construct();
  8. $this->additional_fields['nid'] = 'nid';
  9. $this->additional_fields['type'] = 'type';
  10. $this->additional_fields['status'] = 'status';
  11. $this->additional_fields['uid'] = 'uid';
  12. }
  13. function option_definition() {
  14. $options = parent::option_definition();
  15. $options['publish'] =
  16. $options['unpublish'] = array('default' => '', 'translatable' => TRUE);
  17. return $options;
  18. }
  19. function options_form(&$form, &$form_state) {
  20. parent::options_form($form, $form_state);
  21. unset($form['text']);
  22. $form['publish'] = array(
  23. '#type' => 'textfield',
  24. '#title' => t('Text to display for publishing'),
  25. '#default_value' => $this->options['publish'],
  26. );
  27. $form['unpublish'] = array(
  28. '#type' => 'textfield',
  29. '#title' => t('Text to display for unpublishing'),
  30. '#default_value' => $this->options['unpublish'],
  31. );
  32. }
  33. function query() {
  34. $this->ensure_my_table();
  35. $this->add_additional_fields();
  36. }
  37. function render_link($node, $values) {
  38. // ensure user has access to edit this node.
  39. if ($node->status && _publishcontent_unpublish_access($node)) {
  40. $op = 'unpublish';
  41. }
  42. if (!$node->status && _publishcontent_publish_access($node)) {
  43. $op = 'publish';
  44. }
  45. if (isset($op)) {
  46. $this->options['alter']['make_link'] = TRUE;
  47. $this->options['alter']['path'] = "node/$node->nid/$op/" . drupal_get_token();
  48. $this->options['alter']['query'] = drupal_get_destination();
  49. $this->options['alter']['link_class'] = 'publishcontent-link publishcontent-' . $op;
  50. $text = empty($this->options[$op]) ? t($op) : $this->options[$op];
  51. return $text;
  52. }
  53. }
  54. }