Andrew Lewman commited on 2014-09-27 04:56:58
              Zeige 2 geänderte Dateien mit 181 Einfügungen und 28 Löschungen.
            
| ... | ... | 
                      @@ -1178,6 +1178,69 @@ small {
                     | 
                  
| 1178 | 1178 | 
                        line-height: 13px;  | 
                    
| 1179 | 1179 | 
                        }  | 
                    
| 1180 | 1180 | 
                         | 
                    
| 1181 | 
                        +/* BLOG WIDGET ----------*/  | 
                    |
| 1182 | 
                        +  | 
                    |
| 1183 | 
                        +div.blogRow, div.blogFirstRow {
                       | 
                    |
| 1184 | 
                        + height: 40px;  | 
                    |
| 1185 | 
                        + padding: 3px 10px;  | 
                    |
| 1186 | 
                        + margin: 0 0;  | 
                    |
| 1187 | 
                        +}  | 
                    |
| 1188 | 
                        +  | 
                    |
| 1189 | 
                        +div.blogLastRow {
                       | 
                    |
| 1190 | 
                        + height: 20px;  | 
                    |
| 1191 | 
                        + text-align: center;  | 
                    |
| 1192 | 
                        + }  | 
                    |
| 1193 | 
                        +  | 
                    |
| 1194 | 
                        +div.blogFirstRow {
                       | 
                    |
| 1195 | 
                        + height: 22px;  | 
                    |
| 1196 | 
                        + background: url(../images/table-head.jpg) left top repeat-x #885ca4;  | 
                    |
| 1197 | 
                        + }  | 
                    |
| 1198 | 
                        +  | 
                    |
| 1199 | 
                        +.blogRow:hover {
                       | 
                    |
| 1200 | 
                        + background: #f6ffd5;  | 
                    |
| 1201 | 
                        + }  | 
                    |
| 1202 | 
                        +  | 
                    |
| 1203 | 
                        +div.blogRow1, div.blogRow3 {
                       | 
                    |
| 1204 | 
                        + background: #eee8f1;  | 
                    |
| 1205 | 
                        +}  | 
                    |
| 1206 | 
                        +  | 
                    |
| 1207 | 
                        +.blogFeed a {
                       | 
                    |
| 1208 | 
                        +text-decoration: none;  | 
                    |
| 1209 | 
                        +}  | 
                    |
| 1210 | 
                        +  | 
                    |
| 1211 | 
                        +.blogFeed p {
                       | 
                    |
| 1212 | 
                        +margin: 0;  | 
                    |
| 1213 | 
                        +font-size: 12px;  | 
                    |
| 1214 | 
                        +}  | 
                    |
| 1215 | 
                        +  | 
                    |
| 1216 | 
                        +p.blogTitle {
                       | 
                    |
| 1217 | 
                        + font-weight: bold;  | 
                    |
| 1218 | 
                        + text-decoration: underline;  | 
                    |
| 1219 | 
                        + }  | 
                    |
| 1220 | 
                        +  | 
                    |
| 1221 | 
                        +p.blogAuthor {
                       | 
                    |
| 1222 | 
                        + color: #000000;  | 
                    |
| 1223 | 
                        + text-align: right;  | 
                    |
| 1224 | 
                        + margin-top: -20px;  | 
                    |
| 1225 | 
                        + }  | 
                    |
| 1226 | 
                        +  | 
                    |
| 1227 | 
                        +p.blogAuthor em{
                       | 
                    |
| 1228 | 
                        + color: #4e6a20;  | 
                    |
| 1229 | 
                        + text-align: right;  | 
                    |
| 1230 | 
                        + margin-top: -20px;  | 
                    |
| 1231 | 
                        + }  | 
                    |
| 1232 | 
                        +  | 
                    |
| 1233 | 
                        +p.blogDate {
                       | 
                    |
| 1234 | 
                        + color: #000000;  | 
                    |
| 1235 | 
                        + }  | 
                    |
| 1236 | 
                        +  | 
                    |
