diff options
author | Thomas Bruederli <thomas@roundcube.net> | 2012-11-27 12:13:33 +0100 |
---|---|---|
committer | Thomas Bruederli <thomas@roundcube.net> | 2012-11-27 12:13:33 +0100 |
commit | 60226a75d8e4a3ee9504da6eab6d8f329bb32e7b (patch) | |
tree | 4194c1f4b32fea06964029e9ce06bb18ccb05da6 /program/lib/Roundcube/rcube_output.php | |
parent | 10da75f3645ff2121bbaf9d603f2e1465eddab78 (diff) |
Separate the very application-specific output classes from the Roundcube framework; add autoloader for rmail* classes
Diffstat (limited to 'program/lib/Roundcube/rcube_output.php')
-rw-r--r-- | program/lib/Roundcube/rcube_output.php | 123 |
1 files changed, 55 insertions, 68 deletions
diff --git a/program/lib/Roundcube/rcube_output.php b/program/lib/Roundcube/rcube_output.php index 3f881fe06..ca8d83ef3 100644 --- a/program/lib/Roundcube/rcube_output.php +++ b/program/lib/Roundcube/rcube_output.php @@ -28,22 +28,17 @@ abstract class rcube_output { public $browser; - public $type = 'html'; - public $ajax_call = false; - public $framed = false; protected $app; protected $config; - protected $charset = RCUBE_CHARSET; + protected $charset = RCMAIL_CHARSET; protected $env = array(); - protected $pagetitle = ''; - protected $object_handlers = array(); /** * Object constructor */ - public function __construct($task = null, $framed = false) + public function __construct() { $this->app = rcube::get_instance(); $this->config = $this->app->config; @@ -63,16 +58,6 @@ abstract class rcube_output return null; } - /** - * Setter for page title - * - * @param string $title Page title - */ - public function set_pagetitle($title) - { - $this->pagetitle = $title; - } - /** * Setter for output charset. @@ -98,15 +83,6 @@ abstract class rcube_output /** - * Getter for the current skin path property - */ - public function get_skin_path() - { - return $this->config->get('skin_path'); - } - - - /** * Set environment variable * * @param string $name Property name @@ -137,27 +113,10 @@ abstract class rcube_output public function reset() { $this->env = array(); - $this->object_handlers = array(); - $this->pagetitle = ''; } /** - * Call a client method - * - * @param string Method to call - * @param ... Additional arguments - */ - abstract function command(); - - - /** - * Add a localized label to the client environment - */ - abstract function add_label(); - - - /** * Invoke display_message command * * @param string $message Message to display @@ -185,31 +144,6 @@ abstract class rcube_output /** - * Register a template object handler - * - * @param string Object name - * @param string Function name to call - * @return void - */ - public function add_handler($obj, $func) - { - $this->object_handlers[$obj] = $func; - } - - - /** - * Register a list of template object handlers - * - * @param array Hash array with object=>handler pairs - * @return void - */ - public function add_handlers($arr) - { - $this->object_handlers = array_merge($this->object_handlers, $arr); - } - - - /** * Send HTTP headers to prevent caching a page */ public function nocacheing_headers() @@ -266,6 +200,59 @@ abstract class rcube_output /** + * Create an edit field for inclusion on a form + * + * @param string col field name + * @param string value field value + * @param array attrib HTML element attributes for field + * @param string type HTML element type (default 'text') + * + * @return string HTML field definition + */ + public static function get_edit_field($col, $value, $attrib, $type = 'text') + { + static $colcounts = array(); + + $fname = '_'.$col; + $attrib['name'] = $fname . ($attrib['array'] ? '[]' : ''); + $attrib['class'] = trim($attrib['class'] . ' ff_' . $col); + + if ($type == 'checkbox') { + $attrib['value'] = '1'; + $input = new html_checkbox($attrib); + } + else if ($type == 'textarea') { + $attrib['cols'] = $attrib['size']; + $input = new html_textarea($attrib); + } + else if ($type == 'select') { + $input = new html_select($attrib); + $input->add('---', ''); + $input->add(array_values($attrib['options']), array_keys($attrib['options'])); + } + else if ($attrib['type'] == 'password') { + $input = new html_passwordfield($attrib); + } + else { + if ($attrib['type'] != 'text' && $attrib['type'] != 'hidden') { + $attrib['type'] = 'text'; + } + $input = new html_inputfield($attrib); + } + + // use value from post + if (isset($_POST[$fname])) { + $postvalue = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true); + $value = $attrib['array'] ? $postvalue[intval($colcounts[$col]++)] : $postvalue; + } + + $out = $input->show($value); + + return $out; + } + + + /** * Convert a variable into a javascript object notation * * @param mixed Input value |