From fbe24e9fa92bf1f118bac2053fea822b8213c3f6 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 24 Nov 2010 06:56:15 -0500
Subject: [PATCH] Allow plugin templates to include local files (#1487133); make autocomplete on login screen configurable

---
 skins/default/templates/login.html |    2 +-
 config/main.inc.php.dist           |    3 +++
 program/include/rcube_template.php |   11 ++++++++---
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index aba4166..2b18da3 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -180,6 +180,9 @@
 // set the port for the ssl connection as value of this option if it differs from the default 443
 $rcmail_config['force_https'] = false;
 
+// Allow browser-autocompletion on login form
+$rcmail_config['login_autocomplete'] = false;
+
 // automatically create a new Roundcube user when log-in the first time.
 // a new user will be created once the IMAP login succeeds.
 // set to false if only registered users can use this service
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index c8e8138..8a9eff4 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -37,6 +37,7 @@
     private $js_env = array();
     private $js_commands = array();
     private $object_handlers = array();
+    private $plugin_skin_path;
 
     public $browser;
     public $framed = false;
@@ -373,16 +374,17 @@
     {
         $skin_path = $this->config['skin_path'];
         $plugin = false;
+        $this->plugin_skin_path = null;
 
         $temp = explode(".", $name, 2);
         if (count($temp) > 1) {
             $plugin = $temp[0];
             $name = $temp[1];
             $skin_dir = $plugin . '/skins/' . $this->config['skin'];
-            $skin_path = $this->app->plugins->dir . $skin_dir;
+            $skin_path = $this->plugin_skin_path = $this->app->plugins->dir . $skin_dir;
             if (!is_dir($skin_path)) {  // fallback to default skin
                 $skin_dir = $plugin . '/skins/default';
-                $skin_path = $this->app->plugins->dir . $skin_dir;
+                $skin_path = $this->plugin_skin_path = $this->app->plugins->dir . $skin_dir;
             }
         }
 
@@ -664,7 +666,9 @@
 
             // include a file
             case 'include':
-                $path = realpath($this->config['skin_path'].$attrib['file']);
+                if (!$this->plugin_skin_path || !is_file($path = realpath($this->plugin_skin_path . $attrib['file'])))
+                    $path = realpath(($attrib['skin_path'] ? $attrib['skin_path'] : $this->config['skin_path']).$attrib['file']);
+                
                 if (is_readable($path)) {
                     if ($this->config['skin_include_php']) {
                         $incl = $this->include_php($path);
@@ -1041,6 +1045,7 @@
     private function login_form($attrib)
     {
         $default_host = $this->config['default_host'];
+        $attrib['autocomplete'] = $this->config['login_autocomplete'] ? null : 'off';
 
         $_SESSION['temp'] = true;
 
diff --git a/skins/default/templates/login.html b/skins/default/templates/login.html
index d36fd74..a315557 100644
--- a/skins/default/templates/login.html
+++ b/skins/default/templates/login.html
@@ -16,7 +16,7 @@
 <div class="boxcontent">
 
 <form name="form" action="./" method="post">
-<roundcube:object name="loginform" form="form" autocomplete="off" />
+<roundcube:object name="loginform" form="form" />
 
 <p style="text-align:center;"><input type="submit" class="button mainaction" value="<roundcube:label name='login' />" /></p>
 

--
Gitblit v1.9.1