diff options
Diffstat (limited to 'sites/all/modules/ctools/plugins/content_types/node_context/node_comment_form.inc')
-rw-r--r-- | sites/all/modules/ctools/plugins/content_types/node_context/node_comment_form.inc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/sites/all/modules/ctools/plugins/content_types/node_context/node_comment_form.inc b/sites/all/modules/ctools/plugins/content_types/node_context/node_comment_form.inc new file mode 100644 index 000000000..c21e7bc7f --- /dev/null +++ b/sites/all/modules/ctools/plugins/content_types/node_context/node_comment_form.inc @@ -0,0 +1,79 @@ +<?php + +if (module_exists('comment')) { + /** + * Plugins are described by creating a $plugin array which will be used + * by the system that includes this file. + */ + $plugin = array( + 'single' => TRUE, + 'title' => t('Comment form'), + 'icon' => 'icon_node.png', + 'description' => t('A form to add a new comment.'), + 'required context' => new ctools_context_required(t('Node'), 'node'), + 'category' => t('Node'), + 'defaults' => array('anon_links' => FALSE), + ); +} + +function ctools_node_comment_form_content_type_render($subtype, $conf, $panel_args, $context) { + $node = isset($context->data) ? clone($context->data) : NULL; + $block = new stdClass(); + $block->module = 'comments'; + $block->delta = $node->nid; + + $block->title = t('Add comment'); + + if (empty($node)) { + $block->content = t('Comment form here.'); + } + else if ($node->comment == COMMENT_NODE_OPEN) { + if (user_access('post comments')) { + $comment = new stdClass(); + $comment->nid = $node->nid; + $comment->pid = NULL; + $form_state = array( + 'ctools comment alter' => TRUE, + 'node' => $node, + 'build_info' => array( + 'args' => array( + $comment, + ), + ), + ); + $block->content = drupal_build_form('comment_node_' . $node->type . '_form', $form_state); + } + else if (!empty($conf['anon_links'])) { + $block->content = theme('comment_post_forbidden', array('node' => $node)); + } + } + + return $block; +} + +function ctools_node_comment_form_content_type_admin_title($subtype, $conf, $context) { + return t('"@s" comment form', array('@s' => $context->identifier)); +} + +function ctools_node_comment_form_content_type_edit_form($form, &$form_state) { + $form['anon_links'] = array( + '#type' => 'checkbox', + '#title' => t('Shows links to register or login.'), + '#description' => t('If anonymous comments are not allowed, this will display the register and login links.'), + '#default_value' => $form_state['conf']['anon_links'], + ); + return $form; +} + +function ctools_node_comment_form_content_type_edit_form_submit($form, &$form_state) { + // For each part of the form defined in the 'defaults' array set when you + // defined the content type, copy the value from the form into the array + // of items to be saved. We don't ever want to use + // $form_state['conf'] = $form_state['values'] because values contains + // buttons, form id and other items we don't want stored. CTools will handle + // the actual form submission. + foreach (array_keys($form_state['plugin']['defaults']) as $key) { + $form_state['conf'][$key] = $form_state['values'][$key]; + } +} + |