Skip to content

Commit

Permalink
Minimal working frontend.
Browse files Browse the repository at this point in the history
  • Loading branch information
mojombo committed Jul 7, 2010
1 parent b770089 commit 2e49f2c
Show file tree
Hide file tree
Showing 37 changed files with 325 additions and 20 deletions.
3 changes: 3 additions & 0 deletions gollum.gemspec
Expand Up @@ -24,7 +24,10 @@ Gem::Specification.new do |s|
s.extra_rdoc_files = %w[README.md LICENSE]

s.add_dependency('grit', [">= 2.0.0", "< 3.0.0"])
s.add_dependency('github-markup', [">= 0.4.0", "< 1.0.0"])
s.add_dependency('albino', "~> 1.0.0")
s.add_dependency('sinatra', "~> 1.0.0")
s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])

s.add_development_dependency('shoulda')
s.add_development_dependency('mocha')
Expand Down
62 changes: 62 additions & 0 deletions lib/gollum/frontend/app.rb
@@ -0,0 +1,62 @@
require 'rubygems'

require 'sinatra'
require 'gollum'
require 'mustache/sinatra'

require 'gollum/frontend/views/layout'

$path = "~/dev/mojombo/gollum/test/examples/lotr.git"

module Precious
class App < Sinatra::Base
register Mustache::Sinatra

dir = File.dirname(File.expand_path(__FILE__))

# We want to serve public assets for now
set :public, "#{dir}/public"
set :static, true

set :mustache, {
# Tell mustache where the Views constant lives
:namespace => Precious,

# Mustache templates live here
:templates => "#{dir}/templates",

# Tell mustache where the views are
:views => "#{dir}/views"
}

# Sinatra error handling
configure :development, :staging do
set :raise_errors, false
set :show_exceptions, true
set :dump_errors, true
set :clean_trace, false
end

get '/' do
show_page_or_file('Home')
end

get '/*' do
show_page_or_file(params[:splat].first)
end

def show_page_or_file(name)
wiki = Gollum::Wiki.new($path)
if page = wiki.page(name)
@content = page.formatted_data
mustache :page
elsif file = wiki.file(name)
file.raw_data
else
halt 404
end
end
end
end

Precious::App.run!
93 changes: 93 additions & 0 deletions lib/gollum/frontend/public/css/global.css
@@ -0,0 +1,93 @@
h1, h2, h3, h4, h5, h6 {
color: #f90;
font-weight: bold;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

h1 {
font-size: 36pt;
}

h2 {
font-size: 32pt;
}

h3 {
font-size: 28pt;
}

h4 {
font-size: 24pt;
}

h5 {
font-size: 20pt;
}

h6 {
font-size: 16pt;
}

p {
font-family: Georgia, serif;
font-size: 14pt;
line-height: 22pt;
}

#content {
width: 60em;
margin: 0 auto;
color: #666;
}

/***********************/

.frame {
margin: 1em 0;
display: inline-block;
}

.frame img {
display: block;
}

.frame > span {
display: block;
border: 1px solid #aaa;
padding: 4px;
}

