From 1730cf8d7b59c04e3db0b5425c5cd9401bfc1c43 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Thu, 24 Jan 2013 09:32:24 -0500
Subject: [PATCH] Load a default stylesheet (embed.css) from skin in plain html pages (e.g. attachment warnings and html messages)

---
 program/include/rcmail_output_html.php |    1 
 skins/larry/embed.css                  |   34 +++++++++++++++++
 program/include/rcmail_html_page.php   |   16 +++++++-
 program/steps/mail/get.inc             |   12 ++----
 4 files changed, 53 insertions(+), 10 deletions(-)

diff --git a/program/include/rcmail_html_page.php b/program/include/rcmail_html_page.php
index 2624d59..1d83915 100644
--- a/program/include/rcmail_html_page.php
+++ b/program/include/rcmail_html_page.php
@@ -5,7 +5,7 @@
  | program/include/rcmail_html_page.php                                  |
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
- | Copyright (C) 2006-2012, The Roundcube Dev Team                       |
+ | Copyright (C) 2006-2013, The Roundcube Dev Team                       |
  |                                                                       |
  | Licensed under the GNU General Public License version 3 or            |
  | any later version with exceptions for skins & plugins.                |
@@ -21,7 +21,7 @@
 
 
 /**
- * Class to create HTML page output using a skin template
+ * Class to create an empty HTML page with some default styles
  *
  * @package    Core
  * @subpackage View
@@ -31,6 +31,18 @@
     public function write($contents = '')
     {
         self::reset();
+
+        // load embed.css from skin folder (if exists)
+        if ($embed_css = $this->get_skin_file('/embed.css')) {
+            $this->include_css($embed_css);
+        }
+        else {  // set default styles for warning blocks inside the attachment part frame
+            $this->add_header(html::tag('style', array('type' => 'text/css'),
+                ".rcmail-inline-message { font-family: sans-serif; border:2px solid #ffdf0e; background:#fef893; padding:0.6em 1em; margin-bottom:0.6em }\n" .
+                ".rcmail-inline-buttons { margin-bottom:0 }"
+            ));
+        }
+
         parent::write($contents);
     }
 }
\ No newline at end of file
diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
index cd5f4dddc6..f753bf8 100644
--- a/program/include/rcmail_output_html.php
+++ b/program/include/rcmail_output_html.php
@@ -164,6 +164,7 @@
         }
 
         $this->config->set('skin_path', $skin_path);
+        $this->base_path = $skin_path;
 
         // register skin path(s)
         $this->skin_paths = array();
diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index 6cda4e8..fddb40a 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -36,10 +36,6 @@
 ob_end_clean();
 
 
-// define global style for warning blocks inside the attachment part frame
-// TODO: get styles for this from skin (but we don't have a skin template here...)
-$warning_css_style = 'border:2px solid #ffdf0e; background:#fef893; padding:0.6em 1em';
-
 // similar code as in program/steps/mail/show.inc
 if (!empty($_GET['_uid'])) {
   $RCMAIL->config->set('prefer_html', true);
@@ -158,13 +154,13 @@
       // show warning if validity checks failed
       if (!$valid) {
         $OUTPUT = new rcmail_html_page();
-        $OUTPUT->write(html::tag('html', null, html::tag('body', array('style' => 'font-family:sans-serif; margin:1em'),
-          html::div(array('class' => 'warning', 'style' => $warning_css_style),
+        $OUTPUT->write(html::tag('html', null, html::tag('body', 'embed',
+          html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'),
             rcube_label(array(
               'name' => 'attachmentvalidationerror',
               'vars' => array('expected' => "$mimetype (.$file_extension)", 'detected' => "$real_mimetype (.$extensions[0])")
             )) .
-            html::p(array('class' => 'buttons', 'style' => 'margin-bottom:0'),
+            html::p(array('class' => 'rcmail-inline-buttons'),
               html::tag('button',
                 array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"),
                 rcube_label('showanyway')))
@@ -232,7 +228,7 @@
             $body_start = strpos($out, '>', $body_pos) + 1;
           }
           $out = substr($out, 0, $body_start) .
-            html::div(array('class' => 'warning', 'style' => $warning_css_style),
+            html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'),
               Q(rcube_label('blockedimages')) . '&nbsp;' .
               html::tag('button',
                 array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_safe' => 1))) . "'"),
diff --git a/skins/larry/embed.css b/skins/larry/embed.css
new file mode 100644
index 0000000..8c4e95d
--- /dev/null
+++ b/skins/larry/embed.css
@@ -0,0 +1,34 @@
+/**
+ * Roundcube webmail "embedded" stylesheets
+ *
+ * Copyright (c) 2012, The Roundcube Dev Team
+ *
+ * The contents are subject to the Creative Commons Attribution-ShareAlike
+ * License. It is allowed to copy, distribute, transmit and to adapt the work
+ * by keeping credits to the original autors in the README file.
+ * See http://creativecommons.org/licenses/by-sa/3.0/ for details.
+ */
+
+.rcmail-inline-message {
+	font-family: sans-serif;
+	font-size: 14px;
+	color: #333;
+	border: 1px solid #ffdf0e;
+	background-color: #fef893;
+	padding: 0.6em 1em;
+	margin-bottom: 0.8em;
+}
+
+.rcmail-inline-message > button {
+	margin-left: 1em;
+	vertical-align: baseline;
+}
+
+.rcmail-inline-message em {
+	font-size: 90%;
+	color: #666;
+}
+
+.rcmail-inline-buttons {
+	margin-bottom: 0;
+}

--
Gitblit v1.9.1