Add header.

This commit is contained in:
bootstraponline
2012-05-05 13:49:01 -06:00
parent 9a1dddaccf
commit e9a9eb1779
8 changed files with 57 additions and 5 deletions
+7 -1
View File
@@ -106,6 +106,13 @@ are named `_Sidebar.ext` where the extension is one of the supported formats.
Sidebars affect all pages in their directory and any subdirectories that do not
have a sidebar file of their own.
## HEADER FILES
Header files allow you to add a simple header to your wiki. Header files must
be named `_Header.ext` where the extension is one of the supported formats.
Like sidebars, headers affect all pages in their directory and any
subdirectories that do not have a header file of their own.
## FOOTER FILES
Footer files allow you to add a simple footer to your wiki. Footer files must
@@ -113,7 +120,6 @@ be named `_Footer.ext` where the extension is one of the supported formats.
Like sidebars, footers affect all pages in their directory and any
subdirectories that do not have a footer file of their own.
## HTML SANITIZATION
For security and compatibility reasons Gollum wikis may not contain custom CSS
+1
View File
@@ -63,6 +63,7 @@ module Precious
update_wiki_page(wiki, page, params[:content], commit, name,
params[:format])
update_wiki_page(wiki, page.header, params[:header], commit) if params[:header]
update_wiki_page(wiki, page.footer, params[:footer], commit) if params[:footer]
update_wiki_page(wiki, page.sidebar, params[:sidebar], commit) if params[:sidebar]
committer.commit
@@ -20,6 +20,13 @@
<div id="wiki-content">
<div class="wrap {{#has_footer}} has-footer {{/has_footer}} {{#has_sidebar}} has-rightbar{{/has_sidebar}}">
<div id="wiki-body" class="gollum-{{format}}-content">
{{#has_header}}
<div id="wiki-header" class="gollum-{{header_format}}-content">
<div id="header-content">
{{{header_content}}}
</div>
</div>
{{/has_header}}
<div id="template">
{{{content}}}
</div>
+5
View File
@@ -27,6 +27,11 @@ module Precious
!!@footer
end
def has_header
@header = (@page.header || false) if @header.nil? && @page
!!@header
end
def has_sidebar
@sidebar = (@page.sidebar || false) if @sidebar.nil? && @page
!!@sidebar
+11
View File
@@ -13,6 +13,17 @@ module Precious
@name.gsub('-', ' ')
end
def header
if @header.nil?
if page = @page.header
@header = page.raw_data
else
@header = false
end
end
@header
end
def footer
if @footer.nil?
if page = @page.footer
+14 -1
View File
@@ -1,7 +1,7 @@
module Precious
module Views
class Page < Layout
attr_reader :content, :page, :footer
attr_reader :content, :page, :header, :footer
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
DEFAULT_AUTHOR = 'you'
@@ -27,6 +27,19 @@ module Precious
@editable
end
def has_header
@header = (@page.header || false) if @header.nil?
!!@header
end
def header_content
has_header && @header.formatted_data
end
def header_format
has_header && @header.format.to_s
end
def has_footer
@footer = (@page.footer || false) if @footer.nil?
!!@footer
+8 -1
View File
@@ -99,7 +99,7 @@ module Gollum
# Returns a newly initialized Gollum::Page.
def initialize(wiki)
@wiki = wiki
@blob = @footer = @sidebar = nil
@blob = @header = @footer = @sidebar = nil
end
# Public: The on-disk filename of the page including extension.
@@ -209,6 +209,13 @@ module Gollum
end
end
# Public: The header Page.
#
# Returns the header Page or nil if none exists.
def header
@header ||= find_sub_page(:header)
end
# Public: The footer Page.
#
# Returns the footer Page or nil if none exists.
+4 -2
View File
@@ -29,13 +29,13 @@ context "Frontend" do
assert_not_equal page_1.version.sha, page_2.version.sha
end
test "edits page footer and sidebar" do
test "edits page header footer and sidebar" do
commits = @wiki.repo.commits('master').size
page_1 = @wiki.page('A')
foot_1 = page_1.footer
side_1 = page_1.sidebar
post "/edit/A",
post "/edit/A", :header => 'header',
:footer => 'footer', :page => "A", :sidebar => 'sidebar', :message => 'def'
follow_redirect!
assert_equal "/A", last_request.fullpath
@@ -43,10 +43,12 @@ context "Frontend" do
@wiki.clear_cache
page_2 = @wiki.page(page_1.name)
header_2 = page_2.header
foot_2 = page_2.footer
side_2 = page_2.sidebar
assert_equal page_1.raw_data, page_2.raw_data
assert_equal 'header', header_2.raw_data
assert_equal 'footer', foot_2.raw_data
assert_equal 'def', foot_2.version.message
assert_not_equal foot_1.version.sha, foot_2.version.sha