| 1237 | 
                        +.blogFeed h2 {
                       | 
                    |
| 1238 | 
                        + font-size: 1.467em;  | 
                    |
| 1239 | 
                        + margin: 0;  | 
                    |
| 1240 | 
                        + line-height: 23px;  | 
                    |
| 1241 | 
                        + color: #f6f6ed;  | 
                    |
| 1242 | 
                        + }  | 
                    |
| 1243 | 
                        +  | 
                    |
| 1181 | 1244 | 
                        /*  | 
                    
| 1182 | 1245 | 
                        Project page  | 
                    
| 1183 | 1246 | 
                        */  | 
                    
| ... | ... | 
                      @@ -153,35 +153,125 @@  | 
                  
| 153 | 153 | 
                        </div>  | 
                    
| 154 | 154 | 
                        <!-- END MAINCOL -->  | 
                    
| 155 | 155 | 
                        <div id="sidecol">  | 
                    
| 156 | 
                        - <div id="home-announcements" class="clearfix">  | 
                    |
| 157 | 
                        - <h2>Announcements</h2>  | 
                    |
| 158 | 
                        - <table>  | 
                    |
| 159 | 
                        - <tr>  | 
                    |
| 160 | 
                        - <td>  | 
                    |
| 161 | 
                        - <div class="calendar"><span class="month">Sep</span><br><span class="day">11</span></div>  | 
                    |
| 162 | 
                        - <p>Tor 0.2.5.7-rc is <a href="https://blog.torproject.org/blog/tor-0257-rc-out">out</a></p>  | 
                    |
| 163 | 
                        - </td>  | 
                    |
| 164 | 
                        - </tr>  | 
                    |
| 165 | 
                        - <tr>  | 
                    |
| 166 | 
                        - <td>  | 
                    |
| 167 | 
                        - <div class="calendar"><span class="month">Sep</span><br><span class="day">7</span></div>  | 
                    |
| 168 | 
                        - <p><a href="https://blog.torproject.org/blog/ahmia-search-after-gsoc-development">Ahmia search</a> after GSoC development</p>  | 
                    |
| 169 | 
                        - </td>  | 
                    |
| 170 | 
                        - </tr>  | 
                    |
| 171 | 
                        - <tr>  | 
                    |
| 172 | 
                        - <td>  | 
                    |
| 173 | 
                        - <div class="calendar"><span class="month">Sep</span><br><span class="day">3</span></div>  | 
                    |
| 174 | 
                        - <p>Tor Browser 3.6.5 and 4.0-alpha-2 are <a href="https://blog.torproject.org/blog/tor-browser-365-and-40-alpha-2-are-released">released</a></p>  | 
                    |
| 175 | 
                        - </td>  | 
                    |
| 176 | 
                        - </tr>  | 
                    |
| 177 | 
                        - <tr>  | 
                    |
| 178 | 
                        - <td>  | 
                    |
| 179 | 
                        - <div class="calendar"><span class="month">Sep</span><br><span class="day">2</span></div>  | 
                    |
| 180 | 
                        - <p>Tails 1.1.1 is <a href="https://blog.torproject.org/blog/tails-111-out">out</a></p>  | 
                    |
| 181 | 
                        - </td>  | 
                    |
| 182 | 
                        - </tr>  | 
                    |
| 183 | 
                        - </table>  | 
                    |
| 156 | 
                        + <!-- BLOG WIDGET -->  | 
                    |
| 157 | 
                        +<:  | 
                    |
| 158 | 
                        + use strict;  | 
                    |
| 159 | 
                        + use warnings;  | 
                    |
| 160 | 
                        + use open ':std', ':encoding(UTF-8)';  | 
                    |
| 161 | 
                        + use LWP::Simple;  | 
                    |
| 162 | 
                        +  | 
                    |
| 163 | 
                        + # RSS feed url  | 
                    |
| 164 | 
                        + my $url = 'https://blog.torproject.org/blog/feed';  | 
                    |
| 165 | 
                        + # Number of posts to show  | 
                    |
| 166 | 
                        + my $showPosts = "5";  | 
                    |
| 167 | 
                        + # Maximum characters in post title to allow before truncating  | 
                    |
