From 009e53b991ddef9b43f785baf6df39d4830be3d6 Mon Sep 17 00:00:00 2001 From: hickert Date: Wed, 8 Oct 2008 10:48:02 +0000 Subject: [PATCH] Updated gotoLpdEnable Dialog. git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@12626 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../systems/goto/class_gotoLpdEnabled.inc | 212 ++++++++++++++++-- .../systems/goto/class_workstationService.inc | 13 +- .../goto/admin/systems/goto/gotoLpdEnable.tpl | 65 +++++- .../admin/systems/goto/workstationService.tpl | 2 +- 4 files changed, 257 insertions(+), 35 deletions(-) diff --git a/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc b/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc index 6f83bda3a..7c25d92c3 100644 --- a/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc +++ b/gosa-plugins/goto/admin/systems/goto/class_gotoLpdEnabled.inc @@ -4,42 +4,210 @@ class gotoLpdEnable extends plugin { public $parent; - protected $device = ""; - protected $port = ""; - protected $options = ""; - protected $writeonly= FALSE; + protected $DevID = 0; + private $data = array(); + private $default_entry = array(); - public $attributes = array("device","port","options","writeonly"); + protected $s_Type = "USB"; + protected $s_Device = "/dev/usb/lp"; + protected $i_Port = 9100; + protected $s_Options = ""; + protected $s_WriteOnly = "Y"; + + protected $s_Speed = 9600; + protected $s_FlowControl = "S"; + protected $s_Parity = "E"; + protected $i_Bit = 5; + + /* Option predefinition */ + private $a_Types = array(); + private $a_Boolean = array(); + private $a_FlowControls = array(); // + private $a_Parities = array(); // + private $a_Speeds = array(); // + private $a_Bits = array(); // + private $a_Devices = array(); + + public $attributes = array("s_Type","s_Device","i_Port","s_Options","s_WriteOnly", + "s_Speed","s_FlowControl","s_Parity","i_Bit"); public function __construct($config,$data,&$parent) { plugin::plugin($config,NULL); - $this->parent = $parent; - } + $this->DevID = 0; + + /**** + Predefine values + ****/ + $this->a_Types = array( + "USB" => _("USB"), + "Parallel" => _("Parallel port"), + "Serial" => _("Serial")); + $this->a_Boolean = array( + "Y" => _("Yes"), + "N" => _("No")); + $this->a_FlowControl = array( + "S" => _("Software"), + "H" => _("Hardware")); + $this->a_Parities = array( + "E" => _("Even"), + "O" => _("Odd"), + "N" => _("None")); + $this->a_Speeds = array( + "4800" => "4.800 "._("bit/s"), + "9600" => "9.600 "._("bit/s"), + "19200" => "19.200 "._("bit/s"), + "38400" => "38.400 "._("bit/s"), + "57600" => "57.600 "._("bit/s"), + "115200"=> "115.200 "._("bit/s"), + "230400"=> "230.400 "._("bit/s"), + "460800"=> "460.800 "._("bit/s")); + $this->a_Bits = array( + 5,6,7,8); + $this->a_Devices = array( + "USB" => "/dev/usb/lp", + "Parallel" => "/dev/lp", + "Serial" => "/dev/ttyS"); + + /* Create default entry + */ + foreach($this->attributes as $attr){ + $this->default_entry[$attr] = $this->$attr; + } + + /* Load current settings + */ + if(count($data) == 0){ + $this->is_account = FALSE; + }else{ + $this->is_account = TRUE; + foreach($data as $dat){ + list($s_Type,$s_Device,$i_Port,$s_Speed,$s_FlowControl,$s_Parity,$i_Bit,$s_WriteOnly,$s_Options) = split("\:",$dat); + $entry = array(); + foreach($this->attributes as $attr){ + $entry[$attr] = $$attr; + } + $this->data[] = $entry; + } + + /* Set first entry values + */ + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + } + $this->initially_was_account = $this->is_account; + } public function execute() { - $smarty = get_smarty(); - - $smarty->assign("devices",array( - "USB" => _("USB"), - "PARALLEL" => _("Parallel"), - "SERIAL" => _("Serial"))); + $display = ""; + if(isset($_POST['modify_state'])){ + $this->is_account = !$this->is_account; + if(!$this->is_account){ + $this->data = array(); + }else{ + $entry = $this->default_entry; + $entry['i_Port'] = $entry['i_Port'] + count($this->data); + $entry['s_Device'] = $entry['s_Device'].count($this->data); + $this->data = array(0 => $entry); + $this->DevID = 0; + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + } + } + if($this->is_account){ + $display .= $this->show_disable_header(msgPool::removeFeaturesButton(_("Printer")),"",FALSE); + }else{ + $display .= $this->show_enable_header(msgPool::addFeaturesButton(_("Printer")),"",FALSE); + } + $smarty = get_smarty(); foreach($this->attributes as $attr){ $smarty->assign($attr,$this->$attr); } - foreach(array("devices","ports") as $attr){ - $smarty->assign($attr,array()); + foreach(array("DevID","a_Types","a_Boolean","a_FlowControl","a_Parities","a_Speeds","a_Bits") as $attr){ + $smarty->assign($attr,$this->$attr); } - - return($smarty->fetch(get_template_path("gotoLpdEnable.tpl",TRUE,dirname(__FILE__)))); + ksort($this->data); + $smarty->assign("data_cnt",count($this->data)); + $smarty->assign("data",$this->data); + $smarty->assign("a_DevIDs",array_keys($this->data)); + $smarty->assign("s_WriteOnly", $this->s_WriteOnly == "Y"); + $smarty->assign("is_account",$this->is_account); + return($display.$smarty->fetch(get_template_path("gotoLpdEnable.tpl",TRUE,dirname(__FILE__)))); } + public function save_object() { + if(!$this->is_account) return; + $propose_device = ""; + if(isset($_POST['s_Device']) && empty($_POST['s_Device']) && + isset($_POST['s_Type']) && $_POST['s_Type'] != $this->s_Type){ + $propose_device = $this->a_Devices[$_POST['s_Type']].$this->DevID; + } + plugin::save_object(); + + if(isset($_POST['gotoLpdEnable_entry_posted']) && isset($_POST['s_WriteOnly'])){ + $this->s_WriteOnly = "Y"; + }else{ + $this->s_WriteOnly = "N"; + } + + if(!empty($propose_device)){ + $this->s_Device = $propose_device; + } + + foreach($this->attributes as $attr){ + $this->data[$this->DevID][$attr] = $this->$attr; + } + + /* Device ID has changed */ + if(isset($_POST['DevID']) && $_POST['DevID'] != $this->DevID){ + $this->DevID = $_POST['DevID']; + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + } + + if(isset($_POST['del_printer'])){ + unset($this->data[$this->DevID]); + $this->data = array_values($this->data); + if(count($this->data) == 0){ + $this->is_account = FALSE; + } + $this->DevID = key($this->data); + } + if(isset($_POST['add_printer'])){ + if(count($this->data) < 3){ + $entry = $this->default_entry; + $entry['i_Port'] = $entry['i_Port'] + count($this->data); + $entry['s_Device'] = $entry['s_Device'].count($this->data); + $this->DevID = count($this->data); + $this->data[] = $entry; + foreach($this->attributes as $attr){ + $this->$attr = $this->data[$this->DevID][$attr]; + } + } + } + } + + public function save() + { + $ret = array(); + $attrs = array("s_Type","s_Device","i_Port","s_Speed","s_FlowControl","s_Parity","i_Bit","s_WriteOnly","s_Options"); + foreach($this->data as $entry){ + $str = ""; + foreach($attrs as $attr){ + $str .= $entry[$attr].":"; + } + $ret[] = preg_replace("/:$/","",$str); + } + return($ret); } @@ -49,9 +217,15 @@ class gotoLpdEnable extends plugin { return(TRUE); } + public function acl_is_removeable($skip_write = FALSE) + { + return(TRUE); + } + public function acl_is_createable($skip_write = FALSE) + { + return(TRUE); + } } - - // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> diff --git a/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc b/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc index bae371a8b..4cb2df0c2 100644 --- a/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc +++ b/gosa-plugins/goto/admin/systems/goto/class_workstationService.inc @@ -3,7 +3,7 @@ class workservice extends plugin { var $gotoScannerEnable; - var $gotoLpdEnable; + var $gotoLpdEnable = array(); /* Generic terminal attributes */ var $gotoXMonitor= ""; @@ -40,7 +40,7 @@ class workservice extends plugin var $attributes= array("gotoXMonitor", "gotoXDriver", "gotoXResolution", "gotoXColordepth", "gotoXHsync", "gotoXVsync", - "gotoScannerEnable","gotoLpdEnable", "gotoScannerClients", + "gotoScannerEnable", "gotoScannerClients", "gotoScannerBackend", "gotoXKbModel", "gotoXKbLayout", "gotoXKbVariant", "gotoXMouseType", "gotoXMouseport", "goFonHardware"); var $objectclasses= array("GOhard"); @@ -253,15 +253,20 @@ class workservice extends plugin } } + /********** gotoLpdEnable **********/ - if(isset($_POST['gotoLpdEnable_Close'])){ $this->dialog = NULL; } + if(isset($_POST['gotoLpdEnable_Ok'])){ + $this->dialog->save_object(); + $this->gotoLpdEnable = $this->dialog->save(); + $this->dialog = NULL; + } - if(isset($_POST['gotoLpdEnable'])){ + if(isset($_POST['gotoLpdEnable_Edit'])){ $this->dialog = new gotoLpdEnable($this->config,$this->gotoLpdEnable,$this); } diff --git a/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl b/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl index c6972b0ed..48910843c 100644 --- a/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl +++ b/gosa-plugins/goto/admin/systems/goto/gotoLpdEnable.tpl @@ -1,61 +1,104 @@ +{if !$is_account} +{else}
- + + + + + + + + +
{t}Device{/t}{t}Device{/t} # + + {if $data_cnt >= 3} + + {else} + + {/if} + +
{t}Type{/t} - + {html_options options=$a_Types selected=$s_Type}
{t}Device{/t} + +
{t}Port{/t} - +
{t}Options{/t} - +
{t}Write only{/t} - +
+{if $s_Type == "Serial"} - + - + - + - +
{t}Speed{/t} + +
{t}Flow control{/t} + +
{t}Parity{/t} + +
{t}Bits{/t} + +
+{/if}
- +

+{/if}
  diff --git a/gosa-plugins/goto/admin/systems/goto/workstationService.tpl b/gosa-plugins/goto/admin/systems/goto/workstationService.tpl index 4314be068..82539c3af 100644 --- a/gosa-plugins/goto/admin/systems/goto/workstationService.tpl +++ b/gosa-plugins/goto/admin/systems/goto/workstationService.tpl @@ -210,7 +210,7 @@

{t}Printer{/t}

{render acl=$gotoLpdEnableACL} - + {/render} -- 2.30.2