.frame span span {
display: block;
font-size: 10pt;
margin: 0;
padding: 4px 0 2px 0;
text-align: center;
line-height: 10pt;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.float-left {
float: left;
padding: .5em 1em .25em 0;
}

.float-right {
float: right;
padding: .5em 0 .25em 1em;
}

.align-left {
display: block;
text-align: left;
}

.align-center {
display: block;
text-align: center;
}

.align-right {
display: block;
text-align: right;
}
15 changes: 15 additions & 0 deletions lib/gollum/frontend/templates/layout.mustache
@@ -0,0 +1,15 @@
<!DOCTYPE html>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Gollum - {{title}}</title>
<link rel="stylesheet" href="/css/global.css" type="text/css" charset="utf-8" />
</head>

<body>
<div id="content">
{{{yield}}}
</div>
</body>
</html>
1 change: 1 addition & 0 deletions lib/gollum/frontend/templates/page.mustache
@@ -0,0 +1 @@
{{{content}}}
12 changes: 12 additions & 0 deletions lib/gollum/frontend/views/layout.rb
@@ -0,0 +1,12 @@
module Precious
module Views
class Layout < Mustache
include Rack::Utils
alias_method :h, :escape_html

def title
"Home"
end
end
end
end
11 changes: 11 additions & 0 deletions lib/gollum/frontend/views/page.rb
@@ -0,0 +1,11 @@
module Precious
module Views
class Page < Layout
attr_reader :content

def title
"A Page"
end
end
end
end
12 changes: 6 additions & 6 deletions lib/gollum/markup.rb
Expand Up @@ -100,7 +100,7 @@ def process_image_tag(tag)
containered = true
align ||= 'left'
if %w{left right}.include?(align)
classes << "float-#{align};"
classes << "float-#{align}"
end
elsif %w{top texttop middle absmiddle bottom absbottom baseline}.include?(align)
attrs << %{align="#{align}"}
Expand Down Expand Up @@ -136,12 +136,12 @@ def process_image_tag(tag)

if opts['frame'] || containered
classes << 'frame' if opts['frame']
%{<div class="#{classes.join(' ')}">} +
%{<div>} +
%{<span class="#{classes.join(' ')}">} +
%{<span>} +
%{<img src="/#{file.path}"#{style_string} #{attr_string}/>} +
(alt ? %{<p>#{alt}</p>} : '') +
%{</div>} +
%{</div>}
(alt ? %{<span>#{alt}</span>} : '') +
%{</span>} +
%{</span>}
else
%{<img src="/#{file.path}"#{style_string} #{attr_string}/>}
end
Expand Down
92 changes: 92 additions & 0 deletions templates/formatting.html
@@ -0,0 +1,92 @@
<style>
div.frame {
margin: 1em 0;
}

div.frame div {
display: inline-block;
border: 1px solid #aaa;
padding: 4px;
}

div div p {
font-size: 9px;
margin: 0;
padding: 4px 0 0 0;
text-align: center;
}

.float-left {
float: left;
padding-right: 1em;
}

.float-right {
float: right;
padding-left: 1em;
}

.align-left {
text-align: left;
}

.align-center {
text-align: center;
}

.align-right {
text-align: right;
}
</style>

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante. <img src="http://www.google.com/images/nav_logo8.png" style="max-width: 16px;" /> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante.

<div class="frame float-left">
<div>
<img src="http://www.google.com/images/nav_logo8.png" style="max-width: 100px;" />
<p>Google</p>
</div>
</div>

Fusce ullamcorper orci enim. Duis lectus elit, convallis ac convallis sit amet, euismod imperdiet dolor. Nunc egestas nisi quis magna feugiat vitae fringilla elit fermentum.

<div class="frame float-right">
<div>
<img src="http://www.google.com/images/nav_logo8.png" style="max-width: 100px;" />
<p>Google</p>
</div>
</div>

Vivamus sollicitudin dolor sit amet elit mollis ultricies. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas hendrerit eros felis. Nunc non enim at dolor malesuada pellentesque a quis nibh. Aliquam sit amet pretium ante.<p>

<div class="frame align-left">
<div>
<img src="http://www.google.com/images/nav_logo8.png" />
<p>Google</p>
</div>
</div>

<p>Phasellus porta dignissim leo vel hendrerit. Nulla pellentesque nisi ac nunc malesuada aliquam. Nullam et cursus augue. Sed rhoncus pharetra odio, vel dictum diam facilisis et. Etiam molestie justo ut purus elementum rhoncus. Fusce nec augue lectus. Proin a nisl ac lectus facilisis tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent blandit tempus libero, in interdum odio dignissim quis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec quis arcu a metus tincidunt scelerisque eget sed mauris. Nullam pellentesque faucibus sodales. Integer ullamcorper enim id nibh tempor ultricies.</p>

<div class="frame align-center">
<div>
<img src="http://www.google.com/images/nav_logo8.png" />
<p>Google</p>
</div>
</div>

<p>Phasellus porta dignissim leo vel hendrerit. Nulla pellentesque nisi ac nunc malesuada aliquam. Nullam et cursus augue. Sed rhoncus pharetra odio, vel dictum diam facilisis et. Etiam molestie justo ut purus elementum rhoncus. Fusce nec augue lectus. Proin a nisl ac lectus facilisis tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent blandit tempus libero, in interdum odio dignissim quis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec quis arcu a metus tincidunt scelerisque eget sed mauris. Nullam pellentesque faucibus sodales. Integer ullamcorper enim id nibh tempor ultricies.</p>

<p>
<div class="frame align-right">
<div>
<img src="http://www.google.com/images/nav_logo8.png" />
</div>
</div>
</p>

<p>Phasellus porta dignissim leo vel hendrerit. Nulla pellentesque nisi ac nunc malesuada aliquam. Nullam et cursus augue. Sed rhoncus pharetra odio, vel dictum diam facilisis et. Etiam molestie justo ut purus elementum rhoncus. Fusce nec augue lectus. Proin a nisl ac lectus facilisis tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent blandit tempus libero, in interdum odio dignissim quis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec quis arcu a metus tincidunt scelerisque eget sed mauris. Nullam pellentesque faucibus sodales. Integer ullamcorper enim id nibh tempor ultricies. <div class="frame align-right">
<div>
<img src="http://www.google.com/images/nav_logo8.png" />
</div>
</div> Phasellus porta dignissim leo vel hendrerit. Nulla pellentesque nisi ac nunc malesuada aliquam. Nullam et cursus augue. Sed rhoncus pharetra odio, vel dictum diam facilisis et. Etiam molestie justo ut purus elementum rhoncus. Fusce nec augue lectus. Proin a nisl ac lectus facilisis tempus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent blandit tempus libero, in interdum odio dignissim quis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec quis arcu a metus tincidunt scelerisque eget sed mauris. Nullam pellentesque faucibus sodales. Integer ullamcorper enim id nibh tempor ultricies.</p>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
x��K
1]�}��ɯ{"���:���i������y��
^�������̐�vI��ِ��CɖBXB�����R��y��4F�i���m`��,u�Ք�s�+���p����!�t�q�Ӑvi�䘥�AZ9����Y�t9v��^յ3�F}ɆJ�
Binary file not shown.
@@ -0,0 +1 @@
x��A��@ �9ϯ�����MO ı� 8P�8TrObe2�<�����d[��R.��<�3u�޽}���j�=v��ܳ8A� &���DN���Z���9�0$�J��iq8M�����U�M�-���.m!/r�b� �p?DYbi�N_+8��% L�|�$�3� ,ʹ�T�{ʢ�d�0�j�kB�R@�R�ЂW�e�I)f�H�DM�G*��c�S&]G���)�'�Z�$�W�l+驅#J�s_,���FT�կ��m1^znzC �[����6н�.�@�m�Lw�@�e�`^m���y6Z�� %�#�6p0���P�߆=�6��z��+�9��/n�6���O��!�x��P������j�'j+�nW�����\�����k�T�/��
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
x��M
�0F]�s�J:��D<� �����B:%ƅ��gp�=ރo�Z��ѡ7�)璊Dk�ٳ�(qN�#�[Z27Y;�d��%e�CI���'XM.�9�b�����M�]��.m����R��5�q�z�C�0Z?�`��f��˾������+�=���o#J
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
x]�A��@ �9ϯ�ġ uSq��" 8P�8Tr'�2Gw��{<�V��r����{���������k�s�����r���l �U {I�����>K]��0f� Gʀ��p� S�N���h[~-nN}ނ-r�L�� ��0&YRi�N_+8�/%�L�|�d�0�+,�Vl��=���YGhu�-�G)�A�$�ЩL��rבR2�I�L����a��H�?.���R-��+u�+��#F�U_<�3��&T�կ�۶/7���u�=G���m��Wg.P
%�]7`���K��������{� O/�7pp���X�ߎ=�6��v��+ŋ�/n�>���O���1�x����?f��ݎR���3���h�+�n}Dno���m��l��
Expand Down
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,2 @@
x��Kj�0@��)�)#{$�����@���h��d����������&,k|�C���iuK���͞�q��#��EDn�<ҐmB�j�ׅ�E!j�Q
�T��Z�J��l�1�u�U;|٧n�/� x��?��h��Z���]���Y�`@4'=/�)�����zs�m�p<`�.�ϣ5��,L�
@@ -0,0 +1 @@
x��Kj�0@��)�)#i,KPJ��E�k}fh��d����������&8�^�`��).��9&AO��#)5-�КG�M(�,F�"-�E"By��T,�V=�V������W��9x��]�xl<�mj������k��֭�BX \�I��y���ÿ��o�/ص3��1O��L�
Expand Down
@@ -0,0 +1,3 @@
x��
�0=�+�r�^�&4 Rz�ȦY�YH���O30�zX{<Dk�"�<� n�apQ*��褝�����HL%����<J��Ur]h��ߒ��c
�R+�{�[ � ?~*A
Expand Down
2 changes: 1 addition & 1 deletion test/examples/lotr.git/refs/heads/master
@@ -1 +1 @@
f01428b3138994aab19d5f880b6f37336ddf1f24
4fde706c7c8d3b30b6caec8c82ff4c01261350f2

0 comments on commit 2e49f2c

Please sign in to comment.