| 1 |
<?php |
<?php |
| 2 |
// $Id: jquery_media.module,v 1.5.2.3 2008/07/03 14:33:28 aaron Exp $ |
// $Id: jquery_media.module,v 1.5.2.4 2008/08/28 01:47:17 aaron Exp $ |
| 3 |
|
|
| 4 |
/** |
/** |
| 5 |
* @file |
* @file |
| 41 |
* Implements hook_perm |
* Implements hook_perm |
| 42 |
*/ |
*/ |
| 43 |
function jquery_media_perm() { |
function jquery_media_perm() { |
| 44 |
return array('administer jquery media'); |
return array('administer jquery media', 'add jquery media to content'); |
| 45 |
} |
} |
| 46 |
|
|
| 47 |
/** |
/** |
| 72 |
* Invoke the plugin if we support it for this node type. |
* Invoke the plugin if we support it for this node type. |
| 73 |
*/ |
*/ |
| 74 |
function jquery_media_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { |
function jquery_media_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { |
| 75 |
if ($op == 'view') { |
switch ($op) { |
| 76 |
if (in_array($node->type, variable_get('jquery_media_node_types', array()))) { |
case 'view': |
| 77 |
jquery_media_add(); |
$types = variable_get('jquery_media_node_types', array()); |
| 78 |
|
if ($types[$node->type]) { |
| 79 |
|
jquery_media_add(); |
| 80 |
|
} |
| 81 |
|
if (is_array($node->jquery_media)) { |
| 82 |
|
jquery_media_add($node->jquery_media); |
| 83 |
|
} |
| 84 |
|
break; |
| 85 |
|
case 'delete': |
| 86 |
|
db_query("DELETE FROM {jquery_media_node} WHERE nid=%d", $node->nid); |
| 87 |
|
break; |
| 88 |
|
case 'update': |
| 89 |
|
db_query("DELETE FROM {jquery_media_node} WHERE nid=%d", $node->nid); |
| 90 |
|
// Don't break yet; we may need to insert our new options. |
| 91 |
|
case 'insert': |
| 92 |
|
if ($node->jquery_media_insert) { |
| 93 |
|
$node->jquery_media = array(); |
| 94 |
|
// @TODO: Build the node specific options from form. |
| 95 |
|
db_query("INSERT INTO {jquery_media_node} (nid, options) VALUES (%d, '%s')", $node->nid, serialize($node->jquery_media)); |
| 96 |
|
} |
| 97 |
|
unset($node->jquery_media_insert); |
| 98 |
|
break; |
| 99 |
|
case 'load': |
| 100 |
|
$jquery_media = db_result(db_query("SELECT options FROM {jquery_media_node} WHERE nid = %d", $node->nid)); |
| 101 |
|
if (isset($jquery_media)) { |
| 102 |
|
$node->jquery_media = unserialize($jquery_media); |
| 103 |
|
} |
| 104 |
|
break; |
| 105 |
|
} |
| 106 |
|
} |
| 107 |
|
|
| 108 |
|
/** |
| 109 |
|
* Implement hook_form_alter. |
| 110 |
|
* This will add a jQuery Media fieldset to node edit pages, |
| 111 |
|
* allowing to enable the plugin from a particular node. |
| 112 |
|
*/ |
| 113 |
|
function jquery_media_form_alter(&$form, $form_state, $form_id) { |
| 114 |
|
if (substr($form_id, -10) == '_node_form') { |
| 115 |
|
if (user_access('add jquery media to content')) { |
| 116 |
|
$node = $form['#node']; |
| 117 |
|
$form['jquery_media_fieldset'] = array( |
| 118 |
|
'#type' => 'fieldset', |
| 119 |
|
'#title' => t('jQuery Media'), |
| 120 |
|
'#collapsible' => TRUE, |
| 121 |
|
'#collapsed' => TRUE, |
| 122 |
|
); |
| 123 |
|
$form['jquery_media_fieldset']['jquery_media_insert'] = array( |
| 124 |
|
'#type' => 'checkbox', |
| 125 |
|
'#title' => t('Invoke jQuery Media'), |
| 126 |
|
'#default_value' => is_array($node->jquery_media), |
| 127 |
|
); |
| 128 |
|
$form['jquery_media_fieldset']['jquery_media'] = array( |
| 129 |
|
'#type' => 'value', |
| 130 |
|
'#value' => $node->jquery_media, |
| 131 |
|
); |
| 132 |
|
// @TODO: Add specific options here, such as w/h. |
| 133 |
|
} |
| 134 |
|
else { |
| 135 |
|
$form['jquery_media_insert'] = array( |
| 136 |
|
'#type' => 'value', |
| 137 |
|
'#value' => is_array($node->jquery_media), |
| 138 |
|
); |
| 139 |
|
$form['jquery_media'] = array( |
| 140 |
|
'#type' => 'value', |
| 141 |
|
'#value' => $node->jquery_media, |
| 142 |
|
); |
| 143 |
} |
} |
| 144 |
} |
} |
| 145 |
} |
} |