You are here

jcalendar.module in Calendar 6.2

Same filename and directory in other branches
  1. 5.2 jcalendar/jcalendar.module

jQuery Calendar UI features.

File

jcalendar/jcalendar.module
View source
<?php

/**
 * @file
 * jQuery Calendar UI features.
 */

/**
* Display help and module information
* @param section which section of the site we're displaying help
* @return help text for section
*/
function jcalendar_help($path, $arg) {
  $output = '';
  switch ($path) {
    case "admin/help#jcalendar":
      $output = '<p>' . t("Creates a popup for calendar dates.") . '</p>';
      break;
  }
  return $output;
}

// function jcalendar_help

/**
* Get calendar node for popup
* @param integer nid Node id.
* @param string id Date field unique id.
* @return string HTML for node
*/
function get_calendar_node($nid, $id) {
  $GLOBALS['devel_shutdown'] = FALSE;
  if (is_numeric($nid)) {
    if ($node = node_load($nid)) {
      if (node_access("view", $node)) {
        $node->date_id = $id;
        $node->date_repeat_show = FALSE;
        print theme('jcalendar_view', $node);
      }
    }
  }
}

/**
* Implemetation of hook_menu()
*/
function jcalendar_menu() {
  $items['jcalendar/getnode'] = array(
    'title' => 'Get Calendar Node',
    'page callback' => 'get_calendar_node',
    'page arguments' => array(
      2,
      3,
    ),
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );
  return $items;
}

/**
* Override the calendar view to inject javascript.
* @param view Which view we are using.
* @return unknown as of yet.
*/
function jcalendar_views_pre_view(&$view, &$display_id) {
  static $js_added = false;
  if ($js_added) {
    return;
  }
  foreach ($view->display as $display) {
    if ($display->display_plugin == 'calendar') {
      $js_added = true;
      $path = drupal_get_path('module', 'jcalendar');
      $settings['jcalendar']['path'] = base_path() . $path;
      drupal_add_js($settings, 'setting');
      drupal_add_js($path . '/jcalendar.js');
      drupal_add_css($path . '/jcalendar.css');
    }
  }
}

/**
 * Implementation of hook_theme().
 */
function jcalendar_theme() {
  return array(
    'jcalendar_view' => array(
      'arguments' => array(
        'node' => NULL,
      ),
    ),
  );
}

/**
 * Overrideable theme for the jcalendar popup view.
 * 
 * Defaults to show the standard teaser view of the node.
 */
function theme_jcalendar_view($node) {
  $output = node_view($node, TRUE);
  $output .= '<div id="nodelink">' . l(t('more', array(), $node->language), calendar_get_node_link($node)) . '</div>';
  return $output;
}

Functions

Namesort descending Description
get_calendar_node Get calendar node for popup
jcalendar_help Display help and module information
jcalendar_menu Implemetation of hook_menu()
jcalendar_theme Implementation of hook_theme().
jcalendar_views_pre_view Override the calendar view to inject javascript.
theme_jcalendar_view Overrideable theme for the jcalendar popup view.