fixes for lighttpd and php 5.4
[bdrem.git] / src / bdrem / Renderer / Html.php
1 <?php
2 /**
3  * Part of bdrem
4  *
5  * PHP version 5
6  *
7  * @category  Tools
8  * @package   Bdrem
9  * @author    Christian Weiske <cweiske@cweiske.de>
10  * @copyright 2014 Christian Weiske
11  * @license   http://www.gnu.org/licenses/agpl.html GNU AGPL v3
12  * @link      http://cweiske.de/bdrem.htm
13  */
14 namespace bdrem;
15
16 /**
17  * HTML page renderer. Renders a full HTML page.
18  *
19  * @category  Tools
20  * @package   Bdrem
21  * @author    Christian Weiske <cweiske@cweiske.de>
22  * @copyright 2014 Christian Weiske
23  * @license   http://www.gnu.org/licenses/agpl.html GNU AGPL v3
24  * @version   Release: @package_version@
25  * @link      http://cweiske.de/bdrem.htm
26  */
27 class Renderer_Html extends Renderer
28 {
29     /**
30      * HTTP content type
31      * @var string
32      */
33     protected $httpContentType = 'application/xhtml+xml; charset=utf-8';
34
35     /**
36      * Send out HTTP headers when nothing shall be outputted.
37      *
38      * @return void
39      */
40     public function handleStopOnEmpty()
41     {
42         header('HTTP/1.0 204 No Content');
43     }
44
45     /**
46      * Generate a HTML page with the given events.
47      *
48      * @param array $arEvents Events to display on the HTML page
49      *
50      * @return string HTML code
51      *
52      * @see Renderer_HtmlTable
53      */
54     public function render($arEvents)
55     {
56         $links = '';
57         if (isset($_SERVER['HTTP_HOST'])) {
58             if (!isset($_SERVER['REQUEST_SCHEME'])) {
59                 $_SERVER['REQUEST_SCHEME'] = 'http';
60             }
61             $links = '  <link rel="alternate" type="text/calendar" href="'
62                 . $_SERVER['REQUEST_SCHEME'] . '://'
63                 . $_SERVER['HTTP_HOST']
64                 . preg_replace('#\?.+$#', '', $_SERVER['REQUEST_URI'])
65                 . '?renderer=ical'
66                 . '"/>'
67                 . "\n";
68             $links .= '  <link rel="alternate" type="text/plain" href="'
69                 . $_SERVER['REQUEST_SCHEME'] . '://'
70                 . $_SERVER['HTTP_HOST']
71                 . preg_replace('#\?.+$#', '', $_SERVER['REQUEST_URI'])
72                 . '?renderer=console'
73                 . '"/>'
74                 . "\n";
75         }
76
77         $tr = new Renderer_HtmlTable();
78         $table = $tr->render($arEvents);
79         $s = <<<HTM
80 <?xml version="1.0" encoding="utf-8"?>
81 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
82  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
83 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
84  <head>
85   <title>bdrem</title>
86   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
87 $links  <style type="text/css">
88 table {
89     border: 1px solid black;
90     border-collapse: collapse;
91     margin-left: auto;
92     margin-right: auto;
93 }
94 td, th {
95     border: 1px solid grey;
96     border-left: 0px;
97     border-right: 0px;
98     padding: 0.1ex 1ex;
99 }
100
101 tr.prev td {
102     background-color: #C4DDF4;
103 }
104 tr.today td {
105     background-color: #FEDCBA;
106 }
107 tr.next td {
108     background-color: #DEFABC;
109 }
110 tr:hover td {
111     background-color: white;
112 }
113
114 .r {
115     text-align: right;
116 }
117
118 tr td.icon {
119     background-color: white;
120 }
121 tr.prev td.icon {
122     color: #00A;
123 }
124 tr.today td.icon {
125     color: black;
126     background-color: #FEDCBA;
127 }
128 tr.next td.icon {
129     color: #080;
130 }
131
132 tr.d-3 td.icon:before {
133     content: "\342\227\224"
134 }
135 tr.d-2 td.icon:before {
136     content: "\342\227\221"
137 }
138 tr.d-1 td.icon:before {
139     content: "\342\227\225"
140 }
141 tr.d0 td.icon:before {
142     content: "\342\230\205"
143 }
144 tr.d1 td.icon:before {
145     content: "\342\227\225"
146 }
147 tr.d2 td.icon:before {
148     content: "\342\227\221"
149 }
150 tr.d3 td.icon:before {
151     content: "\342\227\224"
152 }
153   </style>
154  </head>
155  <body>
156 $table
157  </body>
158 </html>
159 HTM;
160         return $s;
161     }
162 }
163 ?>