| 168 | 
                        + my $titleMaxLength = "35";  | 
                    |
| 169 | 
                        + # Maximum characters in author name to allow before truncating  | 
                    |
| 170 | 
                        + my $authorMaxLength = "15";  | 
                    |
| 171 | 
                        +  | 
                    |
| 172 | 
                        + # Retreive url  | 
                    |
| 173 | 
                        + my $data = get( $url );  | 
                    |
| 174 | 
                        +  | 
                    |
| 175 | 
                        + if ($data) # Url returned data  | 
                    |
| 176 | 
                        +  {
                       | 
                    |
| 177 | 
                        + my $check = $data;  | 
                    |
| 178 | 
                        +    $check =~ m{<rss(.*?)>}i;
                       | 
                    |
| 179 | 
                        + my $checkVal = $1;  | 
                    |
| 180 | 
                        +  | 
                    |
| 181 | 
                        + if ($checkVal) # Is an rss feed  | 
                    |
| 182 | 
                        +    {
                       | 
                    |
| 183 | 
                        + my $titleStr = $data;  | 
                    |
| 184 | 
                        + my $linkStr = $data;  | 
                    |
| 185 | 
                        + my $dateStr = $data;  | 
                    |
| 186 | 
                        + my $authorStr = $data;  | 
                    |
| 187 | 
                        +  | 
                    |
| 188 | 
                        + print "<div class='blogFeed'>  | 
                    |
| 189 | 
                        + <div class='blogFirstRow'>  | 
                    |
| 190 | 
                        + <h2>Recent Blog Posts</h2>  | 
                    |
| 191 | 
                        + </div>";  | 
                    |
| 192 | 
                        +  | 
                    |
| 193 | 
                        + # Generate posts  | 
                    |
| 194 | 
                        + for my $i (0..$showPosts)  | 
                    |
| 195 | 
                        +      {  
                       | 
                    |
| 196 | 
                        +  | 
                    |
| 197 | 
                        + # Parse title  | 
                    |
| 198 | 
                        +	$titleStr =~ m{<title>(.*?)</title>}g;
                       | 
                    |
| 199 | 
                        + my $titleVal = $1;  | 
                    |
| 200 | 
                        + my $titleLength = length($titleVal);  | 
                    |
| 201 | 
                        + my $title = $titleVal;  | 
                    |
| 202 | 
                        +  | 
                    |
| 203 | 
                        + # Check title length and trim if necessary  | 
                    |
| 204 | 
                        + my $titleTrim = $title;  | 
                    |
| 205 | 
                        + if ($titleLength > $titleMaxLength)  | 
                    |
| 206 | 
                        +      	{
                       | 
                    |
| 207 | 
                        + my $trimLength = $titleMaxLength - 3;  | 
                    |
| 208 | 
                        + my $titleTxt = substr($title, 0, $trimLength);  | 
                    |
| 209 | 
                        + $titleTrim = "$titleTxt...";  | 
                    |
| 210 | 
                        + }  | 
                    |
| 211 | 
                        +  | 
                    |
| 212 | 
                        + # Parse link  | 
                    |
| 213 | 
                        +	$linkStr =~ m{<link>(.*?)</link>}g;
                       | 
                    |
| 214 | 
                        + my $link = $1;  | 
                    |
| 215 | 
                        +  | 
                    |
| 216 | 
                        + if ($i != 0)  | 
                    |
| 217 | 
                        +        {
                       | 
                    |
| 218 | 
                        + # Parse date  | 
                    |
| 219 | 
                        +	  $dateStr =~ m{<pubDate>(.*?)</pubDate>}g;
                       | 
                    |
| 220 | 
                        + my $date = $1;  | 
                    |
| 221 | 
                        +  | 
                    |
| 222 | 
                        + # Trim date  | 
                    |
| 223 | 
                        + my $dateTrim = substr($date, 0, -15);  | 
                    |
| 224 | 
                        +  | 
                    |
| 225 | 
                        + # Parse author  | 
                    |
| 226 | 
                        +	  $authorStr =~ m{<dc:creator>(.*?)\s*</dc:creator>}g;
                       | 
                    |
| 227 | 
                        + my $author = $1;  | 
                    |
| 228 | 
                        +  | 
                    |
| 229 | 
                        + # Check author length and trim if necessary  | 
                    |
| 230 | 
                        + my $authorLength = length($author);  | 
                    |
| 231 | 
                        + my $authorTrim = $author;  | 
                    |
| 232 | 
                        + if ($authorLength > $authorMaxLength)  | 
                    |
| 233 | 
                        +	  {
                       | 
                    |
| 234 | 
                        + my $authorTrimLength = $authorMaxLength - 3;  | 
                    |
| 235 | 
                        + my $authorTxt = substr($author, 0, $authorTrimLength);  | 
                    |
| 236 | 
                        + $authorTrim = "$authorTxt...";  | 
                    |
| 237 | 
                        + }  | 
                    |
| 238 | 
                        +  | 
                    |
| 239 | 
                        + # Begin html output  | 
                    |
| 240 | 
                        + print "<a href=\'$link\' title=\'$title\'>";  | 
                    |
| 241 | 
                        +  | 
                    |
| 242 | 
                        + # Required for alternating row colors - switch blogRow# to change order  | 
                    |
| 243 | 
                        +	  if (0 == $i % 2) {
                       | 
                    |
| 244 | 
                        + print "<div class='blogRow blogRow1'>";  | 
                    |
| 245 | 
                        +	  } else {
                       | 
                    |
| 246 | 
                        + print "<div class='blogRow blogRow0'>";  | 
                    |
| 247 | 
                        + }  | 
                    |
| 248 | 
                        +  | 
                    |
| 249 | 
                        + print "<p class='blogTitle'>$titleTrim</p>  | 
                    |
| 250 | 
                        + <p class='blogDate'>$dateTrim</p>  | 
                    |
| 251 | 
                        + <p class='blogAuthor'>Posted by: <em>$authorTrim</em></p>  | 
                    |
| 252 | 
                        + </div>  | 
                    |
| 253 | 
                        + </a>";  | 
                    |
| 254 | 
                        + }  | 
                    |
| 255 | 
                        + }  | 
                    |
| 256 | 
                        +  | 
                    |
| 257 | 
                        +    } else {	# Not an rss feed
                       | 
                    |
| 258 | 
                        + print "<div class='blogRow blogRow1'>";  | 
                    |
| 259 | 
                        + print "<br /><p class='blogDate' style=\"text-align:center;color:\#999;line-height:16px;\"><em>Recent posts are temporarily unavailable</em></p></div>";  | 
                    |
| 260 | 
                        + }  | 
                    |
| 261 | 
                        +  | 
                    |
| 262 | 
                        +  } else {	# Url did not return any data
                       | 
                    |
| 263 | 
                        + print "<div class='blogRow blogRow1'>";  | 
                    |
| 264 | 
                        + print "<br /><p class='blogDate' style=\"text-align:center;color:\#999;line-height:16px;\"><em>Recent posts are temporarily unavailable</em></p></div>";  | 
                    |
| 265 | 
                        + }  | 
                    |
| 266 | 
                        +  | 
                    |
| 267 | 
                        + print "<a href='https://blog.torproject.org' title='Tor Blog Home'>  | 
                    |
| 268 | 
                        + <div class='blogRow blogLastRow'>  | 
                    |
| 269 | 
                        + <p>View all blog posts »</p>  | 
                    |
| 184 | 270 | 
                        </div>  | 
                    
| 271 | 
                        + </a>  | 
                    |
| 272 | 
                        + </div>";  | 
                    |
| 273 | 
                        +:>  | 
                    |
| 274 | 
                        + <!-- END BLOG WIDGET -->  | 
                    |
| 185 | 275 | 
                        <div id="home-users">  | 
                    
| 186 | 276 | 
                        <h2>Who Uses Tor?</h2>  | 
                    
| 187 | 277 | 
                        <div class="fauxhead"></div>  | 
                    
| 188 | 278 |