<?php
/**
 * @file
 * Code for the Commons Documents feature.
 */

include_once 'commons_documents.features.inc';

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function commons_documents_form_node_form_alter(&$form, &$form_state, $form_id) {
  $node = $form['#node'];

  list(, , $bundle) = entity_extract_ids('node', $node);

  if ($bundle == 'document' && empty($node->nid)) {
    drupal_set_title(t('Create a document'));
  }
}

/**
 * Implements hook_form_FROM_ID_alter().
 */
function commons_documents_form_commons_bw_partial_node_form_alter(&$form, &$form_state) {
  if (empty($form['#entity']) || $form['#entity']->type != 'document') {
    return;
  }

  $form['title']['#markup'] = t('Create a document');

  $language = $form['body']['#language'];
  $form['body'][$language][0]['#title_display'] = 'invisible';
  $form['body'][$language][0]['#required'] = TRUE;
  $form['body'][$language][0]['#placeholder'] = t('Describe the document');
  $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_image', 'og_group_ref', 'field_document_file', 'actions') as $field) {
    if (isset($form[$field])) {
      $form[$field]['#attributes']['class'][] = 'hideable-field';
    }
  }

  $form['#pre_render'][] = 'commons_documents_form_commons_bw_partial_node_form_after_build';
}

/**
 * After-build call-back.
 * See commons_documents_form_commons_bw_partial_node_form_alter().
 */
function commons_documents_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_views_pre_render().
 */
function commons_documents_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_documents') {
    $view->display_handler->handlers['empty']['area']->options['content'] = t('No documents have been created.');
  }
}
