-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAPI.txt
104 lines (100 loc) · 4 KB
/
API.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// PHP EXAMPLE HOOKS
// examples taken from hidden_nodes implementation
// for adding pure API calls to the operations list (like drag and drop) set the title to <<OUTLINE_DESIGNER_API_ONLY>>
/**
* Implementation of hook_outline_designer_operations().
*/
function hook_outline_designer_operations($type) {
switch ($type) {
case 'book': // the type of operation group, outline_designer_book handles book
$ops = array(
'hidden_nodes' => array( // the key of this operation
'title' => t('Hide node'), // title for display in menus
'icon' => drupal_get_path('module', 'hidden_nodes') .'/images/hidden_node.png', // the icon location for menus
'callback' => 'hidden_nodes_outline_designer_hide_node', // optional callback to handle the ajax request this button most likely has
),
);
break;
default: // default case of a blank array for when other things provide od types
$ops = array();
break;
}
return $ops;
}
/**
* Implementation of hook_outline_designer_ops_js().
*/
function hook_outline_designer_ops_js($ajax_path) {
// ajax_path is provided by any sub module implementation of outline designer
// you can include any javascript or css you'd like to be included for this request
// this has a special function to ensure js is loaded in the right order
drupal_add_js(drupal_get_path('module', 'hidden_nodes') .'/js/hidden_nodes_ops.js', 'footer');
return 1;
}
/**
* Implementation of hook_outline_designer_form_overlay().
*/
function hook_outline_designer_form_overlay() {
// an example output of elements for use in the overlay
// try and wrap things in a div at the end like this function does
// class name helps with theming, id helps with targetting to render
// delete form
$form['od_hidden_nodes_multiple'] = array(
'#title' => t('Propagate hidden status'),
'#id' => 'od_hidden_nodes_multiple',
'#type' => 'checkbox',
'#description' => t('Should this status be applied to all child content?'),
'#weight' => 0,
'#default_value' => TRUE,
);
// hidden status
$form['od_hidden_nodes_status'] = array(
'#title' => t('Hide content'),
'#id' => 'od_hidden_nodes_status',
'#type' => 'checkbox',
'#description' => t('Hide this content'),
'#weight' => 0,
'#default_value' => FALSE,
);
$output = '<div id="od_hidden_nodes" class="od_uiscreen">'. drupal_render($form) .'</div>';
return $output;
}
/**
* Helper function to process the ajax callback for hiding a node
*/
function hidden_nodes_outline_designer_hide_node($nid, $multiple, $status) {
// return 0 to trigger a permission error message in the growl system
return 'whatever info you want to return as the message after processing';
}
// JS - the key name is critical in the outline_designer_ops data object
// there are 3 key'ed function names you need, all are listed below
// {key}, {key}_submit, and {key}_reset
// this steps through rendering the overlay form, submiting it, and clean up
/*
(function ($) {
// define function for hidden_nodes operation
Drupal.outline_designer_ops.hidden_nodes = function() {
$(".od_submit_button").val('Submit');
// set default state based on whats loaded
if ($("#node-" + Drupal.settings.outline_designer.activeNid +"-icon").parent().parent().hasClass('node_is_hidden')) {
$('#od_hidden_nodes_status').attr('checked','checked')
}
else {
$('#od_hidden_nodes_status').removeAttr('checked')
}
// function call
Drupal.outline_designer.render_popup(true);
};
// submit handler
Drupal.outline_designer_ops.hidden_nodes_submit = function() {
var multiple = $('#od_hidden_nodes_multiple:checked').length;
var hide_status = $('#od_hidden_nodes_status:checked').length;
// update database
Drupal.outline_designer.ajax_call('book', 'hidden_nodes', Drupal.settings.outline_designer.activeNid, multiple, hide_status, null);
};
// reset handler
Drupal.outline_designer_ops.hidden_nodes_reset = function() {
$("#od_hidden_nodes_multiple").attr("checked", true);
};
})(jQuery);
*/