Browse code

remove Announcements in favor of rss feed integrated blog posts section.

Andrew Lewman authored on27/09/2014 04:56:58
Showing2 changed files
... ...
@@ -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>
184
-        </div>
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 &raquo;</p>
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>