cleanup for plc_sorts.php removal.
[plewww.git] / planetlab / slices / slice_add.php
1 <?php
2
3 // Require login
4 require_once 'plc_login.php';
5
6 // Get session and API handles
7 require_once 'plc_session.php';
8 global $plc, $api;
9
10 // Common functions
11 require_once 'plc_functions.php';
12   
13 // find person roles
14 $_person= $plc->person;
15 $_roles= $_person['role_ids'];
16
17 //print_r( $_person );
18
19 // if not a PI or admin then redirect to slice index
20 if( !in_array( '10', $_roles ) && !in_array( '20', $_roles ) )
21   header( "index.php" );
22
23 if( !$_POST['name'] ) {
24   // get default site base
25   $site_info= $api->GetSites( array( $_person['site_ids'][0] ), array( "login_base" ) );
26   $base= $site_info[0]['login_base'] ."_";
27 }
28
29 // add it
30 if( $_POST['add'] ) {
31   // get post vars
32   $url= $_POST['url'];
33   $instantiation= $_POST['instantiation'];
34   $name= $_POST['name'];
35   $description= $_POST['description'];
36
37   // validate input
38   if( $name == $base )
39     $error['name']= "<font color=red>You must enter a name for your slice.</font>";
40   else {
41     $slice_name= $name;
42     // make sure slice name doesnt exist
43     $slice_info= $api->GetSlices( array( $slice_name ), array( "slice_id" ) );
44     
45     if( !empty( $slice_info ) ) {
46       $error['name']= "<font color=red>Slice name already in use.  Please choose another.</font>";
47       $name= "";
48     }
49     
50   }
51   
52   if( $url == "http://" || "" )
53     $error['url']= "<font color=red>You must enter a URL for your slice's info.</font>";
54       
55   if( $description == "" )
56     $error['description']= "<font color=red>Your must enter a description for you slice.</font>";
57   
58   // if no errors then add
59   if( !$error ) {
60     $fields= array( "url" => $url, "instantiation" => $instantiation, "name" => $slice_name, "description" => $description );
61     echo "added: <pre>"; print_r( $fields ); echo "</pre>\n";
62     // add it!
63     $slice_new_id= $api->AddSlice( $fields );
64
65     if( $slice_new_id ) {
66       plc_redirect( "index.php?id=$slice_new_id" );
67       exit();
68     } else {
69       $error['api']= $api->error();
70     }
71   }
72
73 }
74
75 // Print header
76 require_once 'plc_drupal.php';
77 drupal_set_title('Slices');
78 include 'plc_header.php';
79
80
81 if( !$url )  
82   $url= "http://";
83
84 // check for errors and set error styles
85 if( $error['name'] )
86   $name_error= " class='plc-warning'";
87   
88 if( $error['url'] )
89   $url_error= " class='plc-warning'";
90   
91 if( $error['description'] )
92   $desc_error= " class='plc-warning'";
93
94
95 // add javaScript code
96 echo "<script type='text/javascript'>
97       function update(str1) {
98         var temp= new Array()
99         temp= str1.split('->');
100         var c= ( temp[1] + '_' )
101         document.getElementById('textbox').value = c;
102       }
103 </script>\n";
104
105
106 // start form
107 echo "<form action='slice_add.php' method=post>\n";
108
109 if( $error['api'] )
110   echo "<font class='plc-warning'>". $error['api'] ."</font>\n";
111
112 echo "<h2>Create Slice</h2>\n";
113
114 echo "<p>You must provide a short description of the new slice as well as a link to a project website before creating it. Do <strong>not</strong> provide bogus information; if a complaint is lodged against your slice and PlanetLab Operations is unable to determine what the normal behavior of your slice is, your slice may be deleted to resolve the complaint.\n";
115 echo "<p>There are three possible \"instantiation\" states for a slice. <strong>PLC</strong> creates a slice with default settings. <strong>Delegated</strong> creates a ticket to use on each node. <strong>None</strong> allows you to reserve a slice name; you may instantiate the slice later.\n";
116 echo "<p><strong>NOTE</strong>: All PlanetLab users are <strong>strongly</strong> encouraged to join the PlanetLab <a href='https://lists.planet-lab.org/mailman/listinfo/users'>Users</a> mailing list. Most questions about running software on PlanetLab can be answered by posting to this list. Site administrators often use this list to post announcements about service outages. New software releases and available services are announced here as well.\n";
117
118 echo "<p><table><tbody>\n";
119
120 // displays a site select list for admins and multi-site users
121 if( count( $_person['site_ids'] ) > 1 || in_array( 10, $_roles ) ) {
122   // get sites depending on role and sites associated.
123   if( in_array( 10, $_roles ) )
124     $site_info= $api->GetSites( NULL, array( "name", "site_id", "login_base" ) );
125   elseif( count( $_person['site_ids'] ) > 1 )
126     $site_info= $api->GetSites( $_person['site_ids'], array( "name", "site_id", "login_base" ) );
127
128   echo "<tr><th>Site: </th><td><select onchange='update(this[selectedIndex].text)' name='site_id'>\n";
129
130   sort_sites( $site_info );
131   foreach( $site_info as $site ) {
132     echo "<option value=". $site['site_id'];
133     if( $site['site_id'] == $_person['site_ids'][0] )
134       echo " selected";
135     echo ">". $site['name'] ."->". $site['login_base'] ."</option>\n";
136   }
137
138   echo "</select></td><td></td></tr>\n";
139
140 }
141
142 echo "<tr><th$name_error>Name: </th><td><input type=text id='textbox' name='name' size=40 value='";
143 if( $name ) 
144   echo $name;
145 else
146   echo $base;
147 echo "'></td><td>". $error['name'] ."</td></tr>\n";
148 echo "<tr><th$url_error>URL: </th><td> <input type=text name='url' size=50 value='$url'></td><td>". $error['url'] ."</td></tr>\n";
149 echo "<tr><th$desc_error>Description: </th><td> <textarea name='description' rows=5 cols=45>$description</textarea></td><td>". $error['description'] ."</td></tr>\n";
150 echo "<tr><th>Instantiation: </th><td> <select name='instantiation'>\n";
151 echo "<option value='plc-instantiated'"; if( $instantiation == 'plc-instantiated' ) echo " selected"; echo ">PLC</option>\n";
152 echo "<option value='delegated'"; if( $instantiation == 'delegated' ) echo " selected"; echo ">Delegated</option>\n";
153 echo "<option value='not-instantiated'"; if( $instantiation == 'not-instantiated' ) echo " selected"; echo ">None</option>\n";
154 echo "</select></td><td></td></tr>\n";
155
156 echo "</tbody></table>\n";
157
158 echo "<p><input type=submit name='add' value='Add Slice'>\n";
159
160 echo "</form>\n";
161
162
163
164
165 // Print footer
166 include 'plc_footer.php';
167
168 ?>