start work on nodelist page
[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) && (!plc_is_admin()) && (!plc_is_pi())) {
93             // SSO accounts have these pages disabled, unless they're an admin
94             // or a PI.
95
96             $bullet_item = href("/planetlab_create_slice","Create new slice");
97             $items []= expanded($bullet_item);
98
99             $bullet_item = href("/planetlab_add_users", "Manage Slice Users");
100             $items []= expanded($bullet_item);
101         } else {
102             $bullet_item = href(l_slice_add(),"Create new slice");
103             $items []= expanded($bullet_item);
104
105             $bullet_item = href( l_gacks_persons(), "Manage Slice Users");
106             $items []= expanded($bullet_item);
107         }
108
109         $bullet_item = href( l_gacks_wizard(), "Manage Slice Nodes");
110         $items []= expanded($bullet_item);
111
112         $bullet_item = href( l_gacks_user_reservations(), "Reserve resources");
113         $items []= expanded($bullet_item);
114
115         $bullet_item = l_person_t(plc_my_person_id(),"User account settings");
116         $items []= expanded($bullet_item);
117
118         if (plc_advanced()) {
119             $bullet_item = href(l_gacks_advanced(0, $_SERVER['REQUEST_URI']),"Hide Advanced");
120             $items []= expanded($bullet_item);
121         } else {
122             $bullet_item = href (l_logout(),'Logout');
123             $items []= expanded($bullet_item);
124             $bullet_item = href(l_gacks_advanced(1, $_SERVER['REQUEST_URI']),"Show Advanced");
125             $items []= expanded($bullet_item);
126             $plc->hide_planetlab_block=TRUE;
127         }
128
129         $block['content'] = menu_theme($items);
130
131         //if ($plc_synced) {
132         //    $block['content'] .= "<font size=1>" . p("Your user account settings are synced from PlanetLab." . "</font>");
133         //}
134     }
135
136     return $block;
137   }
138 }
139
140 // I don't think I need any of the stuff below
141
142 function _vicci_menu($may_cache) {
143   $items = array();
144
145   if ($may_cache) {
146     $items[] = array(
147                      'path' => 'gacksadmin',
148                      'title' => variable_get('site_name', 'local'),
149                      'callback' => 'vicci_page',
150                      'access' => TRUE,
151                      'type' => MENU_CALLBACK
152                      );
153   }
154
155   return $items;
156 }
157
158 function _vicci_page() {
159   $path = $_SERVER['DOCUMENT_ROOT'] . preg_replace('/^db\//', '/gacks/', $_GET['q']);
160
161   // error_log("Requested " . $_GET['q'] . " -> $path");
162
163   if (is_dir($path)) {
164     foreach (array('index.php', 'index.html', 'index.htm') as $index) {
165       if (is_file($path . "/$index")) {
166         $path .= "/$index";
167         break;
168       }
169     }
170   }
171
172   if (is_file($path)) {
173     if (preg_match('/.php$/', $path)) {
174       ob_start();
175       include $path;
176       $output = ob_get_contents();
177       ob_end_clean();
178     } else {
179       $output = file_get_contents($path);
180     }
181     return $output;
182   }
183
184   drupal_not_found();
185 }
186
187 function _theme_vicci($content) {
188   return $content;
189 }
190
191 ?>
192
193