read-only-gollum 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/HISTORY.md +102 -0
- data/Home.md +3 -0
- data/LICENSE +21 -0
- data/README.md +477 -0
- data/Rakefile +142 -0
- data/bin/read-only-gollum +126 -0
- data/docs/sanitization.md +32 -0
- data/lib/gollum.rb +41 -0
- data/lib/gollum/blob_entry.rb +78 -0
- data/lib/gollum/committer.rb +218 -0
- data/lib/gollum/file.rb +64 -0
- data/lib/gollum/frontend/app.rb +225 -0
- data/lib/gollum/frontend/public/css/dialog.css +141 -0
- data/lib/gollum/frontend/public/css/editor.css +537 -0
- data/lib/gollum/frontend/public/css/gollum.css +660 -0
- data/lib/gollum/frontend/public/css/ie7.css +69 -0
- data/lib/gollum/frontend/public/css/template.css +381 -0
- data/lib/gollum/frontend/public/images/icon-sprite.png +0 -0
- data/lib/gollum/frontend/public/javascript/editor/gollum.editor.js +1096 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/asciidoc.js +167 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/creole.js +104 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/markdown.js +211 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/org.js +173 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/pod.js +111 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/rdoc.js +74 -0
- data/lib/gollum/frontend/public/javascript/editor/langs/textile.js +175 -0
- data/lib/gollum/frontend/public/javascript/gollum.dialog.js +263 -0
- data/lib/gollum/frontend/public/javascript/gollum.js +161 -0
- data/lib/gollum/frontend/public/javascript/gollum.placeholder.js +54 -0
- data/lib/gollum/frontend/public/javascript/jquery.color.js +123 -0
- data/lib/gollum/frontend/public/javascript/jquery.js +7179 -0
- data/lib/gollum/frontend/templates/compare.mustache +38 -0
- data/lib/gollum/frontend/templates/create.mustache +17 -0
- data/lib/gollum/frontend/templates/edit.mustache +17 -0
- data/lib/gollum/frontend/templates/editor.mustache +116 -0
- data/lib/gollum/frontend/templates/error.mustache +8 -0
- data/lib/gollum/frontend/templates/history.mustache +58 -0
- data/lib/gollum/frontend/templates/layout.mustache +28 -0
- data/lib/gollum/frontend/templates/page.mustache +37 -0
- data/lib/gollum/frontend/templates/pages.mustache +35 -0
- data/lib/gollum/frontend/templates/search.mustache +36 -0
- data/lib/gollum/frontend/templates/searchbar.mustache +10 -0
- data/lib/gollum/frontend/views/compare.rb +94 -0
- data/lib/gollum/frontend/views/create.rb +48 -0
- data/lib/gollum/frontend/views/edit.rb +52 -0
- data/lib/gollum/frontend/views/editable.rb +13 -0
- data/lib/gollum/frontend/views/error.rb +7 -0
- data/lib/gollum/frontend/views/history.rb +44 -0
- data/lib/gollum/frontend/views/layout.rb +20 -0
- data/lib/gollum/frontend/views/page.rb +57 -0
- data/lib/gollum/frontend/views/pages.rb +19 -0
- data/lib/gollum/frontend/views/search.rb +20 -0
- data/lib/gollum/git_access.rb +248 -0
- data/lib/gollum/markup.rb +489 -0
- data/lib/gollum/page.rb +430 -0
- data/lib/gollum/pagination.rb +61 -0
- data/lib/gollum/sanitization.rb +174 -0
- data/lib/gollum/tex.rb +89 -0
- data/lib/gollum/web_sequence_diagram.rb +43 -0
- data/lib/gollum/wiki.rb +636 -0
- data/read-only-gollum.gemspec +224 -0
- data/templates/formatting.html +92 -0
- data/test/examples/empty.git/HEAD +1 -0
- data/test/examples/empty.git/config +5 -0
- data/test/examples/empty.git/description +1 -0
- data/test/examples/empty.git/hooks/applypatch-msg.sample +15 -0
- data/test/examples/empty.git/hooks/commit-msg.sample +24 -0
- data/test/examples/empty.git/hooks/post-commit.sample +8 -0
- data/test/examples/empty.git/hooks/post-receive.sample +15 -0
- data/test/examples/empty.git/hooks/post-update.sample +8 -0
- data/test/examples/empty.git/hooks/pre-applypatch.sample +14 -0
- data/test/examples/empty.git/hooks/pre-commit.sample +46 -0
- data/test/examples/empty.git/hooks/pre-rebase.sample +169 -0
- data/test/examples/empty.git/hooks/prepare-commit-msg.sample +36 -0
- data/test/examples/empty.git/hooks/update.sample +128 -0
- data/test/examples/empty.git/info/exclude +6 -0
- data/test/examples/empty.git/objects/info/.gitkeep +0 -0
- data/test/examples/empty.git/objects/pack/.gitkeep +0 -0
- data/test/examples/empty.git/refs/heads/.gitkeep +0 -0
- data/test/examples/lotr.git/COMMIT_EDITMSG +1 -0
- data/test/examples/lotr.git/HEAD +1 -0
- data/test/examples/lotr.git/ORIG_HEAD +1 -0
- data/test/examples/lotr.git/config +12 -0
- data/test/examples/lotr.git/description +1 -0
- data/test/examples/lotr.git/index +0 -0
- data/test/examples/lotr.git/info/exclude +6 -0
- data/test/examples/lotr.git/logs/HEAD +3 -0
- data/test/examples/lotr.git/logs/refs/heads/master +3 -0
- data/test/examples/lotr.git/objects/06/131480411710c92a82fe2d1e76932c70feb2e5 +0 -0
- data/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 +0 -0
- data/test/examples/lotr.git/objects/0e/d8cbe0a25235bd867e65193c7d837c66b328ef +3 -0
- data/test/examples/lotr.git/objects/12/629d666c5e3178f82f533f543d61b53dc78c0b +0 -0
- data/test/examples/lotr.git/objects/1d/b89ebba7e2c14d93b94ff98cfa3708a4f0d4e3 +2 -0
- data/test/examples/lotr.git/objects/24/49c2681badfd3c189e8ed658dacffe8ba48fe5 +0 -0
- data/test/examples/lotr.git/objects/25/4bdc1ba27d8b8a794538a8522d9a2b56ec2dd9 +0 -0
- data/test/examples/lotr.git/objects/2c/b9156ad383914561a8502fc70f5a1d887e48ad +4 -0
- data/test/examples/lotr.git/objects/5d/cac289a8603188d2c5caf481dcba2985126aaa +0 -0
- data/test/examples/lotr.git/objects/60/f12f4254f58801b9ee7db7bca5fa8aeefaa56b +0 -0
- data/test/examples/lotr.git/objects/71/4323c104239440a5c66ab12a67ed07a83c404f +0 -0
- data/test/examples/lotr.git/objects/84/0ec5b1ba1320e8ec443f28f99566f615d5af10 +0 -0
- data/test/examples/lotr.git/objects/93/6b83ee0dd8837adb82511e40d5e4ebe59bb675 +0 -0
- data/test/examples/lotr.git/objects/94/523d7ae48aeba575099dd12926420d8fd0425d +2 -0
- data/test/examples/lotr.git/objects/96/97dc65e095658bbd1b8e8678e08881e86d32f1 +0 -0
- data/test/examples/lotr.git/objects/a3/1ca2a7c352c92531a8b99815d15843b259e814 +0 -0
- data/test/examples/lotr.git/objects/a6/59b3763b822dd97544621fd0beef162ea37b14 +4 -0
- data/test/examples/lotr.git/objects/a8/ad3c09dd842a3517085bfadd37718856dee813 +0 -0
- data/test/examples/lotr.git/objects/aa/b61fe89d56f8614c0a8151da34f939dcedfa68 +0 -0
- data/test/examples/lotr.git/objects/bc/4b5fc0ce2c2ba3acef6647e4f67256ee45ab60 +0 -0
- data/test/examples/lotr.git/objects/c3/b43e9f08966b088e7a0192e436b7a884542e05 +0 -0
- data/test/examples/lotr.git/objects/dc/596d6b2dd89ab05c66f4abd7d5eb706bc17f19 +0 -0
- data/test/examples/lotr.git/objects/ec/da3205bee14520aab5a7bb307392064b938e83 +0 -0
- data/test/examples/lotr.git/objects/f4/84ebb1f40f8eb20d1bcd8d1d71934d2b8ae961 +0 -0
- data/test/examples/lotr.git/objects/fa/e7ef5344202bba4129abdc13060d9297d99465 +3 -0
- data/test/examples/lotr.git/objects/info/packs +2 -0
- data/test/examples/lotr.git/objects/pack/pack-dcbeaf3f6ff6c5eb08ea2b0a2d83626e8763546b.idx +0 -0
- data/test/examples/lotr.git/objects/pack/pack-dcbeaf3f6ff6c5eb08ea2b0a2d83626e8763546b.pack +0 -0
- data/test/examples/lotr.git/packed-refs +2 -0
- data/test/examples/lotr.git/refs/heads/master +1 -0
- data/test/examples/lotr.git/refs/remotes/origin/HEAD +1 -0
- data/test/examples/page_file_dir.git/COMMIT_EDITMSG +1 -0
- data/test/examples/page_file_dir.git/HEAD +1 -0
- data/test/examples/page_file_dir.git/config +6 -0
- data/test/examples/page_file_dir.git/description +1 -0
- data/test/examples/page_file_dir.git/index +0 -0
- data/test/examples/page_file_dir.git/info/exclude +6 -0
- data/test/examples/page_file_dir.git/logs/HEAD +1 -0
- data/test/examples/page_file_dir.git/logs/refs/heads/master +1 -0
- data/test/examples/page_file_dir.git/objects/0c/7d27db1f575263efdcab3dc650f4502a2dbcbf +0 -0
- data/test/examples/page_file_dir.git/objects/22/b404803c966dd92865614d86ff22ca12e50c1e +0 -0
- data/test/examples/page_file_dir.git/objects/25/7cc5642cb1a054f08cc83f2d943e56fd3ebe99 +0 -0
- data/test/examples/page_file_dir.git/objects/57/16ca5987cbf97d6bb54920bea6adde242d87e6 +0 -0
- data/test/examples/page_file_dir.git/objects/5b/43e14e0a15fb6f08feab1773d1c0991e9f71e2 +0 -0
- data/test/examples/page_file_dir.git/refs/heads/master +1 -0
- data/test/examples/revert.git/COMMIT_EDITMSG +1 -0
- data/test/examples/revert.git/HEAD +1 -0
- data/test/examples/revert.git/config +12 -0
- data/test/examples/revert.git/description +1 -0
- data/test/examples/revert.git/index +0 -0
- data/test/examples/revert.git/info/exclude +6 -0
- data/test/examples/revert.git/logs/HEAD +2 -0
- data/test/examples/revert.git/logs/refs/heads/master +2 -0
- data/test/examples/revert.git/objects/20/2ced67cea93c7b6bd2928aa1daef8d1d55a20d +0 -0
- data/test/examples/revert.git/objects/41/76394bfa11222363c66ce7e84b5f154095b6d9 +0 -0
- data/test/examples/revert.git/objects/6a/69f92020f5df77af6e8813ff1232493383b708 +0 -0
- data/test/examples/revert.git/objects/b4/785957bc986dc39c629de9fac9df46972c00fc +0 -0
- data/test/examples/revert.git/objects/f4/03b791119f8232b7cb0ba455c624ac6435f433 +0 -0
- data/test/examples/revert.git/objects/info/packs +2 -0
- data/test/examples/revert.git/objects/pack/pack-a561f8437234f74d0bacb9e0eebe52d207f5770d.idx +0 -0
- data/test/examples/revert.git/objects/pack/pack-a561f8437234f74d0bacb9e0eebe52d207f5770d.pack +0 -0
- data/test/examples/revert.git/packed-refs +2 -0
- data/test/examples/revert.git/refs/heads/master +1 -0
- data/test/examples/revert.git/refs/remotes/origin/HEAD +1 -0
- data/test/examples/yubiwa.git/HEAD +1 -0
- data/test/examples/yubiwa.git/config +5 -0
- data/test/examples/yubiwa.git/description +1 -0
- data/test/examples/yubiwa.git/info/exclude +6 -0
- data/test/examples/yubiwa.git/objects/10/fa2ddc4e3b4009d8a453aace10bd6148c1ad00 +0 -0
- data/test/examples/yubiwa.git/objects/52/4b82874327ea7cbf730389964ba7cb3de966de +0 -0
- data/test/examples/yubiwa.git/objects/58/3fc201cb457fb3f1480f3e1e5999b119633835 +0 -0
- data/test/examples/yubiwa.git/objects/87/bc1dd46ab3d3874d4e898d45dd512cc20a7cc8 +1 -0
- data/test/examples/yubiwa.git/objects/89/64ed1b4e21aa90e831763bbce9034bfda81b70 +0 -0
- data/test/examples/yubiwa.git/objects/9f/f6dd0660da5fba2d3374adb2b84fa653bb538b +0 -0
- data/test/examples/yubiwa.git/objects/ac/e97abf2b177815a1972d7db22f229f58c83309 +0 -0
- data/test/examples/yubiwa.git/objects/b1/f443863a4816628807fbf86141ebef055dda34 +0 -0
- data/test/examples/yubiwa.git/refs/heads/master +1 -0
- data/test/helper.rb +66 -0
- data/test/test_app.rb +169 -0
- data/test/test_committer.rb +64 -0
- data/test/test_file.rb +27 -0
- data/test/test_git_access.rb +52 -0
- data/test/test_markup.rb +628 -0
- data/test/test_page.rb +166 -0
- data/test/test_page_revert.rb +45 -0
- data/test/test_wiki.rb +462 -0
- metadata +470 -0
data/lib/gollum/file.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
module Gollum
|
2
|
+
class File
|
3
|
+
Wiki.file_class = self
|
4
|
+
|
5
|
+
# Public: Initialize a file.
|
6
|
+
#
|
7
|
+
# wiki - The Gollum::Wiki in question.
|
8
|
+
#
|
9
|
+
# Returns a newly initialized Gollum::File.
|
10
|
+
def initialize(wiki)
|
11
|
+
@wiki = wiki
|
12
|
+
@blob = nil
|
13
|
+
@path = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
# Public: The on-disk filename of the file.
|
17
|
+
#
|
18
|
+
# Returns the String name.
|
19
|
+
def name
|
20
|
+
@blob && @blob.name
|
21
|
+
end
|
22
|
+
|
23
|
+
# Public: The raw contents of the page.
|
24
|
+
#
|
25
|
+
# Returns the String data.
|
26
|
+
def raw_data
|
27
|
+
@blob && @blob.data
|
28
|
+
end
|
29
|
+
|
30
|
+
# Public: The Grit::Commit version of the file.
|
31
|
+
attr_reader :version
|
32
|
+
|
33
|
+
# Public: The String path of the file.
|
34
|
+
attr_reader :path
|
35
|
+
|
36
|
+
# Public: The String mime type of the file.
|
37
|
+
def mime_type
|
38
|
+
@blob.mime_type
|
39
|
+
end
|
40
|
+
|
41
|
+
#########################################################################
|
42
|
+
#
|
43
|
+
# Internal Methods
|
44
|
+
#
|
45
|
+
#########################################################################
|
46
|
+
|
47
|
+
# Find a file in the given Gollum repo.
|
48
|
+
#
|
49
|
+
# name - The full String path.
|
50
|
+
# version - The String version ID to find.
|
51
|
+
#
|
52
|
+
# Returns a Gollum::File or nil if the file could not be found.
|
53
|
+
def find(name, version)
|
54
|
+
checked = name.downcase
|
55
|
+
map = @wiki.tree_map_for(version)
|
56
|
+
if entry = map.detect { |entry| entry.path.downcase == checked }
|
57
|
+
@path = name
|
58
|
+
@blob = entry.blob(@wiki.repo)
|
59
|
+
@version = version.is_a?(Grit::Commit) ? version : @wiki.commit_for(version)
|
60
|
+
self
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,225 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'gollum'
|
4
|
+
require 'mustache/sinatra'
|
5
|
+
|
6
|
+
require 'gollum/frontend/views/layout'
|
7
|
+
require 'gollum/frontend/views/editable'
|
8
|
+
|
9
|
+
module Precious
|
10
|
+
class App < Sinatra::Base
|
11
|
+
register Mustache::Sinatra
|
12
|
+
|
13
|
+
dir = File.dirname(File.expand_path(__FILE__))
|
14
|
+
|
15
|
+
# We want to serve public assets for now
|
16
|
+
set :public_folder, "#{dir}/public"
|
17
|
+
set :static, true
|
18
|
+
set :default_markup, :markdown
|
19
|
+
|
20
|
+
set :mustache, {
|
21
|
+
# Tell mustache where the Views constant lives
|
22
|
+
:namespace => Precious,
|
23
|
+
|
24
|
+
# Mustache templates live here
|
25
|
+
:templates => "#{dir}/templates",
|
26
|
+
|
27
|
+
# Tell mustache where the views are
|
28
|
+
:views => "#{dir}/views"
|
29
|
+
}
|
30
|
+
|
31
|
+
# Sinatra error handling
|
32
|
+
configure :development, :staging do
|
33
|
+
enable :show_exceptions, :dump_errors
|
34
|
+
disable :raise_errors, :clean_trace
|
35
|
+
end
|
36
|
+
|
37
|
+
configure :test do
|
38
|
+
enable :logging, :raise_errors, :dump_errors
|
39
|
+
end
|
40
|
+
|
41
|
+
get '/' do
|
42
|
+
show_page_or_file('Home')
|
43
|
+
end
|
44
|
+
|
45
|
+
get '/edit/*' do
|
46
|
+
halt 404
|
47
|
+
# @name = params[:splat].first
|
48
|
+
# wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
49
|
+
# if page = wiki.page(@name)
|
50
|
+
# @page = page
|
51
|
+
# @content = page.raw_data
|
52
|
+
# mustache :edit
|
53
|
+
# else
|
54
|
+
# mustache :create
|
55
|
+
# end
|
56
|
+
end
|
57
|
+
|
58
|
+
post '/edit/*' do
|
59
|
+
halt 404
|
60
|
+
# wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
61
|
+
# page = wiki.page(params[:splat].first)
|
62
|
+
# name = params[:rename] || page.name
|
63
|
+
# committer = Gollum::Committer.new(wiki, commit_message)
|
64
|
+
# commit = {:committer => committer}
|
65
|
+
|
66
|
+
# update_wiki_page(wiki, page, params[:content], commit, name,
|
67
|
+
# params[:format])
|
68
|
+
# update_wiki_page(wiki, page.footer, params[:footer], commit) if params[:footer]
|
69
|
+
# update_wiki_page(wiki, page.sidebar, params[:sidebar], commit) if params[:sidebar]
|
70
|
+
# committer.commit
|
71
|
+
|
72
|
+
# redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
73
|
+
end
|
74
|
+
|
75
|
+
post '/create' do
|
76
|
+
halt 404
|
77
|
+
# name = params[:page]
|
78
|
+
# wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
79
|
+
|
80
|
+
# format = params[:format].intern
|
81
|
+
|
82
|
+
# begin
|
83
|
+
# wiki.write_page(name, format, params[:content], commit_message)
|
84
|
+
# redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
85
|
+
# rescue Gollum::DuplicatePageError => e
|
86
|
+
# @message = "Duplicate page: #{e.message}"
|
87
|
+
# mustache :error
|
88
|
+
# end
|
89
|
+
end
|
90
|
+
|
91
|
+
post '/revert/:page/*' do
|
92
|
+
halt 404
|
93
|
+
# wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
94
|
+
# @name = params[:page]
|
95
|
+
# @page = wiki.page(@name)
|
96
|
+
# shas = params[:splat].first.split("/")
|
97
|
+
# sha1 = shas.shift
|
98
|
+
# sha2 = shas.shift
|
99
|
+
|
100
|
+
# if wiki.revert_page(@page, sha1, sha2, commit_message)
|
101
|
+
# redirect "/#{CGI.escape(@name)}"
|
102
|
+
# else
|
103
|
+
# sha2, sha1 = sha1, "#{sha1}^" if !sha2
|
104
|
+
# @versions = [sha1, sha2]
|
105
|
+
# diffs = wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
106
|
+
# @diff = diffs.first
|
107
|
+
# @message = "The patch does not apply."
|
108
|
+
# mustache :compare
|
109
|
+
# end
|
110
|
+
end
|
111
|
+
|
112
|
+
post '/preview' do
|
113
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
114
|
+
@name = "Preview"
|
115
|
+
@page = wiki.preview_page(@name, params[:content], params[:format])
|
116
|
+
@content = @page.formatted_data
|
117
|
+
@editable = false
|
118
|
+
mustache :page
|
119
|
+
end
|
120
|
+
|
121
|
+
get '/history/:name' do
|
122
|
+
@name = params[:name]
|
123
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
124
|
+
@page = wiki.page(@name)
|
125
|
+
@page_num = [params[:page].to_i, 1].max
|
126
|
+
@versions = @page.versions :page => @page_num
|
127
|
+
mustache :history
|
128
|
+
end
|
129
|
+
|
130
|
+
post '/compare/:name' do
|
131
|
+
@versions = params[:versions] || []
|
132
|
+
if @versions.size < 2
|
133
|
+
redirect "/history/#{CGI.escape(params[:name])}"
|
134
|
+
else
|
135
|
+
redirect "/compare/%s/%s...%s" % [
|
136
|
+
CGI.escape(params[:name]),
|
137
|
+
@versions.last,
|
138
|
+
@versions.first]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
get '/compare/:name/:version_list' do
|
143
|
+
@name = params[:name]
|
144
|
+
@versions = params[:version_list].split(/\.{2,3}/)
|
145
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
146
|
+
@page = wiki.page(@name)
|
147
|
+
diffs = wiki.repo.diff(@versions.first, @versions.last, @page.path)
|
148
|
+
@diff = diffs.first
|
149
|
+
mustache :compare
|
150
|
+
end
|
151
|
+
|
152
|
+
get '/_tex.png' do
|
153
|
+
content_type 'image/png'
|
154
|
+
formula = Base64.decode64(params[:data])
|
155
|
+
Gollum::Tex.render_formula(formula)
|
156
|
+
end
|
157
|
+
|
158
|
+
get %r{^/(javascript|css|images)} do
|
159
|
+
halt 404
|
160
|
+
end
|
161
|
+
|
162
|
+
get %r{/(.+?)/([0-9a-f]{40})} do
|
163
|
+
name = params[:captures][0]
|
164
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
165
|
+
if page = wiki.page(name, params[:captures][1])
|
166
|
+
@page = page
|
167
|
+
@name = name
|
168
|
+
@content = page.formatted_data
|
169
|
+
@editable = false
|
170
|
+
mustache :page
|
171
|
+
else
|
172
|
+
halt 404
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
get '/search' do
|
177
|
+
@query = params[:q]
|
178
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
179
|
+
@results = wiki.search @query
|
180
|
+
@name = @query
|
181
|
+
mustache :search
|
182
|
+
end
|
183
|
+
|
184
|
+
get '/pages' do
|
185
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
186
|
+
@results = wiki.pages
|
187
|
+
@ref = wiki.ref
|
188
|
+
mustache :pages
|
189
|
+
end
|
190
|
+
|
191
|
+
get '/*' do
|
192
|
+
show_page_or_file(params[:splat].first)
|
193
|
+
end
|
194
|
+
|
195
|
+
def show_page_or_file(name)
|
196
|
+
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
197
|
+
if page = wiki.page(name)
|
198
|
+
@page = page
|
199
|
+
@name = name
|
200
|
+
@content = page.formatted_data
|
201
|
+
@editable = false
|
202
|
+
mustache :page
|
203
|
+
elsif file = wiki.file(name)
|
204
|
+
content_type file.mime_type
|
205
|
+
file.raw_data
|
206
|
+
else
|
207
|
+
@name = name
|
208
|
+
mustache :create
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
def update_wiki_page(wiki, page, content, commit_message, name = nil, format = nil)
|
213
|
+
return if !page ||
|
214
|
+
((!content || page.raw_data == content) && page.format == format)
|
215
|
+
name ||= page.name
|
216
|
+
format = (format || page.format).to_sym
|
217
|
+
content ||= page.raw_data
|
218
|
+
wiki.update_page(page, name, format, content.to_s, commit_message)
|
219
|
+
end
|
220
|
+
|
221
|
+
def commit_message
|
222
|
+
{ :message => params[:message] }
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
/* @control dialog */
|
2
|
+
|
3
|
+
#gollum-dialog-dialog {
|
4
|
+
display: block;
|
5
|
+
overflow: visible;
|
6
|
+
position: absolute;
|
7
|
+
top: 50%;
|
8
|
+
left: 50%;
|
9
|
+
}
|
10
|
+
|
11
|
+
#gollum-dialog-dialog.active {
|
12
|
+
display: block;
|
13
|
+
}
|
14
|
+
|
15
|
+
#gollum-dialog-dialog-inner {
|
16
|
+
margin: 0 0 0 -225px;
|
17
|
+
position: relative;
|
18
|
+
width: 450px;
|
19
|
+
|
20
|
+
border: 7px solid #999;
|
21
|
+
border: 7px solid rgba(0, 0, 0, 0.3);
|
22
|
+
border-radius: 5px;
|
23
|
+
-moz-border-radius: 5px;
|
24
|
+
-webkit-border-radius: 5px;
|
25
|
+
}
|
26
|
+
|
27
|
+
#gollum-dialog-dialog-bg {
|
28
|
+
background-color: #fff;
|
29
|
+
overflow: hidden;
|
30
|
+
padding: 1em;
|
31
|
+
|
32
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f7f7f7), to(#ffffff));
|
33
|
+
background: -moz-linear-gradient(top, #f7f7f7, #ffffff);
|
34
|
+
}
|
35
|
+
|
36
|
+
#gollum-dialog-dialog-inner h4 {
|
37
|
+
border-bottom: 1px solid #ddd;
|
38
|
+
color: #000;
|
39
|
+
font-size: 1.8em;
|
40
|
+
line-height: normal;
|
41
|
+
font-weight: bold;
|
42
|
+
margin: 0 0 0.75em 0;
|
43
|
+
padding: 0 0 0.3em 0;
|
44
|
+
}
|
45
|
+
|
46
|
+
#gollum-dialog-dialog-body {
|
47
|
+
font-size: 1.2em;
|
48
|
+
line-height: 1.6em;
|
49
|
+
}
|
50
|
+
|
51
|
+
#gollum-dialog-dialog-body fieldset {
|
52
|
+
display: block;
|
53
|
+
border: 0;
|
54
|
+
margin: 0;
|
55
|
+
overflow: hidden;
|
56
|
+
padding: 0;
|
57
|
+
}
|
58
|
+
|
59
|
+
#gollum-dialog-dialog-body fieldset .field {
|
60
|
+
margin: 0 0 1.5em 0;
|
61
|
+
padding: 0;
|
62
|
+
}
|
63
|
+
|
64
|
+
#gollum-dialog-dialog-body fieldset .field label {
|
65
|
+
color: #000;
|
66
|
+
display: block;
|
67
|
+
font-size: 1.2em;
|
68
|
+
font-weight: bold;
|
69
|
+
line-height: 1.6em;
|
70
|
+
margin: 0;
|
71
|
+
padding: 0;
|
72
|
+
min-width: 80px;
|
73
|
+
}
|
74
|
+
|
75
|
+
#gollum-dialog-dialog-body fieldset .field input[type="text"] {
|
76
|
+
border: 1px solid #ddd;
|
77
|
+
display: block;
|
78
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
79
|
+
font-size: 1.2em;
|
80
|
+
line-height: 1.6em;
|
81
|
+
margin: 0.3em 0 0 0;
|
82
|
+
padding: 0.3em 0.5em;
|
83
|
+
width: 96.5%;
|
84
|
+
}
|
85
|
+
|
86
|
+
#gollum-dialog-dialog-body fieldset .field input.code {
|
87
|
+
font-family: 'Monaco', 'Courier New', Courier, monospace;
|
88
|
+
}
|
89
|
+
|
90
|
+
#gollum-dialog-dialog-body fieldset .field:last-child {
|
91
|
+
margin: 0 0 1em 0;
|
92
|
+
}
|
93
|
+
|
94
|
+
#gollum-dialog-dialog-buttons {
|
95
|
+
border-top: 1px solid #ddd;
|
96
|
+
overflow: hidden;
|
97
|
+
margin: 1.5em 0 0 0;
|
98
|
+
padding: 1em 0 0 0;
|
99
|
+
}
|
100
|
+
|
101
|
+
#gollum-dialog-dialog a.minibutton {
|
102
|
+
float: right;
|
103
|
+
margin-right: 0.5em;
|
104
|
+
width: auto;
|
105
|
+
}
|
106
|
+
|
107
|
+
#gollum-dialog-dialog a.minibutton,
|
108
|
+
#gollum-dialog-dialog a.minibutton:visited {
|
109
|
+
background-color: #f7f7f7;
|
110
|
+
border: 1px solid #d4d4d4;
|
111
|
+
color: #333;
|
112
|
+
cursor: pointer;
|
113
|
+
display: block;
|
114
|
+
font-size: 1.2em;
|
115
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
116
|
+
font-weight: bold;
|
117
|
+
margin: 0 0 0 0.8em;
|
118
|
+
padding: 0.4em 1em;
|
119
|
+
|
120
|
+
text-shadow: 0 1px 0 #fff;
|
121
|
+
|
122
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f4f4f4', endColorstr='#ececec');
|
123
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#ececec));
|
124
|
+
background: -moz-linear-gradient(top, #f4f4f4, #ececec);
|
125
|
+
|
126
|
+
border-radius: 3px;
|
127
|
+
-moz-border-radius: 3px;
|
128
|
+
-webkit-border-radius: 3px;
|
129
|
+
}
|
130
|
+
|
131
|
+
#gollum-dialog-dialog a.minibutton:hover {
|
132
|
+
background: #3072b3;
|
133
|
+
border-color: #518cc6 #518cc6 #2a65a0;
|
134
|
+
color: #fff;
|
135
|
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
|
136
|
+
text-decoration: none;
|
137
|
+
|
138
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#599bdc', endColorstr='#3072b3');
|
139
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#599bdc), to(#3072b3));
|
140
|
+
background: -moz-linear-gradient(top, #599bdc, #3072b3);
|
141
|
+
}
|
@@ -0,0 +1,537 @@
|
|
1
|
+
/*
|
2
|
+
editor.css
|
3
|
+
Wiki editor formatting
|
4
|
+
*/
|
5
|
+
|
6
|
+
a {
|
7
|
+
-moz-outline: none !important;
|
8
|
+
}
|
9
|
+
|
10
|
+
.jaws {
|
11
|
+
/* JAWS should see it, but you can't */
|
12
|
+
display: block;
|
13
|
+
height: 1px;
|
14
|
+
left: -5000px;
|
15
|
+
overflow: hidden;
|
16
|
+
position: absolute;
|
17
|
+
top: -5000px;
|
18
|
+
width: 1px;
|
19
|
+
}
|
20
|
+
|
21
|
+
#gollum-editor {
|
22
|
+
border: 1px solid #e4e4e4;
|
23
|
+
background: #f9f9f9;
|
24
|
+
margin: 1em 0 5em;
|
25
|
+
overflow: hidden;
|
26
|
+
padding: 1em 1em 0.4em;
|
27
|
+
|
28
|
+
border-radius: 1em;
|
29
|
+
-moz-border-radius: 1em;
|
30
|
+
-webkit-border-radius: 1em;
|
31
|
+
}
|
32
|
+
|
33
|
+
.ie #gollum-editor {
|
34
|
+
padding-bottom: 1em;
|
35
|
+
}
|
36
|
+
|
37
|
+
#gollum-editor form fieldset {
|
38
|
+
border: 0;
|
39
|
+
margin: 0;
|
40
|
+
padding: 0;
|
41
|
+
width: 100%;
|
42
|
+
}
|
43
|
+
|
44
|
+
#gollum-editor .singleline {
|
45
|
+
display: block;
|
46
|
+
margin: 0 0 0.7em 0;
|
47
|
+
overflow: hidden;
|
48
|
+
}
|
49
|
+
|
50
|
+
#gollum-editor .singleline input {
|
51
|
+
background: #fff;
|
52
|
+
border: 1px solid #ddd;
|
53
|
+
color: #000;
|
54
|
+
font-size: 1.3em;
|
55
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
56
|
+
line-height: 1.8em;
|
57
|
+
margin: 1em 0 0.4em;
|
58
|
+
padding: 0.5em;
|
59
|
+
width: 98%;
|
60
|
+
}
|
61
|
+
|
62
|
+
#gollum-editor .singleline input.ph {
|
63
|
+
color: #999;
|
64
|
+
}
|
65
|
+
|
66
|
+
#gollum-editor-title-field input#gollum-editor-page-title {
|
67
|
+
font-weight: bold;
|
68
|
+
margin-top: 0;
|
69
|
+
}
|
70
|
+
|
71
|
+
#gollum-editor-title-field.active {
|
72
|
+
border-bottom: 1px solid #ddd;
|
73
|
+
display: block;
|
74
|
+
margin: 0 0 0.3em 0;
|
75
|
+
padding: 0 0 0.5em 0;
|
76
|
+
}
|
77
|
+
|
78
|
+
#gollum-editor-title-field input#gollum-editor-page-title.ph {
|
79
|
+
color: #000;
|
80
|
+
}
|
81
|
+
|
82
|
+
/* @control editor-view-tab */
|
83
|
+
#gollum-editor #gollum-editor-type-switcher {
|
84
|
+
display: none;
|
85
|
+
}
|
86
|
+
|
87
|
+
/* @control function-bar */
|
88
|
+
#gollum-editor #gollum-editor-function-bar {
|
89
|
+
border-bottom: 1px solid #ddd;
|
90
|
+
overflow: hidden;
|
91
|
+
padding: 0;
|
92
|
+
}
|
93
|
+
|
94
|
+
|
95
|
+
#gollum-editor-title-field + #gollum-editor-function-bar {
|
96
|
+
margin-top: 0.6em;
|
97
|
+
}
|
98
|
+
|
99
|
+
#gollum-editor #gollum-editor-function-bar #gollum-editor-function-buttons {
|
100
|
+
display: none;
|
101
|
+
}
|
102
|
+
|
103
|
+
#gollum-editor #gollum-editor-function-bar.active #gollum-editor-function-buttons {
|
104
|
+
display: block;
|
105
|
+
float: left;
|
106
|
+
overflow: hidden;
|
107
|
+
padding: 0 0 1.1em 0;
|
108
|
+
}
|
109
|
+
|
110
|
+
#gollum-editor #gollum-editor-function-bar a.function-button {
|
111
|
+
background: #f7f7f7;
|
112
|
+
border: 1px solid #ddd;
|
113
|
+
color: #333;
|
114
|
+
display: block;
|
115
|
+
float: left;
|
116
|
+
height: 25px;
|
117
|
+
overflow: hidden;
|
118
|
+
margin: 0.2em 0.5em 0 0;
|
119
|
+
/* text-indent: -5000px; */
|
120
|
+
text-shadow: 0 1px 0 #fff;
|
121
|
+
width: 25px;
|
122
|
+
|
123
|
+
border-radius: 0.3em;
|
124
|
+
-moz-border-radius: 0.3em;
|
125
|
+
-webkit-border-radius: 0.3em;
|
126
|
+
|
127
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f4f4f4', endColorstr='#ececec');
|
128
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#ececec));
|
129
|
+
background: -moz-linear-gradient(top, #f4f4f4, #ececec);
|
130
|
+
}
|
131
|
+
|
132
|
+
#gollum-editor #gollum-editor-function-bar a.function-button:hover {
|
133
|
+
color: #fff;
|
134
|
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
|
135
|
+
text-decoration: none;
|
136
|
+
|
137
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#599bdc', endColorstr='#3072b3');
|
138
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#599bdc), to(#3072b3));
|
139
|
+
background: -moz-linear-gradient(top, #599bdc, #3072b3);
|
140
|
+
}
|
141
|
+
|
142
|
+
#gollum-editor #gollum-editor-function-bar a span {
|
143
|
+
background-image: url(../images/icon-sprite.png);
|
144
|
+
background-repeat: no-repeat;
|
145
|
+
display: block;
|
146
|
+
height: 25px;
|
147
|
+
overflow: hidden;
|
148
|
+
text-indent: -5000px;
|
149
|
+
width: 25px;
|
150
|
+
}
|
151
|
+
|
152
|
+
a#function-bold span { background-position: 0 0; }
|
153
|
+
a#function-italic span { background-position: -27px 0; }
|
154
|
+
a#function-underline span { background-position: -54px 0; }
|
155
|
+
a#function-code span { background-position: -82px 0; }
|
156
|
+
a#function-ul span { background-position: -109px 0; }
|
157
|
+
a#function-ol span { background-position: -136px 0; }
|
158
|
+
a#function-blockquote span { background-position: -163px 0; }
|
159
|
+
a#function-hr span { background-position: -190px 0; }
|
160
|
+
a#function-h1 span { background-position: -217px 0; }
|
161
|
+
a#function-h2 span { background-position: -244px 0; }
|
162
|
+
a#function-h3 span { background-position: -271px 0; }
|
163
|
+
a#function-link span { background-position: -298px 0; }
|
164
|
+
a#function-image span { background-position: -324px 0; }
|
165
|
+
a#function-help span { background-position: -405px 0; }
|
166
|
+
|
167
|
+
a#function-bold:hover span { background-position: 0 -28px; }
|
168
|
+
a#function-italic:hover span { background-position: -27px -28px; }
|
169
|
+
a#function-underline:hover span { background-position: -54px -28px; }
|
170
|
+
a#function-code:hover span { background-position: -82px -28px; }
|
171
|
+
a#function-ul:hover span { background-position: -109px -28px; }
|
172
|
+
a#function-ol:hover span { background-position: -136px -28px; }
|
173
|
+
a#function-blockquote:hover span { background-position: -163px -28px; }
|
174
|
+
a#function-hr:hover span { background-position: -190px -28px; }
|
175
|
+
a#function-h1:hover span { background-position: -217px -28px; }
|
176
|
+
a#function-h2:hover span { background-position: -244px -28px; }
|
177
|
+
a#function-h3:hover span { background-position: -271px -28px; }
|
178
|
+
a#function-link:hover span { background-position: -298px -28px; }
|
179
|
+
a#function-image:hover span { background-position: -324px -28px; }
|
180
|
+
a#function-help:hover span { background-position: -405px -28px; }
|
181
|
+
|
182
|
+
|
183
|
+
#gollum-editor #gollum-editor-function-bar a.disabled {
|
184
|
+
display: none;
|
185
|
+
}
|
186
|
+
|
187
|
+
#gollum-editor #gollum-editor-function-bar span.function-divider {
|
188
|
+
display: block;
|
189
|
+
float: left;
|
190
|
+
width: 0.5em;
|
191
|
+
}
|
192
|
+
|
193
|
+
#gollum-editor #gollum-editor-function-bar #gollum-editor-format-selector {
|
194
|
+
overflow: hidden;
|
195
|
+
padding: 0 0 1.1em 0;
|
196
|
+
}
|
197
|
+
|
198
|
+
#gollum-editor #gollum-editor-function-bar
|
199
|
+
#gollum-editor-format-selector select {
|
200
|
+
background-color: #f9f9f9;
|
201
|
+
border: 1px solid transparent;
|
202
|
+
|
203
|
+
float: right;
|
204
|
+
font-size: 1.1em;
|
205
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
206
|
+
font-weight: bold;
|
207
|
+
line-height: 1.6em;
|
208
|
+
padding: 0.5em 0.7em;
|
209
|
+
margin-bottom: 0;
|
210
|
+
|
211
|
+
|
212
|
+
border-radius: 0.5em;
|
213
|
+
-moz-border-radius: 0.5em;
|
214
|
+
-webkit-border-radius: 0.5em;
|
215
|
+
-moz-outline: none;
|
216
|
+
}
|
217
|
+
|
218
|
+
#gollum-editor #gollum-editor-function-bar
|
219
|
+
#gollum-editor-format-selector select:hover {
|
220
|
+
background-color: #fff;
|
221
|
+
border: 1px solid #ddd;
|
222
|
+
-moz-outline: none;
|
223
|
+
}
|
224
|
+
|
225
|
+
#gollum-editor #gollum-editor-function-bar
|
226
|
+
#gollum-editor-format-selector label {
|
227
|
+
color: #999;
|
228
|
+
float: right;
|
229
|
+
font-size: 1.1em;
|
230
|
+
font-weight: bold;
|
231
|
+
line-height: 1.6em;
|
232
|
+
padding: 0.6em 0.5em 0 0;
|
233
|
+
}
|
234
|
+
|
235
|
+
#gollum-editor #gollum-editor-function-bar
|
236
|
+
#gollum-editor-format-selector label:after {
|
237
|
+
content: ':';
|
238
|
+
}
|
239
|
+
|
240
|
+
|
241
|
+
/* @section form-fields */
|
242
|
+
|
243
|
+
#gollum-editor textarea#gollum-editor-body {
|
244
|
+
background: #fff;
|
245
|
+
border: 1px solid #ddd;
|
246
|
+
font-size: 1.3em;
|
247
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
248
|
+
line-height: 1.8em;
|
249
|
+
margin: 1em 0 0.4em;
|
250
|
+
padding: 0.5em; /* I don't really like mixing pct & em here… */
|
251
|
+
width: 98%;
|
252
|
+
height: 20em;
|
253
|
+
}
|
254
|
+
|
255
|
+
#gollum-editor input#gollum-editor-submit {
|
256
|
+
background-color: #f7f7f7;
|
257
|
+
border: 1px solid #d4d4d4;
|
258
|
+
color: #333;
|
259
|
+
cursor: pointer;
|
260
|
+
display: block;
|
261
|
+
float: left;
|
262
|
+
font-size: 1.2em;
|
263
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
264
|
+
font-weight: bold;
|
265
|
+
margin: 0;
|
266
|
+
padding: 0.4em 1em;
|
267
|
+
|
268
|
+
text-shadow: 0 1px 0 #fff;
|
269
|
+
|
270
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f4f4f4', endColorstr='#ececec');
|
271
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#ececec));
|
272
|
+
background: -moz-linear-gradient(top, #f4f4f4, #ececec);
|
273
|
+
|
274
|
+
border-radius: 3px;
|
275
|
+
-moz-border-radius: 3px;
|
276
|
+
-webkit-border-radius: 3px;
|
277
|
+
}
|
278
|
+
|
279
|
+
.webkit #gollum-editor input#gollum-editor-submit {
|
280
|
+
padding: 0.5em 1em 0.45em;
|
281
|
+
}
|
282
|
+
|
283
|
+
.ie #gollum-editor input#gollum-editor-submit {
|
284
|
+
padding: 0.4em 1em 0.5em;
|
285
|
+
}
|
286
|
+
|
287
|
+
#gollum-editor input#gollum-editor-submit:hover {
|
288
|
+
background: #3072b3;
|
289
|
+
border-color: #518cc6 #518cc6 #2a65a0;
|
290
|
+
color: #fff;
|
291
|
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
|
292
|
+
text-decoration: none;
|
293
|
+
|
294
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#599bdc', endColorstr='#3072b3');
|
295
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#599bdc), to(#3072b3));
|
296
|
+
background: -moz-linear-gradient(top, #599bdc, #3072b3);
|
297
|
+
}
|
298
|
+
|
299
|
+
#gollum-editor .collapsed,
|
300
|
+
#gollum-editor .expanded {
|
301
|
+
border-bottom: 1px solid #ddd;
|
302
|
+
display: block;
|
303
|
+
overflow: hidden;
|
304
|
+
padding: 1em 0 0.5em;
|
305
|
+
}
|
306
|
+
|
307
|
+
#gollum-editor #gollum-editor-body + .collapsed,
|
308
|
+
#gollum-editor #gollum-editor-body + .expanded {
|
309
|
+
border-top: 1px solid #ddd;
|
310
|
+
margin-top: 0.7em;
|
311
|
+
}
|
312
|
+
|
313
|
+
#gollum-editor .collapsed a.button,
|
314
|
+
#gollum-editor .expanded a.button {
|
315
|
+
background: #f7f7f7;
|
316
|
+
border: 1px solid #ddd;
|
317
|
+
color: #333;
|
318
|
+
display: block;
|
319
|
+
float: left;
|
320
|
+
height: 25px;
|
321
|
+
overflow: hidden;
|
322
|
+
margin: 0.2em 0.5em 0.75em 0;
|
323
|
+
text-shadow: 0 1px 0 #fff;
|
324
|
+
width: 25px;
|
325
|
+
|
326
|
+
border-radius: 0.3em;
|
327
|
+
-moz-border-radius: 0.3em;
|
328
|
+
-webkit-border-radius: 0.3em;
|
329
|
+
|
330
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f4f4f4', endColorstr='#ececec');
|
331
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#ececec));
|
332
|
+
background: -moz-linear-gradient(top, #f4f4f4, #ececec);
|
333
|
+
}
|
334
|
+
|
335
|
+
#gollum-editor .collapsed h4,
|
336
|
+
#gollum-editor .expanded h4 {
|
337
|
+
font-size: 1.6em;
|
338
|
+
float: left;
|
339
|
+
margin: 0;
|
340
|
+
padding: 0.4em 0 0 0.3em;
|
341
|
+
text-shadow: 0 -1px 0 #fff;
|
342
|
+
}
|
343
|
+
|
344
|
+
#gollum-editor .collapsed a.button:hover,
|
345
|
+
#gollum-editor .expanded h4 a.button:hover {
|
346
|
+
color: #fff;
|
347
|
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
|
348
|
+
text-decoration: none;
|
349
|
+
|
350
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#599bdc', endColorstr='#3072b3');
|
351
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#599bdc), to(#3072b3));
|
352
|
+
background: -moz-linear-gradient(top, #599bdc, #3072b3);
|
353
|
+
}
|
354
|
+
|
355
|
+
#gollum-editor .collapsed a span,
|
356
|
+
#gollum-editor .expanded a span {
|
357
|
+
background-image: url(../images/icon-sprite.png);
|
358
|
+
background-position: -351px -1px;
|
359
|
+
background-repeat: no-repeat;
|
360
|
+
display: block;
|
361
|
+
height: 25px;
|
362
|
+
overflow: hidden;
|
363
|
+
text-indent: -5000px;
|
364
|
+
width: 25px;
|
365
|
+
}
|
366
|
+
|
367
|
+
#gollum-editor .collapsed a:hover span {
|
368
|
+
background-position: -351px -28px;
|
369
|
+
}
|
370
|
+
|
371
|
+
#gollum-editor .expanded a span {
|
372
|
+
background-position: -378px 0;
|
373
|
+
}
|
374
|
+
|
375
|
+
#gollum-editor .expanded a:hover span {
|
376
|
+
background-position: -378px -28px;
|
377
|
+
}
|
378
|
+
|
379
|
+
#gollum-editor .collapsed textarea {
|
380
|
+
display: none;
|
381
|
+
}
|
382
|
+
|
383
|
+
#gollum-editor .expanded textarea {
|
384
|
+
background-color: #fff;
|
385
|
+
border: 1px solid #ddd;
|
386
|
+
clear: both;
|
387
|
+
display: block;
|
388
|
+
font-size: 1.3em;
|
389
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
390
|
+
height: 7em;
|
391
|
+
line-height: 1.8em;
|
392
|
+
margin: 0.7em 0;
|
393
|
+
padding: 0.5em;
|
394
|
+
width: 98%;
|
395
|
+
}
|
396
|
+
|
397
|
+
/* @control minibutton */
|
398
|
+
|
399
|
+
#gollum-editor a.minibutton,
|
400
|
+
#gollum-editor a.minibutton:visited {
|
401
|
+
background-color: #f7f7f7;
|
402
|
+
border: 1px solid #d4d4d4;
|
403
|
+
color: #333;
|
404
|
+
cursor: pointer;
|
405
|
+
display: block;
|
406
|
+
font-size: 1.2em;
|
407
|
+
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
408
|
+
font-weight: bold;
|
409
|
+
line-height: 1.2em;
|
410
|
+
margin: 0 0 0 0.8em;
|
411
|
+
padding: 0.5em 1em;
|
412
|
+
|
413
|
+
text-shadow: 0 1px 0 #fff;
|
414
|
+
|
415
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f4f4f4', endColorstr='#ececec');
|
416
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#f4f4f4), to(#ececec));
|
417
|
+
background: -moz-linear-gradient(top, #f4f4f4, #ececec);
|
418
|
+
|
419
|
+
border-radius: 3px;
|
420
|
+
-moz-border-radius: 3px;
|
421
|
+
-webkit-border-radius: 3px;
|
422
|
+
}
|
423
|
+
|
424
|
+
#gollum-editor a.minibutton:hover {
|
425
|
+
background: #3072b3;
|
426
|
+
border-color: #518cc6 #518cc6 #2a65a0;
|
427
|
+
color: #fff;
|
428
|
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
|
429
|
+
text-decoration: none;
|
430
|
+
|
431
|
+
filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#599bdc', endColorstr='#3072b3');
|
432
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#599bdc), to(#3072b3));
|
433
|
+
background: -moz-linear-gradient(top, #599bdc, #3072b3);
|
434
|
+
}
|
435
|
+
|
436
|
+
|
437
|
+
#gollum-editor #gollum-editor-preview {
|
438
|
+
float: left;
|
439
|
+
font-weight: normal;
|
440
|
+
padding: left;
|
441
|
+
}
|
442
|
+
|
443
|
+
|
444
|
+
/* @section help */
|
445
|
+
#gollum-editor-help {
|
446
|
+
margin: 0;
|
447
|
+
overflow: hidden;
|
448
|
+
padding: 0;
|
449
|
+
border: 1px solid #ddd;
|
450
|
+
border-width: 0 1px 1px 1px;
|
451
|
+
}
|
452
|
+
|
453
|
+
#gollum-editor-help-parent,
|
454
|
+
#gollum-editor-help-list {
|
455
|
+
display: block;
|
456
|
+
float: left;
|
457
|
+
height: 17em;
|
458
|
+
list-style-type: none;
|
459
|
+
overflow: auto;
|
460
|
+
margin: 0;
|
461
|
+
padding: 1em 0;
|
462
|
+
width: 18%;
|
463
|
+
}
|
464
|
+
|
465
|
+
#gollum-editor-help-parent {
|
466
|
+
border-right: 1px solid #eee;
|
467
|
+
}
|
468
|
+
|
469
|
+
#gollum-editor-help-list {
|
470
|
+
background: #fafafa;
|
471
|
+
border-right: 1px solid #eee;
|
472
|
+
}
|
473
|
+
|
474
|
+
#gollum-editor-help-parent li,
|
475
|
+
#gollum-editor-help-list li {
|
476
|
+
font-size: 1.2em;
|
477
|
+
line-height: 1.6em;
|
478
|
+
margin: 0;
|
479
|
+
padding: 0;
|
480
|
+
}
|
481
|
+
|
482
|
+
#gollum-editor-help-parent li a,
|
483
|
+
#gollum-editor-help-list li a {
|
484
|
+
border: 1px solid transparent;
|
485
|
+
border-width: 1px 0;
|
486
|
+
display: block;
|
487
|
+
font-weight: bold;
|
488
|
+
height: 100%;
|
489
|
+
width: auto;
|
490
|
+
padding: 0.2em 1em;
|
491
|
+
text-shadow: 0 -1px 0 #fff;
|
492
|
+
}
|
493
|
+
|
494
|
+
#gollum-editor-help-parent li a:hover,
|
495
|
+
#gollum-editor-help-list li a:hover {
|
496
|
+
background: #fff;
|
497
|
+
border-color: #f0f0f0;
|
498
|
+
text-decoration: none;
|
499
|
+
|
500
|
+
box-shadow: none;
|
501
|
+
}
|
502
|
+
|
503
|
+
#gollum-editor-help-parent li a.selected,
|
504
|
+
#gollum-editor-help-list li a.selected {
|
505
|
+
border: 1px solid #eee;
|
506
|
+
border-bottom-color: #e7e7e7;
|
507
|
+
border-width: 1px 0;
|
508
|
+
background: #fff;
|
509
|
+
color: #000;
|
510
|
+
|
511
|
+
box-shadow: 0 1px 2px #f0f0f0;
|
512
|
+
}
|
513
|
+
|
514
|
+
#gollum-editor-help-wrapper {
|
515
|
+
background: #fff;
|
516
|
+
overflow: auto;
|
517
|
+
height: 17em;
|
518
|
+
padding: 1em;
|
519
|
+
}
|
520
|
+
|
521
|
+
#gollum-editor-help-content {
|
522
|
+
font-size: 1.2em;
|
523
|
+
margin: 0 1em 0 0.5em;
|
524
|
+
padding: 0;
|
525
|
+
line-height: 1.8em;
|
526
|
+
}
|
527
|
+
|
528
|
+
#gollum-editor-help-content p {
|
529
|
+
margin: 0 0 1em 0;
|
530
|
+
padding: 0;
|
531
|
+
}
|
532
|
+
|
533
|
+
/* IE */
|
534
|
+
.ie #gollum-editor .singleline input {
|
535
|
+
padding-top: 0.25em;
|
536
|
+
padding-bottom: 0.75em;
|
537
|
+
}
|