/[drupal]/contributions/modules/views_multiblock/views_multiblock.module.bak
ViewVC logotype

Contents of /contributions/modules/views_multiblock/views_multiblock.module.bak

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Wed Jun 13 05:23:48 2007 UTC (2 years, 5 months ago) by morrissinger
Branch: MAIN
CVS Tags: DRUPAL-5--1-0, HEAD
Branch point for: DRUPAL-5
Initial commit of views_multiblock module. This module allows you to use one view to generate many different blocks.
1 <?php
2
3 function views_multiblock_menu($may_cache) {
4
5 $path = drupal_get_path('module', 'views_multiblock');
6 require_once("./$path/views_multiblock_views.inc");
7
8 drupal_add_css(drupal_get_path('module', 'views_multiblock') .'/views_multiblock.css');
9
10 $items = array();
11
12 if ($may_cache) {
13 $items[] = array('path' => 'views_multiblock/increment',
14 'access' => user_access('administer nodes'),
15 'callback' => 'views_multiblock_story_number',
16 'callback arguments' => array('direction' => 'increment'),
17 'type' => MENU_CALLBACK,
18 );
19 $items[] = array('path' => 'views_multiblock/decrement',
20 'access' => user_access('administer nodes'),
21 'callback' => 'views_multiblock_story_number',
22 'callback arguments' => array('direction' => 'decrement'),
23 'type' => MENU_CALLBACK,
24 );
25
26 $items[] = array(
27 'path' => 'admin/settings/views_multiblock',
28 'title' => t('Views_Multiblock'),
29 'description' => t('These settings control the configurable global options for views_multiblock.'),
30 'callback' => 'drupal_get_form',
31 'callback arguments' => array('views_multiblock_admin_settings'),
32 'access' => user_access('administer site configuration'),
33 'type' => MENU_NORMAL_ITEM, // optional
34 );
35
36 return $items;
37 }
38
39 }
40
41 function views_multiblock_admin_settings() {
42 //Default number of views_multiblock
43 $form['views_multiblock_number'] = array('#title' => t('Number of blocks'),
44 '#description' => t('Select the number of blocks to use on this site'),
45 '#type' => 'select',
46 '#options' => array(0, 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),
47 '#default_value' => variable_get('views_multiblock_number', 5),
48 );
49
50 //Get all views
51 $views = _views_multiblock_get_views();
52
53 //Select a view
54 $form['views_multiblock_view'] = array(
55 '#title' => t('View'),
56 '#type' => 'select',
57 '#description' => t('Select which view to use with views_multiblock.'),
58 '#options' => $views,
59 '#default_value' => variable_get('views_multiblock_view', 'views_multiblock'),
60 );
61
62 return system_settings_form($form);
63 }
64
65 function views_multiblock_block($op = 'list', $delta = 0, $edit = array()) {
66 switch ($op) {
67 case 'list':
68 for($i = 0; $i < variable_get('views_multiblock_number', 5); $i++) {
69 $blocks[$i]['info'] = variable_get('views_multiblock_title_' . $i, t('Views Multiblock !d', array('!d' => $i))) . ' [vm]';
70 }
71 return $blocks;
72 case 'configure':
73 return _views_multiblock_configure_form($delta);
74 case 'save':
75 _views_multiblock_save_configuration($delta, $edit);
76 break;
77 case 'view':
78 $bypass = variable_get('views_multiblock_view_' . $delta, 0);
79
80 if($bypass != 0) {
81 $view_name = $bypass;
82 } else {
83 $view_name = variable_get('views_multiblock_views', 'views_multiblock');
84 }
85 $view = views_get_view($view_name);
86 //rdpw($view);
87 $category = variable_get('views_multiblock_category_' . $delta, 0);
88
89 if (empty($view) || empty($category)) {
90 return;
91 }
92 $number_of_stories = variable_get('views_multiblock_items_' . $delta, 3);
93
94 //Use the block view so that we have control over the number of stories outputted without using the pager.
95 $view_output = views_build_view('block', $view, array($category), FALSE, $number_of_stories);
96
97 //Increment/Decrement Buttons
98 if(user_access('administer nodes')) {
99 $buttons = theme('views_multiblock_buttons', $delta);
100 }
101
102 //Headers
103 $header = variable_get('views_multiblock_header_' . $delta, NULL);
104 if(!empty($header)) {
105 $header = theme('views_multiblock_header', $header);
106 }
107
108 $block['content'] = $buttons . $header . $view_output;
109
110
111
112 return $block;
113
114 }
115 }
116
117 function views_multiblock_story_number($direction, $delta) {
118 $current_setting = variable_get('views_multiblock_items_' . arg(2), FALSE);
119 if ($current_setting !== FALSE) {
120 if ($direction == 'increment') {
121 variable_set('views_multiblock_items_' . arg(2), ++$current_setting);
122 }
123 else {
124 variable_set('views_multiblock_items_' . arg(2), --$current_setting);
125 }
126 }
127 drupal_goto(referer_uri());
128 }
129
130 function _views_multiblock_configure_form($delta) {
131 $form['title'] = array(
132 '#type' => 'textfield',
133 '#title' => 'Title',
134 '#default_value' => variable_get('views_multiblock_title_' . $delta, NULL),
135 '#weight' => -20
136 );
137 $form['category'] = array(
138 '#options' => taxonomy_form_all(),
139 '#type' => 'select',
140 '#title' => t('Category'),
141 '#description' => t('Choose a category to display nodes from.'),
142 '#default_value' => variable_get('views_multiblock_category_' .$delta, 0),
143 // '#multiple' => TRUE, // Singular for now
144 );
145 $form['items'] = array(
146 '#type' => 'select',
147 '#title' => t('Number of items to display'),
148 '#default_value' => variable_get('views_multiblock_items_' . $delta, 2) - 1,
149 '#options' => array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10'),
150 );
151 $form['header'] = array(
152 '#type' => 'textarea',
153 '#title' => 'Header',
154 '#default_value' => variable_get('views_multiblock_header_' . $delta, ''),
155 '#description' => t('Text for the header of the block.'),
156 );
157 $form['view_bypass'] = array(
158 '#type' => 'select',
159 '#title' => 'View',
160 '#default_value' => variable_get('views_multiblock_view_' . $delta, -1),
161 '#description' => t('Select a view to use if you wish to bypass the default.'),
162 '#options' => array_merge(array('0' => t('--Default--')), _views_multiblock_get_views()),
163 );
164
165 return $form;
166 }
167
168 function _views_multiblock_save_configuration($delta, $edit = array()) {
169 variable_set('views_multiblock_title_' . $delta, $edit['title']);
170 variable_set('views_multiblock_category_' . $delta, $edit['category']);
171 variable_set('views_multiblock_items_' . $delta, $edit['items'] + 1);
172 variable_set('views_multiblock_header_' . $delta, $edit['header']);
173 variable_set('views_multiblock_view_' . $delta, $edit['view_bypass']);
174 }
175
176 function _views_multiblock_get_views() {
177 $views = array();
178 $qs = db_query("SELECT v.vid, v.name FROM {view_view} v");
179 while($obj = db_fetch_object($qs)) {
180 $views[$obj->name] = $obj->name;
181 }
182 $default_views = module_invoke_all('views_default_views');
183 foreach($default_views as $default_view) {
184 $views[$default_view->name] = $default_view->name;
185 }
186
187 return $views;
188 }
189
190 function theme_views_multiblock_buttons($delta) {
191 $path = drupal_get_path('module', 'views_multiblock');
192 global $base_url;
193
194 $plus = "$base_url/$path/plus.gif";
195 $minus = "$base_url/$path/minus.gif";
196
197
198 $plus = l('<img src="' . $plus . '" />', 'views_multiblock/increment/' . $delta, array(), NULL, NULL, FALSE, TRUE);
199 $minus = l('<img src="' . $minus . '" />', 'views_multiblock/decrement/' . $delta, array(), NULL, NULL, FALSE, TRUE);
200 $buttons = '<div style="float: right; clear: both;">' . $plus . $minus . '</div>';
201
202 return $buttons;
203 }
204
205 function theme_views_multiblock_header($header) {
206 return '<div class="views_multiblock_block_header">' . $header . "</div>\n";
207 }
208
209 ?>

  ViewVC Help
Powered by ViewVC 1.1.2