groups/modules/commons/commons_posts/commons_posts.module

97 lines
3.0 KiB
Plaintext

<?php
/**
* @file
* Code for the Commons Posts feature.
*/
include_once 'commons_posts.features.inc';
/**
* Implements hook_form_BASE_FORM_ID_alter().
*/
function commons_posts_form_node_form_alter(&$form, &$form_state, $form_id) {
$node = $form['#node'];
list(, , $bundle) = entity_extract_ids('node', $node);
if ($bundle == 'post' && empty($node->nid)) {
drupal_set_title(t('Create a post'));
}
}
/**
* Implements hook_form_FROM_ID_alter().
*/
function commons_posts_form_commons_bw_partial_node_form_alter(&$form, &$form_state) {
if (empty($form['#entity']) || $form['#entity']->type != 'post') {
return;
}
$form['title']['#markup'] = t('Create a post');
$language = $form['body']['#language'];
$form['body'][$language][0]['#title_display'] = 'invisible';
$form['body'][$language][0]['#required'] = TRUE;
$form['body'][$language][0]['#placeholder'] = t("What's on your mind?");
$form['body'][$language][0]['#resizable'] = FALSE;
// Set fields as hideable so the forms can be compacted.
$form['body']['#attributes']['class'][] = 'trigger-field';
foreach (array('field_media', 'field_image', 'og_group_ref', 'choice_wrapper', 'actions') as $field) {
if (isset($form[$field])) {
$form[$field]['#attributes']['class'][] = 'hideable-field';
}
}
$form['actions']['submit']['#value'] = t('Post');
$form['#pre_render'][] = 'commons_posts_form_commons_bw_partial_node_form_after_build';
}
/**
* After-build call-back.
* See commons_posts_form_commons_bw_partial_node_form_alter().
*/
function commons_posts_form_commons_bw_partial_node_form_after_build($form) {
$language = $form['body']['#language'];
$form['body'][$language][0]['#pre_render'] = array();
$form['body'][$language][0]['format']['#access'] = FALSE;
$form['body'][$language][0]['value']['#rows'] = 3;
return $form;
}
/**
* Implements hook_commons_activity_streams_message_selection_alter().
*/
function commons_posts_commons_activity_streams_message_selection_alter(&$message_type, $hook, $node) {
// Use a "User posted [title]" format activity stream message.
if ($hook == 'node_insert' && $node->type == 'post') {
$message_type = 'commons_posts_post_created';
}
}
/**
* Implements hook_strongarm_alter().
*/
function commons_posts_strongarm_alter(&$items) {
// Expose the post content type for integration with Commons Radioactivity
// and Commons Groups.
foreach (array('commons_radioactivity_entity_types', 'commons_groups_entity_types') as $key) {
if (isset($items[$key])) {
$items[$key]->value['node']['post'] = 1;
}
}
}
/**
* Implements hook_views_pre_render().
*/
function commons_posts_views_pre_render(&$view) {
// Improve the browsing widget empty text when displayed outside of a group.
// TODO: Enable og_context and check group context instead of looking for an
// empty first argument.
if (empty($view->args[0]) && $view->name == 'commons_bw_posts') {
$view->display_handler->handlers['empty']['area']->options['content'] = t('No posts have been created.');
}
}