From 197601ef5fa2e6aaabfb6e0baaf56179f7cc1ee3 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 30 Apr 2008 04:21:42 -0400
Subject: [PATCH] Next step: introduce the application class 'rcmail' and get rid of some global vars

---
 program/include/rcube_template.php |   67 ++++++++++++++++++++-------------
 1 files changed, 40 insertions(+), 27 deletions(-)

diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index a76e378..df6c3cc 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -30,6 +30,7 @@
  */
 class rcube_template extends rcube_html_page
 {
+    var $app;
     var $config;
     var $task = '';
     var $framed = false;
@@ -45,13 +46,17 @@
      * Constructor
      *
      * @todo   Use jQuery's $(document).ready() here.
+     * @todo   Replace $this->config with the real rcube_config object
      */
-    public function __construct(&$config, $task)
+    public function __construct($task, $framed = false)
     {
         parent::__construct();
 
+        $this->app = rcmail::get_instance();
+        $this->config = $this->app->config->all();
+        
+        //$this->framed = $framed;
         $this->task = $task;
-        $this->config = $config;
 
         // add common javascripts
         $javascript = 'var '.JS_OBJECT_NAME.' = new rcube_webmail();';
@@ -348,7 +353,7 @@
      */
     private function parse_with_globals($input)
     {
-        $GLOBALS['__comm_path'] = Q($GLOBALS['COMM_PATH']);
+        $GLOBALS['__comm_path'] = Q($this->app->comm_path);
         return preg_replace('/\$(__[a-z0-9_\-]+)/e', '$GLOBALS["\\1"]', $input);
     }
 
@@ -609,7 +614,6 @@
      */
     private function button($attrib)
     {
-        global $CONFIG, $OUTPUT, $MAIN_TASKS;
         static $sa_buttons = array();
         static $s_button_count = 100;
 
@@ -692,7 +696,7 @@
             ));
 
             // make valid href to specific buttons
-            if (in_array($attrib['command'], $MAIN_TASKS)) {
+            if (in_array($attrib['command'], rcmail::$main_tasks)) {
                 $attrib['href'] = Q(rcmail_url(null, null, $attrib['command']));
             }
             else if (in_array($attrib['command'], $a_static_commands)) {
@@ -795,13 +799,35 @@
 
 
     /**
+     * Create a form tag with the necessary hidden fields
+     *
+     * @param array Named tag parameters
+     * @return string HTML code for the form
+     */
+    public function form_tag($attrib, $content = null)
+    {
+      if ($this->framed) {
+        $hiddenfield = new html_hiddenfield(array('name' => '_framed', 'value' => '1'));
+        $hidden = $hiddenfield->show();
+      }
+      
+      if (!$content)
+        $attrib['noclose'] = true;
+      
+      return html::tag('form',
+        $attrib + array('action' => "./", 'method' => "get"),
+        $hidden . $content);
+    }
+
+
+    /**
      * GUI object 'username'
      * Showing IMAP username of the current session
      *
      * @param array Named tag parameters (currently not used)
      * @return string HTML code for the gui object
      */
-    static function current_username($attrib)
+    public function current_username($attrib)
     {
         global $USER;
         static $username;
@@ -835,8 +861,7 @@
      */
     private function login_form($attrib)
     {
-        global $CONFIG, $SESS_HIDDEN_FIELD;
-        $default_host = $CONFIG['default_host'];
+        $default_host = $this->config['default_host'];
 
         $_SESSION['temp'] = true;
 
@@ -880,20 +905,12 @@
             $table->add(null, $input_host->show(get_input_value('_host', RCUVE_INPUT_POST)));
         }
 
-        $out = $SESS_HIDDEN_FIELD;
-        $out .= $input_action->show();
+        $out = $input_action->show();
         $out .= $table->show();
 
         // surround html output with a form tag
         if (empty($attrib['form'])) {
-            $out = html::tag(
-                'form',
-                array(
-                    'name' => $form_name,
-                    'action' => "./",
-                    'method' => "post"
-                ),
-            $out);
+            $out = $this->form_tag(array('name' => $form_name, 'method' => "post"), $out);
         }
 
         return $out;
@@ -924,15 +941,11 @@
 
         // add form tag around text field
         if (empty($attrib['form'])) {
-            $out = html::tag(
-                'form',
-                array(
-                    'name' => "rcmqsearchform",
-                    'action' => "./",
-                    'onsubmit' => JS_OBJECT_NAME . ".command('search');return false;",
-                    'style' => "display:inline",
-                ),
-            $out);
+            $out = $this->form_tag(array(
+                'name' => "rcmqsearchform",
+                'onsubmit' => JS_OBJECT_NAME . ".command('search');return false;",
+                'style' => "display:inline"),
+              $out);
         }
 
         return $out;

--
Gitblit v1.9.1