Skip to content
This repository
Browse code

Added a knowledge base.

  • Loading branch information...
commit d357966c9b0fdef308570112800d04f606174660 1 parent 7c0500a
Michael Aufreiter authored June 05, 2012
124  _includes/styles/style.css
@@ -88,10 +88,11 @@ body.post #header {
88 88
 }
89 89
 
90 90
 #header .navigation {
91  
-  width: 900px;
  91
+  width: 960px;
92 92
   margin: 0 auto;
93 93
   overflow: auto;
94 94
   font-size: 11px;
  95
+  position: relative;
95 96
   text-transform: uppercase;
96 97
   font-weight: bold;
97 98
   line-height: 30px;
@@ -154,11 +155,15 @@ body.post #header {
154 155
 #header .user-status {
155 156
   position: absolute;
156 157
   top: 0px;
157  
-  right: 50px;
  158
+  right: 0px;
158 159
   height: 60px;
159 160
   line-height: 30px;
160 161
   color: #888;
161 162
   font-size: 16px;
  163
+  padding: 0;
  164
+  margin: 0;
  165
+  text-transform: none;
  166
+  font-weight: normal;
162 167
 }
163 168
 
164 169
 #header .user-status img {
@@ -188,7 +193,6 @@ body.post #header {
188 193
 }
189 194
  
190 195
 #main {
191  
-  /*margin-top: 60px;*/
192 196
   padding-top: 60px;
193 197
   overflow:auto;
194 198
   padding-bottom: 60px; /* must be same height as the footer */
@@ -207,14 +211,18 @@ body.post #header {
207 211
 vertical margins (top and bottom) to add spacing, else those margins get added to total height 
208 212
 and your footer gets pushed down a bit more, creating vertical scroll bars in the browser */
209 213
 
210  
-#container { min-height: 100%; }
  214
+#container { 
  215
+  min-height: 100%;
  216
+  margin: 0 auto;
  217
+}
211 218
 
212 219
 #footer {
213 220
   position: relative;
214 221
   margin-top: -60px; /* negative value of footer height */
215 222
   height: 60px;
216 223
   font-size: 16px;
217  
-  padding-left: 30px;
  224
+  
  225
+
218 226
   line-height: 60px;
219 227
   background: #e0e7eb;
220 228
   border-top: 1px solid #c3ccd0;
@@ -222,6 +230,11 @@ and your footer gets pushed down a bit more, creating vertical scroll bars in th
222 230
   clear:both;
223 231
 }
224 232
 
  233
+#footer .footer-content {
  234
+  width: 960px;
  235
+  margin: 0 auto;
  236
+}
  237
+
225 238
 /*Opera Fix*/
