8435f214ec31141526990a86c3fb262ce5965398
[raven.git] / apps / gacksadmin / vicci.module
1
2 <?php // -*-php-*-
3   //
4   // Vicci PlanetLab Module
5   // $Id$
6   //
7
8 require_once 'plc_config.php';
9 require_once 'plc_session.php';
10 require_once 'plc_functions.php';
11 require_once 'gacks_functions.php';
12
13 drupal_set_html_head('<link href="/planetlab/css/plc_style.css" rel="stylesheet" type="text/css"/>');
14
15 function vicci_help($section) {
16   switch ($section) {
17   case 'admin/modules#description':
18     return t('Vicci Simplified User Portal.');
19   }
20 }
21
22 function vicci_info($field = 0) {
23   $info['name'] = 'Vicci';
24
25   if ($field) {
26     return $info[$field];
27   } else {
28     return $info;
29   }
30 }
31
32 function vicci_block($op = 'list', $delta = 0, $edit = array()) {
33   global $user, $plc;
34
35   if ($op == 'list') {
36     // this appears to be what's shown in the drupal "Blocks" admin page
37     $blocks[0]['info'] = t('Vicci');
38
39     return $blocks;
40
41   } else if ($op == 'view') {
42     $block = array();
43     $items = array();
44
45     // by default, don't hide planetlab block
46     $plc->hide_planetlab_block=FALSE;
47
48     $plc_synced = $_SESSION['plc_sso'];
49
50     if (!$plc->person) {
51         // Force login via HTTPS
52         unset($_GET['time']);
53         $form['#action'] = "https://" . $_SERVER['HTTP_HOST'] . "/db/common/login.php?url=" . url($_GET['q'], drupal_get_destination());
54         $form['#id'] = 'planetlab-login-form';
55         $form['email'] = array('#type' => 'textfield',
56                             '#title' => t('E-mail'),
57                             '#maxlength' => 60,
58                             '#size' => 25,
59                             '#required' => TRUE,
60                             '#name' => 'email',
61                             );
62         $form['password'] = array('#type' => 'password',
63                             '#title' => t('Password'),
64                             '#size' => 25,
65                             '#required' => TRUE,
66                             '#name' => 'password',
67                             );
68         $form['submit'] = array('#type' => 'submit',
69                               '#value' => t('Log in'),
70                               );
71
72         $block['subject'] = 'Vicci Login';
73         $block['content'] = drupal_get_form('planetlab_login_block', $form, 'planetlab_login');
74         $block['content'] .= p('');
75         $block['content'] .= p( href (l_reset_password(),"Forgot your password?") );
76         $block['content'] .= p( href(l_person_register(),"Create an account") );
77         $block['content'] .= p( href(l_site_register(),"File a site registration") );
78         $plc->hide_planetlab_block=TRUE;
79     } else {
80         $block['subject'] .= 'Vicci<br>' . truncate($plc->person['email'],30);
81
82         if ($plc_synced) {
83            $block['subject'] .= " <font size=1>(pl)</font>";
84         }
85
86         $bullet_item = href( l_gacks_summary(), "Summary");
87         $items []= expanded($bullet_item);
88
89         $bullet_item = href( l_gacks_service_level(), "Service settings");
90         $items []= expanded($bullet_item);
91
92         if ($plc_synced) {
93             $bullet_item = href("/planetlab_create_slice","Create new slice");
94             $items []= expanded($bullet_item);
95
96             $bullet_item = href("/planetlab_add_users", "Add users to slice");
97             $items []= expanded($bullet_item);
98         } else {
99             $bullet_item = href(l_slice_add(),"Create new slice");
100             $items []= expanded($bullet_item);
101
102             $bullet_item = href( l_gacks_persons(), "Add users to slice");
103             $items []= expanded($bullet_item);
104         }
105
106         $bullet_item = href( l_gacks_wizard(), "Add nodes to slice");
107         $items []= expanded($bullet_item);
108
109         $bullet_item = href( l_gacks_user_reservations(), "Reserve resources");
110         $items []= expanded($bullet_item);
111
112         $bullet_item = l_person_t(plc_my_person_id(),"User account settings");
113         $items []= expanded($bullet_item);
114
115         if (plc_advanced()) {
116             $bullet_item = href(l_gacks_advanced(0, $_SERVER['REQUEST_URI']),"Hide Advanced");
117             $items []= expanded($bullet_item);
118         } else {
119             $bullet_item = href (l_logout(),'Logout');
120             $items []= expanded($bullet_item);
121             $bullet_item = href(l_gacks_advanced(1, $_SERVER['REQUEST_URI']),"Show Advanced");
122             $items []= expanded($bullet_item);
123             $plc->hide_planetlab_block=TRUE;
124         }
125
126         $block['content'] = menu_theme($items);
127
128         //if ($plc_synced) {
129         //    $block['content'] .= "<font size=1>" . p("Your user account settings are synced from PlanetLab." . "</font>");
130         //}
131     }
132
133     return $block;
134   }
135 }
136
137 // I don't think I need any of the stuff below
138
139 function _vicci_menu($may_cache) {
140   $items = array();
141
142   if ($may_cache) {
143     $items[] = array(
144                      'path' => 'gacksadmin',
145                      'title' => variable_get('site_name', 'local'),
146                      'callback' => 'vicci_page',
147                      'access' => TRUE,
148                      'type' => MENU_CALLBACK
149                      );
150   }
151
152   return $items;
153 }
154
155 function _vicci_page() {
156   $path = $_SERVER['DOCUMENT_ROOT'] . preg_replace('/^db\//', '/gacks/', $_GET['q']);
157
158   // error_log("Requested " . $_GET['q'] . " -> $path");
159
160   if (is_dir($path)) {
161     foreach (array('index.php', 'index.html', 'index.htm') as $index) {
162       if (is_file($path . "/$index")) {
163         $path .= "/$index";
164         break;
165       }
166     }
167   }
168
169   if (is_file($path)) {
170     if (preg_match('/.php$/', $path)) {
171       ob_start();
172       include $path;
173       $output = ob_get_contents();
174       ob_end_clean();
175     } else {
176       $output = file_get_contents($path);
177     }
178     return $output;
179   }
180
181   drupal_not_found();
182 }
183
184 function _theme_vicci($content) {
185   return $content;
186 }
187
188 ?>
189
190