X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fincludes%2Fplc_details.php;h=5d3c50e3e828db75e8514efe43312a293609436f;hb=9ac6b3f5a03b6608270017694fce844632f93fb9;hp=c8078bc362d93c5a6c92d8a4430de9f1bd322f68;hpb=ca6e72138a20a68200f98f4efe713d39cc2c56af;p=plewww.git
diff --git a/planetlab/includes/plc_details.php b/planetlab/includes/plc_details.php
index c8078bc..5d3c50e 100644
--- a/planetlab/includes/plc_details.php
+++ b/planetlab/includes/plc_details.php
@@ -14,20 +14,32 @@ drupal_set_html_head('
// fieldname=>value
// and we add in-line editing capabilities
+// $editable : if not set, no edition will be allowed in the table
+// this is typically set to false when user does not have write access
+// then each individual th_td provides its form_varname if and only iff edition is desired
+
+// start & end :create and close a 2-columns table
+// th_td -> display label & value, with optional inline editing capability
+// th_tds -> not editable, display a (vertical) list of values in the
area
+// th_th : special cases, display 2
+// xxx todo : accept optional arguments as an options hash, rather than using the set_ methods which are ugly
+
class PlcDetails {
var $editable;
var $form;
+ // various options for the editing area
// set manually
- var $field_width;
- var $field_height;
- var $input_type="text";
+ var $width;
+ var $height;
+ var $input_type;
function PlcDetails ($editable) {
$this->editable=$editable;
$this->form=NULL;
- $this->field_width="";
- $this->field_height="2";
+ $this->width="";
+ $this->height="2";
+ $this->input_type="text";
}
function form() { return $this->form; }
@@ -62,36 +74,66 @@ class PlcDetails {
return $html;
}
- // must be embedded in a line or a single
+ //////////////////// several forms for submit button
// xxx need a way to ask for confirmation
+
+ // must be embedded in a th_td or a tr
function submit_html ($name,$display) {
if ( ! $this->form) return "";
if ( ! $this->editable) return "";
return $this->form->submit_html($name,$display);
}
+ function tr_submit_html ($name,$display) {
+ if ( ! $this->form) return "";
+ if ( ! $this->editable) return "";
+ return $this->tr_html($this->form->submit_html($name,$display),"right");
+ }
+ function tr_submit ($name,$display) { print $this->tr_submit_html ($name,$display); }
+
+
+ ////////////////////////////////////////
+ function set_width ($width) {
+ $old=$this->width;
+ $this->width=$width;
+ return $old;
+ }
+ function set_height ($height) {
+ $old=$this->height;
+ $this->height=$height;
+ return $old;
+ }
// give a form_varname if the field can be edited
- function line ($title,$value,$form_varname="") {
- print $this->line_html ($title,$value,$form_varname);
+ function th_td ($title,$value,$form_varname="",$options=NULL) {
+ print $this->th_td_html ($title,$value,$form_varname,$options);
}
- function line_html ($title,$value,$form_varname="") {
+ function th_td_html ($title,$value,$form_varname="",$options=NULL) {
if ( ! ($this->editable && $form_varname) ) {
return "
$title
$value
";
} else {
+ if (!$options) $options = array();
+ // use options if provided, otherwise the latest set_ function
+ if (array_key_exists('input_type',$options)) $input_type=$options['input_type'];
+ else $input_type=$this->input_type;
+ if (array_key_exists('width',$options)) $width=$options['width'];
+ else $width=$this->width;
+ if (array_key_exists('height',$options)) $height=$options['height'];
+ else $height=$this->height;
+
$html="";
$html .= "
";
$html .= "
";
// hack: if input_type is select : user provides the input field verbatim
- if ( $this->input_type == "select" ) {
+ if ( $input_type == "select" ) {
$html .= $value;
- } else if ($this->input_type == "textarea") {
+ } else if ($input_type == "textarea") {
$html .= "";
} else {
- $html .= "field_width) $html .= " size=$this->field_width";
+ $html .= "lines_html($title,$list); }
- function lines_html($title,$list) {
- return $this->line_html($title,plc_vertical_table($list,"foo"));
+ function th_tds($title,$list) { print $this->th_tds_html($title,$list); }
+ function th_tds_html($title,$list) {
+ return $this->th_td_html($title,plc_vertical_table($list,"foo"));
}
- function line_th ($th1,$th2) { print $this->line_th_html ($th1, $th2);}
- function line_th_html ($th1, $th2) {
+ // only for special cases, not editable
+ function th_th ($th1,$th2) { print $this->th_th_html ($th1, $th2);}
+ function th_th_html ($th1, $th2) {
return "
$th1
$th2
";
}
// 1 item, colspan=2
- function single($title,$align=NULL) { print $this->single_html($title,$align);}
- function single_html($title,$align=NULL) {
+ function tr($title,$align=NULL) { print $this->tr_html($title,$align);}
+ function tr_html($title,$align=NULL) {
$result="