226 239
 body:before {/* thanks to Maleika (Kohoutec)*/
227 240
   content:"";
@@ -299,7 +312,6 @@ body.start {
299 312
 #start .owner {
300 313
   font-family: "Menlo", monospace;
301 314
   font-size: 17px;
302  
-  margin-left: 30px;
303 315
   padding-top: 30px;
304 316
   padding-bottom: 0px;
305 317
   padding-left: 30px;
@@ -310,11 +322,13 @@ body.start {
310 322
 
311 323
 #start {
312 324
   padding-bottom: 20px;
  325
+  width: 960px;
  326
+  margin: 0 auto;
313 327
 }
314 328
 
315 329
 .repos {
316 330
   overflow: auto;
317  
-  padding: 10px;
  331
+  padding: 10px 0;
318 332
 }
319 333
 
320 334
 .repos > a {
@@ -338,10 +352,10 @@ body.start {
338 352
   padding: 10px;
339 353
   font-size: 16px;
340 354
   position: relative;
341  
-  margin-left: 15px;
  355
+  margin-right: 15px;
342 356
   margin-top: 15px;
343  
-  width: 180px;
344  
-  height: 180px;
  357
+  width: 177px;
  358
+  height: 177px;
345 359
   color: #444;
346 360
   display: block;
347 361
   float: left;
@@ -508,9 +522,12 @@ ul.site li a {
508 522
 ---------------------------------------------*/
509 523
 
510 524
 #posts {
511  
-  padding: 30px;
  525
+  padding: 30px 0;
  526
+  width: 960px;
  527
+  margin: 0 auto;
512 528
 }
513 529
 
  530
+
514 531
 #publish_status {
515 532
   position: relative;
516 533
   height: 50px;
@@ -638,7 +655,7 @@ ul.site li a {
638 655
 }
639 656
 
640 657
 .document-menu-content {
641  
-  width: 900px;
  658
+  width: 960px;
642 659
   margin: 0 auto;
643 660
   color: #E7EEF2;
644 661
   font-weight: bold;
@@ -856,7 +873,7 @@ ul.site li a {
856 873
 
857 874
 .document .metadata-content {
858 875
   padding: 20px 0px;
859  
-  width: 900px;
  876
+  width: 960px;
860 877
   margin: 0 auto;
861 878
 }
862 879
 
@@ -898,7 +915,7 @@ ul.site li a {
898 915
   overflow:hidden;
899 916
 }
900 917
 
901  
-.document .surface.preview img {
  918
+.post-content img {
902 919
   max-width: 100%;
903 920
 }
904 921
 
@@ -918,7 +935,7 @@ ul.site li a {
918 935
 
919 936
 .document .content-preview, .document .content {
920 937
   padding: 20px 0px;
921  
-  width: 900px;
  938
+  width: 960px;
922 939
   margin: 0 auto;
923 940
 }
924 941
 
@@ -926,13 +943,22 @@ ul.site li a {
926 943
 
927 944
 }
928 945
 
929  
-.document .post-content{
  946
+.post-content {
930 947
   background: #fff;
931 948
   padding: 100px;
932 949
   font-family: 'Palatino Linotype', 'Adobe Garamond Pro', "Times New Roman", serif;
933 950
   font-weight: 400;
934 951
   font-size: 17px;
935 952
   line-height: 1.3em;
  953
+  border: 1px solid #C3CCD0;
  954
+  box-shadow: 0 1px 0 rgba(255, 255, 255, 0),0 0 10px rgba(0, 0, 0, 0.1);
  955
+}
  956
+
  957
+.post-content .title {
  958
+  font-size: 50px;
  959
+  font-weight: bold;
  960
+  text-align: center;
  961
+  padding-bottom: 60px;
936 962
 }
937 963
 
938 964
 .content-preview {
@@ -940,8 +966,74 @@ ul.site li a {
940 966
 }
941 967
 
942 968
 /* ------------------------------------------
  969
+  About
  970
+---------------------------------------------*/
  971
+
  972
+.about {
  973
+  width: 960px;
  974
+  margin: 30px auto;
  975
+  background: white;
  976
+}
  977
+
  978
+/* ------------------------------------------
  979
+  Logbook
  980
+---------------------------------------------*/
  981
+
  982
+.help {
  983
+  width: 960px;
  984
+  margin: 30px auto;
  985
+}
  986
+
  987
+.help .articles {
  988
+  overflow: auto;
  989
+}
  990
+
  991
+.help .articles .article {
  992
+  
  993
+  font-family: "Menlo", monospace;
  994
+  overflow: hidden;
  995
+  box-shadow: 0 1px 0 rgba(255, 255, 255, 0),0 0 10px rgba(0, 0, 0, 0.1);
  996
+
  997
+  /*background: rgba(255,255,255, 0.6);*/
  998
+  background: #E0E7EB;
  999
+  
  1000
+  -moz-transition: background 200ms linear;
  1001
+  -o-transition: background 200ms linear;
  1002
+  -webkit-transition: background 200ms linear;
  1003
+  transition: background 200ms linear;
  1004
+
  1005
+  -moz-border-radius: 3px;
  1006
+  -webkit-border-radius: 3px;
  1007
+  border-radius: 3px;
  1008
+
  1009
+  text-align: center;
  1010
+  padding: 10px;
  1011
+  font-size: 16px;
  1012
+  position: relative;
  1013
+  margin-right: 15px;
  1014
+  margin-top: 15px;
  1015
+  width: 177px;
  1016
+  height: 177px;
  1017
+  color: #444;
  1018
+  display: block;
  1019
+  float: left;
  1020
+  border: 1px solid #c3ccd0;
  1021
+}
  1022
+
  1023
+.help .articles .article:hover {
  1024
+  background: #f0f5f7;
  1025
+}
  1026
+
  1027
+
  1028
+.help-article {
  1029
+  width: 960px;
  1030
+  margin: 30px auto;
  1031
+}
  1032
+
  1033
+/* ------------------------------------------
943 1034
   Notifications
944 1035
 ---------------------------------------------*/
  1036
+
945 1037
 #notification .notification{
946 1038
   text-align: center;
947 1039
   width: 300px;
16  _includes/templates/header._
... ...
@@ -1,4 +1,4 @@
1  
-<a href='{{site.baseurl}}' class='title'><span>Poole.</span></a>
  1
+<!-- <a href='{{site.baseurl}}' class='title'><span>Poole.</span></a> -->
2 2
     
3 3
 <div class="navigation">
4 4
   <!--Github account and links-->
@@ -30,10 +30,12 @@
30 30
       </div>
31 31
       <% } %>
32 32
   <% } %>
  33
+
  34
+  <% if (window.authenticated) { %>
  35
+    <div class='user-status'>
  36
+      <img width="30" src="<%= $.cookie("avatar") %>"/>
  37
+      <%= app.username %> <a class="logout" href="#">Logout</a>
  38
+    </div>  
  39
+  <% } %>
33 40
 </div>
34  
-<% if (window.authenticated) { %>
35  
-  <div class='user-status'>
36  
-    <img width="30" src="<%= $.cookie("avatar") %>"/>
37  
-    <%= app.username %> <a class="logout" href="#">Logout</a>
38  
-  </div>  
39  
-<% } %>
  41
+
7  _includes/views/application.js
@@ -59,9 +59,16 @@ views.Application = Backbone.View.extend({
59 59
     $(view.el).appendTo(this.$('#main'));
60 60
   },
61 61
 
  62
+
  63
+
62 64
   // Main Views
63 65
   // ----------
64 66
 
  67
+  static: function() {
  68
+    this.header.render();
  69
+    // No-op ;-)
  70
+  },
  71
+
65 72
   posts: function (user, repo, branch, path) {
66 73
     loadSite(user, repo, branch, path, _.bind(function (err, data) {
67 74
       if (err) return this.notify('error', 'Seems like the chosen repository is not a valid Jekyll site.');
2  _includes/views/header.js
@@ -9,7 +9,7 @@ views.Header = Backbone.View.extend({
9 9
 
10 10
   _logout: function() {
11 11
     logout();
12  
-    window.location.href = '';
  12
+    window.location.href = '{{site.root_dir}}';
13 13
   },
14 14
 
15 15
   initialize: function(options) {
8  _layouts/about.html
... ...
@@ -0,0 +1,8 @@
  1
+---
  2
+layout: default
  3
+---
  4
+
  5
+<div class="about post-content">
  6
+  <div class="title">{{page.title}}</div>
  7
+  {{ content }}
  8
+</div>
12  _layouts/article.html
... ...
@@ -0,0 +1,12 @@
  1
+---
  2
+layout: default
  3
+---
  4
+
  5
+<div class="help-article">
  6
+  <h1>{{ page.title }}</h1>
  7
+  <p class="meta"> {{ page.date | date: "%B %d, %Y" }} </p>
  8
+
  9
+  <div id="post">
  10
+  {{ content }}
  11
+  </div>
  12
+</div>
28  _layouts/default.html
... ...
@@ -0,0 +1,28 @@
  1
+---
  2
+---
  3
+<!DOCTYPE html>
  4
+<html>
  5
+<head>
  6
+  <meta charset='UTF-8'/>
  7
+  <title>Poole &middot; Serving Jekyll faithfully</title>
  8
+  <link rel='shortcut icon' href='{{site.root_dir}}images/favicon.ico' type='image/x-icon' />
  9
+  <link rel='stylesheet' href='{{site.root_dir}}app.css'>
  10
+  {% include templates.html %}
  11
+  <script src='{{site.root_dir}}boot.js'></script>
  12
+</head>
  13
+<body>
  14
+  <div id='container'>
  15
+    <div id='main'>{{content}}</div>
  16
+  </div>
  17
+
  18
+  <div id='footer'>
  19
+    <div class="footer-content">
  20
+      <a href="{{site.root_dir}}help.html">Help</a> | <a href="{{site.root_dir}}about.html">About</a>
  21
+
  22
+      <div class="fr">
  23
+        Made by <a href="http://developmentseed.org">Development Seed</a>, Sourcecode on <a href="http://github.com/developmentseed/poole">GitHub</a>
  24
+      </div>
  25
+    </div>
  26
+  </div>
  27
+</body>
  28
+</html>
10  _layouts/help.html
... ...
@@ -0,0 +1,10 @@
  1
+---
  2
+layout: default
  3
+---
  4
+
  5
+<div class="help post-content">
  6
+  <div class="title">{{page.title}}</div>
  7
+  <p class="meta"> {{ page.date | date: "%B %d, %Y" }} </p>
  8
+
  9
+  {{ content }}
  10
+</div>
18  _layouts/post.html
... ...
@@ -0,0 +1,18 @@
  1
+---
  2
+layout: default
  3
+---
  4
+<h1>{{ page.title }}</h1>
  5
+<p class="meta"> {{ page.date | date: "%B %d, %Y" }} </p>
  6
+
  7
+<div id="post">
  8
+{{ content }}
  9
+</div>
  10
+
  11
+<div id="related">
  12
+  <h3>Related Posts</h3>
  13
+  <ul class="posts">
  14
+    {% for post in site.related_posts limit:3 %}
  15
+    <li><span>{{ post.date | date_to_string }} &raquo;</span> <a href="{{ post.url }}">{{ post.title }}</a></li>
  16
+    {% endfor %}
  17
+  </ul>
  18
+</div>
38  _posts/0100-01-01-about.md
Source Rendered
... ...
@@ -0,0 +1,38 @@
  1
+---
  2
+layout: about
  3
+title: Poole
  4
+---
  5
+
  6
+
  7
+**Poole** is a web-interface dedicated for managing dynamic content of Jekyll-based websites. Users of Jekyll can create, edit and delete files that live within the _posts directory. Poole can be considered a smart way of publishing for hackers and humans, solving the issue that Jekyll is has not yet been suitable for less-technical content editors.
  8
+
  9
+While developers can still enjoy all freedom the Jekyll framework provides, editors can easily access, edit and publish content using a visual interface.
  10
+
  11
+
  12
+Separation of Concerns
  13
+===============
  14
+
  15
+Ordinary Content Management Systems (Wordpress et. al) are trying to solve many things at once. They allowed users to maintain content, such as articles plus styling them and so on. We believe that concerns should be separated.
  16
+
  17
+
  18
+Website Development
  19
+---------------
  20
+
  21
+Website developers prefer to have full freedom about how to structure their site. They know how to deal with HTML and CSS. And most of them are familiar with template languages. We've found that Jekyll is a perfect foundation for building a website, from a developer point of view. There's nothing we want to add here.
  22
+
  23
+
  24
+Content Management
  25
+---------------
  26
+
  27
+This is where Jekyll has it's weaknesses. Content Editors often do not have a technical background, and they don't have to. With Poole, non-technical people can use a visual interface for maintaining the contents of a website (built with Jekyll).
  28
+
  29
+
  30
+**Content not layout**
  31
+
  32
+Editors should not be concerned with styling tasks. They should be able to focus on structured, content-oriented writing. That's why we removed all styling capabilities from the interface.
  33
+
  34
+
  35
+Limits
  36
+===============
  37
+
  38
+Of course there are limits with this approach. Poole goes with Markdown and YAML, thus only allows content to be authored in plaintext. With Substance I'm working on a larger scale solution of web-based content composition. In the future we may be able to offer WYSIWYG composition, But without the drawbacks of an unpredictable output. At the end of the day, building websites should be easier. And our mission is to make it happen.
16  _posts/logbook/2012-06-14-jekyll.md
Source Rendered
... ...
@@ -0,0 +1,16 @@
  1
+---
  2
+layout: help
  3
+title: Things you should know about Jekyll
  4
+descr: A collection of not so obvious Jekyll facts
  5
+categories:
  6
+- help
  7
+---
  8
+
  9
+
  10
+Insert Content here.
  11
+
  12
+
  13
+Edit with Poole
  14
+===============
  15
+
  16
+Of course there are limits with this approach. With Substance I'm working on a larger scale solution of web-based content composition. For now Poole goes with Markdown and YAML, but this may change in the future and may allow What you see is what you get composition. But without the drawbacks of an unpredictable output. Building websites should be fun again. And we're trying to help
46  _posts/logbook/2012-06-14-metadata.md
Source Rendered
... ...
@@ -0,0 +1,46 @@
  1
+---
  2
+layout: help
  3
+title: Metadata
  4
+descr: How to deal with metadata 
  5
+categories:
  6
+- help
  7
+---
  8
+
  9
+Any files that contain a "YAML":http://yaml.org/ front matter block will be processed by Jekyll as special files. The front matter must be the first thing in the file and takes the form of:
  10
+
  11
+    ---
  12
+    layout: post
  13
+    title: Blogging Like a Hacker
  14
+    ---
  15
+
  16
+
  17
+Between the triple-dashed lines, you can set predefined variables (see below for a reference) or custom data of your own.
  18
+
  19
+*IMPORTANT! (Especially for Windows users)*
  20
+
  21
+When you use <code>UTF-8</code> encoding for your file, make sure that no <code>BOM</code> header chars exist in your file or everything will blow up!
  22
+
  23
+Predefined Global Variables
  24
+------------------
  25
+
  26
+| Variable | Description |
  27
+| @layout@ | If set, this specifies the layout file to use. Use the layout file name without file extension. Layout files must be placed in the @_layouts@ directory. |
  28
+| @permalink@ | If you need your processed URLs to be something other than the default /year/month/day/title.html then you can set this variable and it will be used as the final URL. |
  29
+| @published@ | Set to false if you don't want a post to show up when the site is generated. |
  30
+| @category@/@categories@ | Instead of placing posts inside of folders, you can specify one or more categories that the post belongs to. When the site is generated the post will act as though it had been set with these categories normally.<br />Categories (plural key) can be specified as a "YAML list":http://en.wikipedia.org/wiki/YAML#Lists or a space-separated string. |
  31
+| @tags@ | Similar to categories, one or multiple tags can be added to a post. Also like categories, tags can be specified as a YAML list or a space-separated string. |
  32
+
  33
+Custom Variables
  34
+------------------
  35
+
  36
+Any variables in the front matter that are not predefined are mixed into the data that is sent to the Liquid templating engine during the conversion. For instance, if you set a title, you can use that in your layout to set the page title:
  37
+
  38
+@<title>{{ page.title }}</title>@
  39
+
  40
+Predefined Variables for Post Front-Matter
  41
+------------------
  42
+
  43
+These are available out-of-the-box to be used in the front-matter for a post.
  44
+
  45
+| Variable | Description |
  46
+| @date@ | A date here overrides the date from the name of the post. This can be used to ensure correct sorting of posts. |
65  _posts/logbook/2012-06-15-getting-started.md
Source Rendered
... ...
@@ -0,0 +1,65 @@
  1
+---
  2
+layout: help
  3
+title: Getting Started
  4
+descr: A brief introduction on how to use Poole, what it can do for you and what not.
  5
+categories:
  6
+- help
  7
+---
  8
+
  9
+Here's how to get started with Poole.
  10
+
  11
+
  12
+Login with your Github User
  13
+-----------------
  14
+
  15
+It was challenging, but Poole supports OAuth. I think it's very important to use OAuth over Basic Authentication, since Github data can be very sensible and no one wants to risk getting his password sniffed.
  16
+
  17
+![Start](http://f.cl.ly/items/0t0A170b2Y093F2u1w45/Screen%20Shot%202012-05-23%20at%205.48.45%20PM.png)
  18
+
  19
+
  20
+Browse Repositories
  21
+-----------------
  22
+
  23
+This is the landing page, it gives you all the repositories you have access to. If a Jekyll site has multiple branches, you are prompted to select your desired branch, otherwise, you jump into the repo directly.
  24
+
  25
+![Repositories](http://cl.ly/3p0v3b1q011w123b1O2c/Screen%20Shot%202012-05-23%20at%205.11.42%20PM.png)
  26
+
  27
+
  28
+Browsing Posts
  29
+-----------------
  30
+
  31
+Once you have selected a repository, you can browse your posts and sub-folders in a traditional file-browser-ish manner. You can create new files here as well, which immediately opens an empty document for you, which you can save after populating it with some text.
  32
+
  33
+![Posts](http://f.cl.ly/items/0e0D1s292j422S0N3723/Screen%20Shot%202012-05-23%20at%204.58.48%20PM.png)
  34
+
  35
+
  36
+Edit Posts
  37
+-----------------
  38
+
  39
+We use CodeMirror, a great software that makes browser-based editing a pleasure (the first time). Compared to a regular textarea, which has an annoying inline scoller this is a huge step forward I think.
  40
+
  41
+![Edit](http://f.cl.ly/items/3E0Q2K3V0M3z1O2j1r1H/Screen%20Shot%202012-05-22%20at%201.53.28%20AM.png)
  42
+
  43
+
  44
+Preview
  45
+-----------------
  46
+
  47
+You can instantly preview your writing by either clicking the preview icon at the document menu bar, or use that fance keyboard combo ctrl+shift+p to toggle Preview on and off.
  48
+
  49
+![Preview](http://f.cl.ly/items/1t2I3s2o0s3D2u1E270x/Screen%20Shot%202012-05-23%20at%205.03.29%20PM.png)
  50
+
  51
+
  52
+Publish
  53
+-----------------
  54
+
  55
+Once you are ready, you can easily publish your article, which lets it show up on the actual webpage/blog.
  56
+
  57
+![Publish](http://f.cl.ly/items/302m2R2l0x090h0k0s21/Screen%20Shot%202012-05-23%20at%205.03.43%20PM.png)
  58
+
  59
+
  60
+Metadata
  61
+-----------------
  62
+
  63
+Take full control about your post, and edit Metadata aka the YAML frontmatter. No limitations.
  64
+
  65
+![Repositories](http://f.cl.ly/items/1v0a3E0C1Z3z2s3N473v/Screen%20Shot%202012-05-23%20at%205.04.01%20PM.png)
14  boot.js
@@ -57,18 +57,22 @@ function confirmExit() {
57 57
   return true;
58 58
 }
59 59
 
  60
+
  61
+
60 62
 (function(config, models, views, routers, utils, templates) {
61 63
   $(function() {
  64
+
62 65
     loadApplication(function(err, data) {
63 66
       // Start the engines
64 67
       window.app.instance = new views.Application({ el: '#container', model: data }).render();
65 68
 
66  
-      // Initialize router
67  
-      window.router = new routers.Application({});
68  
-
69  
-      // Start responding to routes
70  
-      Backbone.history.start();
  69
+      if (!window.location.href.match(/\.html/)) {
  70
+        // Initialize router
  71
+        window.router = new routers.Application({});
71 72
 
  73
+        // Start responding to routes
  74
+        Backbone.history.start();        
  75
+      }
72 76
     });
73 77
   });
74 78
 }).apply(this, window.args);
24  help.html
... ...
@@ -0,0 +1,24 @@
  1
+---
  2
+layout: default
  3
+---
  4
+
  5
+<div class="help">
  6
+  <h1>Help</h1>
  7
+
  8
+  <div class='articles'>
  9
+    {% for item in site.categories.help limit:40 offset:0 %}
  10
+      <a class="article" href="{{base}}{{item.url}}">
  11
+        {% if item.image %}
  12
+          <img src="{{item.image}}">
  13
+        {% endif %}
  14
+        <div class="title">
  15
+          {{item.title}}
  16
+        </div>
  17
+        <div class="descr">
  18
+          {{item.subtitle}}
  19
+        </div>
  20
+      </a>
  21
+    {% endfor %}
  22
+  </div>
  23
+</div>
  24
+
20  index.html
... ...
@@ -1,22 +1,4 @@
1 1
 ---
  2
+layout: default
2 3
 ---
3  
-<!DOCTYPE html>
4  
-<html>
5  
-<head>
6  
-  <meta charset='UTF-8'/>
7  
-  <title>Poole &middot; Serving Jekyll faithfully</title>
8  
-  <link rel='shortcut icon' href='images/favicon.ico' type='image/x-icon' />
9  
-  <link rel='stylesheet' href='app.css'>
10  
-  {% include templates.html %}
11  
-  <script src='boot.js'></script>
12  
-</head>
13  
-<body>
14  
-  <div id='container'>
15  
-    <div id='main'></div>
16  
-  </div>
17 4
 
18  
-  <div id='footer'>
19  
-    Made by <a href="http://developmentseed.org">Development Seed</a>, Sourcecode on <a href="http://github.com/developmentseed/poole">GitHub</a>.
20  
-  </div>
21  
-</body>
22  
-</html>

0 notes on commit d357966

Please sign in to comment.
Something went wrong with that request. Please try again.