Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a5e19e3841 | |||
| fdfcbb30e0 | |||
| 9c2f8dfeba | |||
| 8e35688b17 | |||
| 860e8b2ebd | |||
| 0d2ab11604 | |||
| ddc7dba0a2 | |||
| bc3503f374 | |||
| 2dfe103687 |
@@ -45,5 +45,6 @@ jobs:
|
|||||||
tags: ${{ env.DEPLOY_NAME }}
|
tags: ${{ env.DEPLOY_NAME }}
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
platforms: linux/amd64, linux/arm64
|
||||||
- name: Image digest
|
- name: Image digest
|
||||||
run: echo ${{ steps.docker_build.outputs.digest }}
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ github.ref }}
|
tag_name: ${{ github.ref_name }}
|
||||||
release_name: Release ${{ github.ref }}
|
release_name: Release ${{ github.ref_name }}
|
||||||
draft: false
|
draft: true
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
body_path: "LATEST_CHANGES.md"
|
||||||
|
|||||||
+2
-1
@@ -32,7 +32,8 @@ COPY --from=builder /usr/local/bundle/ /usr/local/bundle/
|
|||||||
|
|
||||||
RUN apk add \
|
RUN apk add \
|
||||||
bash \
|
bash \
|
||||||
git
|
git \
|
||||||
|
libc6-compat
|
||||||
|
|
||||||
VOLUME /wiki
|
VOLUME /wiki
|
||||||
WORKDIR /wiki
|
WORKDIR /wiki
|
||||||
|
|||||||
+16
-3
@@ -1,12 +1,25 @@
|
|||||||
# 5.2.3 2021-04-18
|
# 5.3.0 / 2022-05-25
|
||||||
|
|
||||||
|
* Feature: allow for overriding only specific Mustache templates/partials (@beporter)
|
||||||
|
* Feature: Add option to show browser's local time (@NikitaIvanovV)
|
||||||
|
* Improvement: presentation on mobile devises (@benjaminwil)
|
||||||
|
* Improvement: Add page context to template filter. #1603 (@tevino)
|
||||||
|
* Fix: restore normalize check on file upload (@manofstick)
|
||||||
|
* Fix mathjax on edit and create pages. #1772 (@fhchl)
|
||||||
|
* Fix utf-8 issues: #1721 #1758 #1801 (@basking2, @dometto)
|
||||||
|
* Fix an IME rendering issue. #1735 (@yy0931)
|
||||||
|
* Fix broken history button when viewing historical deleted file. (@NikitaIvanovV)
|
||||||
|
* Fix: non-ascii characters in page names are not rendered correctly in the preview tab of the "Edit" page. #1739 (@yy0931)
|
||||||
|
* Fix: anchors and header display on JRuby. #1779
|
||||||
|
# 5.2.3 / 2021-04-18
|
||||||
|
|
||||||
* Fix bug preventing page titles from being displayed
|
* Fix bug preventing page titles from being displayed
|
||||||
|
|
||||||
# 5.2.1 2021-02-25
|
# 5.2.1 / 2021-02-25
|
||||||
|
|
||||||
* Fix include call to a missing asset (@benjaminwil). This caused slow first page loads on JRuby.
|
* Fix include call to a missing asset (@benjaminwil). This caused slow first page loads on JRuby.
|
||||||
|
|
||||||
# 5.2 2021-02-24
|
# 5.2 / 2021-02-24
|
||||||
|
|
||||||
* Improved styling and Primer upgrade (@benjaminwil)
|
* Improved styling and Primer upgrade (@benjaminwil)
|
||||||
* Add redirect to rename commit (@ViChyavIn)
|
* Add redirect to rename commit (@ViChyavIn)
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# 5.3.0 / 2022-05-24
|
||||||
|
|
||||||
|
* Feature: allow for overriding only specific Mustache templates/partials (@beporter)
|
||||||
|
* Feature: Add option to show browser's local time (@NikitaIvanovV)
|
||||||
|
* Improvement: presentation on mobile devises (@benjaminwil)
|
||||||
|
* Improvement: Add page context to template filter. #1603 (@tevino)
|
||||||
|
* Fix: restore normalize check on file upload (@manofstick)
|
||||||
|
* Fix mathjax on edit and create pages. #1772 (@fhchl)
|
||||||
|
* Fix utf-8 issues: #1721 #1758 #1801 (@basking2, @dometto)
|
||||||
|
* Fix an IME rendering issue. #1735 (@yy0931)
|
||||||
|
* Fix broken history button when viewing historical deleted file. (@NikitaIvanovV)
|
||||||
|
* Fix: non-ascii characters in page names are not rendered correctly in the preview tab of the "Edit" page. #1739 (@yy0931)
|
||||||
|
* Fix: anchors and header display on JRuby. #1779
|
||||||
@@ -5,21 +5,24 @@ gollum -- A git-based Wiki
|
|||||||

|

|
||||||
[](https://www.codetriage.com/gollum/gollum)
|
[](https://www.codetriage.com/gollum/gollum)
|
||||||
[](https://dometto-cuttingedge.herokuapp.com/github/gollum/gollum/info)
|
[](https://dometto-cuttingedge.herokuapp.com/github/gollum/gollum/info)
|
||||||
|
[](https://hub.docker.com/r/gollumwiki/gollum)
|
||||||
|
|
||||||
|
See the [wiki](https://github.com/gollum/gollum/wiki) for extensive documentation, along with [screenshots](https://github.com/gollum/gollum/wiki/Screenshots) of Gollum's features.
|
||||||
**Gollum version 5.0 is out!** See [here](https://github.com/gollum/gollum/wiki/5.0-release-notes) for a list of changes and new features compared to Gollum version 4.x, and see some [Screenshots](https://github.com/gollum/gollum/wiki/Screenshots) of Gollum's features.
|
|
||||||
|
|
||||||
## DESCRIPTION
|
## DESCRIPTION
|
||||||
|
|
||||||
Gollum is a simple wiki system built on top of Git. A Gollum Wiki is simply a git repository of a specific nature:
|
Gollum is a simple wiki system built on top of Git. A Gollum Wiki is simply a git repository of a specific nature:
|
||||||
|
|
||||||
* A Gollum repository's contents are human-editable text or markup files.
|
* A Gollum repository's contents are human-editable text or markup files.
|
||||||
* Pages may be organized into directories any way you choose.
|
* Pages may be organized into directories any way you choose.
|
||||||
* Other content can also be included, for example images, PDFs and headers/footers for your pages.
|
* Other content can also be included, for example images, PDFs and headers/footers for your pages.
|
||||||
* Gollum pages:
|
* Gollum pages:
|
||||||
* May be written in a variety of [markups](#markups).
|
* May be written in a variety of [markups](#markups).
|
||||||
* Can be edited with your favourite system editor or IDE (changes will be visible after committing) or with the built-in web interface.
|
* Can be edited with your favourite editor (changes will be visible after committing) or with the built-in web interface.
|
||||||
* Can be displayed in all versions, reverted, etc.
|
* Can be displayed in all versions, reverted, etc.
|
||||||
* Gollum strives to be compatible with GitHub wikis (see `--lenient-tag-lookup`)
|
* Gollum strives to be [compatible](https://github.com/gollum/gollum/wiki/5.0-release-notes#compatibility-option) with [GitHub](https://docs.github.com/en/communities/documenting-your-project-with-wikis/about-wikis) and [GitLab](https://docs.gitlab.com/ee/user/project/wiki/#create-or-edit-wiki-pages-locally) wikis.
|
||||||
|
* Just clone your GitHub/GitLab wiki and view and edit it locally!
|
||||||
|
|
||||||
* Gollum supports advanced functionality like:
|
* Gollum supports advanced functionality like:
|
||||||
* [UML diagrams](https://github.com/gollum/gollum/wiki#plantuml-diagrams)
|
* [UML diagrams](https://github.com/gollum/gollum/wiki#plantuml-diagrams)
|
||||||
* [BibTeX and Citation support](https://github.com/gollum/gollum/wiki/BibTeX-and-Citations)
|
* [BibTeX and Citation support](https://github.com/gollum/gollum/wiki/BibTeX-and-Citations)
|
||||||
@@ -32,16 +35,17 @@ Gollum is a simple wiki system built on top of Git. A Gollum Wiki is simply a gi
|
|||||||
|
|
||||||
### SYSTEM REQUIREMENTS
|
### SYSTEM REQUIREMENTS
|
||||||
|
|
||||||
Gollum runs on Unix-like systems using its [adapter](https://github.com/gollum/rugged_adapter) for [rugged](https://github.com/libgit2/rugged) by default. You can also run Gollum on [JRuby](https://github.com/jruby/jruby) via its [adapter](https://github.com/repotag/gollum-lib_rjgit_adapter) for [RJGit](https://github.com/repotag/rjgit/). On Windows, Gollum runs only on JRuby.
|
Gollum runs on Unix-like systems using its default [adapter](https://github.com/gollum/rugged_adapter) for [rugged](https://github.com/libgit2/rugged). You can also run Gollum on [JRuby](https://github.com/jruby/jruby) via its [adapter](https://github.com/repotag/gollum-lib_rjgit_adapter) for [RJGit](https://github.com/repotag/rjgit/). On Windows, Gollum runs only on JRuby.
|
||||||
|
|
||||||
## INSTALLATION
|
## INSTALLATION
|
||||||
|
|
||||||
1. Ruby is best installed either via [RVM](https://rvm.io/) or a package manager of choice.
|
### As a Ruby Gem
|
||||||
2. Gollum is best installed via RubyGems:
|
|
||||||
```
|
|
||||||
[sudo] gem install gollum
|
|
||||||
```
|
|
||||||
|
|
||||||
|
Ruby is best installed either via [RVM](https://rvm.io/) or a package manager of choice. Then simply:
|
||||||
|
```
|
||||||
|
gem install gollum
|
||||||
|
```
|
||||||
|
|
||||||
Installation examples for individual systems can be seen [here](https://github.com/gollum/gollum/wiki/Installation).
|
Installation examples for individual systems can be seen [here](https://github.com/gollum/gollum/wiki/Installation).
|
||||||
|
|
||||||
To run, simply:
|
To run, simply:
|
||||||
@@ -49,24 +53,30 @@ To run, simply:
|
|||||||
1. Run: `gollum /path/to/wiki` where `/path/to/wiki` is an initialized Git repository.
|
1. Run: `gollum /path/to/wiki` where `/path/to/wiki` is an initialized Git repository.
|
||||||
2. Open `http://localhost:4567` in your browser.
|
2. Open `http://localhost:4567` in your browser.
|
||||||
|
|
||||||
|
### Via Docker
|
||||||
|
|
||||||
|
See [here](https://github.com/gollum/gollum/wiki/Gollum-via-Docker) for instructions on how to run Gollum via Docker.
|
||||||
|
|
||||||
|
### Misc
|
||||||
|
|
||||||
See [below](#running-from-source) for information on running Gollum from source, as a Rack app, and more.
|
See [below](#running-from-source) for information on running Gollum from source, as a Rack app, and more.
|
||||||
|
|
||||||
### Markups
|
## MARKUPS
|
||||||
|
|
||||||
Gollum allows using different markup languages on different wiki pages. It presently ships with support for the following markups:
|
Gollum allows using different markup languages on different wiki pages. It presently ships with support for the following markups:
|
||||||
* [Markdown](http://daringfireball.net/projects/markdown/syntax) (see [below](#Markdown-flavors) for more information on Markdown flavors)
|
* [Markdown](http://daringfireball.net/projects/markdown/syntax) (see [below](#Markdown-flavors) for more information on Markdown flavors)
|
||||||
* [RDoc](http://rdoc.sourceforge.net/)
|
* [RDoc](http://rdoc.sourceforge.net/)
|
||||||
|
|
||||||
You can easily activate support for other markups by installing additional renderers (any that are supported by [github-markup](https://github.com/github/markup)):
|
You can easily activate support for other markups by installing additional renderers (any that are supported by [github-markup](https://github.com/github/markup)):
|
||||||
* [AsciiDoc](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/) -- `[sudo] gem install asciidoctor`
|
* [AsciiDoc](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/) -- `gem install asciidoctor`
|
||||||
* [Creole](http://www.wikicreole.org/wiki/CheatSheet) -- `[sudo] gem install creole`
|
* [Creole](http://www.wikicreole.org/wiki/CheatSheet) -- `gem install creole`
|
||||||
* [MediaWiki](http://www.mediawiki.org/wiki/Help:Formatting) -- `[sudo] gem install wikicloth`
|
* [MediaWiki](http://www.mediawiki.org/wiki/Help:Formatting) -- `gem install wikicloth`
|
||||||
* [Org](http://orgmode.org/worg/dev/org-syntax.html) -- `[sudo] gem install org-ruby`
|
* [Org](http://orgmode.org/worg/dev/org-syntax.html) -- `gem install org-ruby`
|
||||||
* [Pod](http://perldoc.perl.org/perlpod.html) -- requires Perl >= 5.10 (the `perl` command must be available on your command line)
|
* [Pod](http://perldoc.perl.org/perlpod.html) -- requires Perl >= 5.10 (the `perl` command must be available on your command line)
|
||||||
* Lower versions should install `Pod::Simple` from CPAN.
|
* Lower versions should install `Pod::Simple` from CPAN.
|
||||||
* [ReStructuredText](http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html) -- requires python >= 2 (the `python2` command must be available on your command line)
|
* [ReStructuredText](http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html) -- requires python >= 3
|
||||||
* Note that Gollum will also need you to install `docutils` for your Python 2.
|
* Note that Gollum will also need you to install `docutils` for python
|
||||||
* [Textile](http://redcloth.org/hobix.com/textile/quick.html) -- `[sudo] gem install RedCloth`
|
* [Textile](http://redcloth.org/hobix.com/textile/quick.html) -- `gem install RedCloth`
|
||||||
|
|
||||||
### Markdown flavors
|
### Markdown flavors
|
||||||
|
|
||||||
@@ -90,10 +100,6 @@ Gollum can also be run with any [rack-compatible web server](https://github.com/
|
|||||||
|
|
||||||
Gollum can also be run alongside a CAS (Central Authentication Service) SSO (single sign-on) server. With a bit of tweaking, this adds basic user-support to Gollum. To see an example and an explanation, navigate [over here](https://github.com/gollum/gollum/wiki/Gollum-via-Rack-and-CAS-SSO).
|
Gollum can also be run alongside a CAS (Central Authentication Service) SSO (single sign-on) server. With a bit of tweaking, this adds basic user-support to Gollum. To see an example and an explanation, navigate [over here](https://github.com/gollum/gollum/wiki/Gollum-via-Rack-and-CAS-SSO).
|
||||||
|
|
||||||
### Docker
|
|
||||||
|
|
||||||
Gollum can also be run via [Docker](https://www.docker.com/). More on that [over here](https://github.com/gollum/gollum/wiki/Gollum-via-Docker).
|
|
||||||
|
|
||||||
### Service
|
### Service
|
||||||
|
|
||||||
Gollum can also be run as a service. More on that [over here](https://github.com/gollum/gollum/wiki/Gollum-as-a-service).
|
Gollum can also be run as a service. More on that [over here](https://github.com/gollum/gollum/wiki/Gollum-as-a-service).
|
||||||
@@ -106,7 +112,7 @@ Gollum comes with the following command line options:
|
|||||||
| ----------------- | --------- | ----------- |
|
| ----------------- | --------- | ----------- |
|
||||||
| --host | [HOST] | Specify the hostname or IP address to listen on. Default: '0.0.0.0'.<sup>1</sup> |
|
| --host | [HOST] | Specify the hostname or IP address to listen on. Default: '0.0.0.0'.<sup>1</sup> |
|
||||||
| --port | [PORT] | Specify the port to bind Gollum with. Default: `4567`. |
|
| --port | [PORT] | Specify the port to bind Gollum with. Default: `4567`. |
|
||||||
| --config | [FILE] | Specify path to Gollum's configuration file. |
|
| --config | [FILE] | Specify path to Gollum's [configuration file](#Config-file). |
|
||||||
| --ref | [REF] | Specify the git branch to serve. Default: `master`. |
|
| --ref | [REF] | Specify the git branch to serve. Default: `master`. |
|
||||||
| --bare | none | Tell Gollum that the git repository should be treated as bare. |
|
| --bare | none | Tell Gollum that the git repository should be treated as bare. |
|
||||||
| --adapter | [ADAPTER] | Launch Gollum using a specific git adapter. Default: `rugged`.<sup>2</sup> |
|
| --adapter | [ADAPTER] | Launch Gollum using a specific git adapter. Default: `rugged`.<sup>2</sup> |
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
require 'rake'
|
require 'rake'
|
||||||
|
require 'date'
|
||||||
|
require 'tempfile'
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
#
|
#
|
||||||
@@ -7,6 +9,10 @@ require 'rake'
|
|||||||
#
|
#
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
|
def date
|
||||||
|
Time.now.strftime("%Y-%m-%d")
|
||||||
|
end
|
||||||
|
|
||||||
def name
|
def name
|
||||||
@name ||= Dir['*.gemspec'].first.split('.').first
|
@name ||= Dir['*.gemspec'].first.split('.').first
|
||||||
end
|
end
|
||||||
@@ -16,6 +22,14 @@ def version
|
|||||||
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def latest_changes_file
|
||||||
|
'LATEST_CHANGES.md'
|
||||||
|
end
|
||||||
|
|
||||||
|
def history_file
|
||||||
|
'HISTORY.md'
|
||||||
|
end
|
||||||
|
|
||||||
# assumes x.y.z all digit version
|
# assumes x.y.z all digit version
|
||||||
def next_version
|
def next_version
|
||||||
# x.y.z
|
# x.y.z
|
||||||
@@ -105,6 +119,7 @@ task :release => :build do
|
|||||||
puts "You must be on the master branch to release!"
|
puts "You must be on the master branch to release!"
|
||||||
exit!
|
exit!
|
||||||
end
|
end
|
||||||
|
Rake::Task[:changelog].execute
|
||||||
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
||||||
sh "git pull --rebase origin master"
|
sh "git pull --rebase origin master"
|
||||||
sh "git tag v#{version}"
|
sh "git tag v#{version}"
|
||||||
@@ -167,6 +182,46 @@ task :validate do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
desc 'Build changlog'
|
||||||
|
task :changelog do
|
||||||
|
[latest_changes_file, history_file].each do |f|
|
||||||
|
unless File.exists?(f)
|
||||||
|
puts "#{f} does not exist but is required to build a new release."
|
||||||
|
exit!
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
latest_changes = File.open(latest_changes_file)
|
||||||
|
version_pattern = "# #{version}"
|
||||||
|
|
||||||
|
if !`grep "#{version_pattern}" #{history_file}`.empty?
|
||||||
|
puts "#{version} is already described in #{history_file}"
|
||||||
|
exit!
|
||||||
|
end
|
||||||
|
|
||||||
|
begin
|
||||||
|
unless latest_changes.readline.chomp! =~ %r{#{version_pattern}}
|
||||||
|
puts "#{latest_changes_file} should begin with '#{version_pattern}'"
|
||||||
|
exit!
|
||||||
|
end
|
||||||
|
rescue EOFError
|
||||||
|
puts "#{latest_changes_file} is empty!"
|
||||||
|
exit!
|
||||||
|
end
|
||||||
|
|
||||||
|
body = latest_changes.read
|
||||||
|
body.scan(/\s*#\s+\d\.\d.*/) do |match|
|
||||||
|
puts "#{latest_changes_file} may not contain multiple markdown headers!"
|
||||||
|
exit!
|
||||||
|
end
|
||||||
|
|
||||||
|
temp = Tempfile.new
|
||||||
|
temp.puts("#{version_pattern} / #{date}\n#{body}\n")
|
||||||
|
temp.close
|
||||||
|
`cat #{history_file} >> #{temp.path}`
|
||||||
|
`cat #{temp.path} > #{history_file}`
|
||||||
|
end
|
||||||
|
|
||||||
desc 'Precompile assets'
|
desc 'Precompile assets'
|
||||||
task :precompile do
|
task :precompile do
|
||||||
require './lib/gollum/app.rb'
|
require './lib/gollum/app.rb'
|
||||||
|
|||||||
+16
-8
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
|
|||||||
s.required_ruby_version = '>= 2.6'
|
s.required_ruby_version = '>= 2.6'
|
||||||
|
|
||||||
s.name = 'gollum'
|
s.name = 'gollum'
|
||||||
s.version = '5.2.3'
|
s.version = '5.3.0'
|
||||||
s.license = 'MIT'
|
s.license = 'MIT'
|
||||||
|
|
||||||
s.summary = 'A simple, Git-powered wiki.'
|
s.summary = 'A simple, Git-powered wiki.'
|
||||||
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|||||||
s.rdoc_options = ['--charset=UTF-8']
|
s.rdoc_options = ['--charset=UTF-8']
|
||||||
s.extra_rdoc_files = %w[README.md LICENSE]
|
s.extra_rdoc_files = %w[README.md LICENSE]
|
||||||
|
|
||||||
|
s.add_dependency 'rdoc', '~> 6'
|
||||||
s.add_dependency 'gollum-lib', '~> 5.1'
|
s.add_dependency 'gollum-lib', '~> 5.1'
|
||||||
s.add_dependency 'kramdown', '~> 2.3'
|
s.add_dependency 'kramdown', '~> 2.3'
|
||||||
s.add_dependency 'kramdown-parser-gfm', '~> 1.1.0'
|
s.add_dependency 'kramdown-parser-gfm', '~> 1.1.0'
|
||||||
@@ -47,8 +48,10 @@ Gem::Specification.new do |s|
|
|||||||
# = MANIFEST =
|
# = MANIFEST =
|
||||||
s.files = %w[
|
s.files = %w[
|
||||||
CONTRIBUTING.md
|
CONTRIBUTING.md
|
||||||
|
Dockerfile
|
||||||
Gemfile
|
Gemfile
|
||||||
HISTORY.md
|
HISTORY.md
|
||||||
|
LATEST_CHANGES.md
|
||||||
LICENSE
|
LICENSE
|
||||||
README.md
|
README.md
|
||||||
Rakefile
|
Rakefile
|
||||||
@@ -61,20 +64,21 @@ Gem::Specification.new do |s|
|
|||||||
contrib/openrc/init.d/gollum
|
contrib/openrc/init.d/gollum
|
||||||
contrib/systemd/gollum@.service
|
contrib/systemd/gollum@.service
|
||||||
contrib/sysv-debian/init.d/gollum
|
contrib/sysv-debian/init.d/gollum
|
||||||
|
docker-run.sh
|
||||||
gollum.gemspec
|
gollum.gemspec
|
||||||
lib/gollum.rb
|
lib/gollum.rb
|
||||||
lib/gollum/app.rb
|
lib/gollum/app.rb
|
||||||
lib/gollum/assets.rb
|
lib/gollum/assets.rb
|
||||||
lib/gollum/helpers.rb
|
lib/gollum/helpers.rb
|
||||||
lib/gollum/public/assets/.sprockets-manifest-de7bb79aec424e55af1acdcc4237b301.json
|
lib/gollum/public/assets/.sprockets-manifest-160337b312f8e438181baac4aaa37319.json
|
||||||
lib/gollum/public/assets/app-0fd228e26bfbe6fe31a2da268eb0e98e780c1191c1a918adf383377946e9c838.js
|
lib/gollum/public/assets/app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css
|
||||||
lib/gollum/public/assets/app-0fd228e26bfbe6fe31a2da268eb0e98e780c1191c1a918adf383377946e9c838.js.gz
|
lib/gollum/public/assets/app-309be032396e783b13a47df58f389b7c8e11c2b2d42640560b874f677c25f6e5.css.gz
|
||||||
lib/gollum/public/assets/app-ad43ca64b295d8444b10f22ee868f18429268af498f1bc515434878b690e37a2.css
|
lib/gollum/public/assets/app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js
|
||||||
lib/gollum/public/assets/app-ad43ca64b295d8444b10f22ee868f18429268af498f1bc515434878b690e37a2.css.gz
|
lib/gollum/public/assets/app-f05401ee374f0c7f48fc2bc08e30b4f4db705861fd5895ed70998683b383bfb5.js.gz
|
||||||
lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css
|
lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css
|
||||||
lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css.gz
|
lib/gollum/public/assets/criticmarkup-31ae5d3282bbb8e7b7c3c9917e9fb68e3315a6b4a75da6cec48d21b8846905c4.css.gz
|
||||||
lib/gollum/public/assets/editor-db10c8351306e92f1926ba225d0cd9c8e886482b3b9820a85825ec3abab5f1cf.js
|
lib/gollum/public/assets/editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js
|
||||||
lib/gollum/public/assets/editor-db10c8351306e92f1926ba225d0cd9c8e886482b3b9820a85825ec3abab5f1cf.js.gz
|
lib/gollum/public/assets/editor-9881d0c7ae663293f0e3a7e72729eec7e940fa613185c076709b76d292f5703a.js.gz
|
||||||
lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css
|
lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css
|
||||||
lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css.gz
|
lib/gollum/public/assets/print-512498c368be0d3fb1ba105dfa84289ae48380ec9fcbef948bd4e23b0b095bfb.css.gz
|
||||||
lib/gollum/public/gollum/javascript/HOWTO_UPDATE_ACE.md
|
lib/gollum/public/gollum/javascript/HOWTO_UPDATE_ACE.md
|
||||||
@@ -1208,6 +1212,7 @@ Gem::Specification.new do |s|
|
|||||||
lib/gollum/templates/pagination.mustache
|
lib/gollum/templates/pagination.mustache
|
||||||
lib/gollum/templates/search.mustache
|
lib/gollum/templates/search.mustache
|
||||||
lib/gollum/templates/searchbar.mustache
|
lib/gollum/templates/searchbar.mustache
|
||||||
|
lib/gollum/templates/user.mustache
|
||||||
lib/gollum/templates/wiki_content.mustache
|
lib/gollum/templates/wiki_content.mustache
|
||||||
lib/gollum/uri_encode_component.rb
|
lib/gollum/uri_encode_component.rb
|
||||||
lib/gollum/views/commit.rb
|
lib/gollum/views/commit.rb
|
||||||
@@ -1216,9 +1221,11 @@ Gem::Specification.new do |s|
|
|||||||
lib/gollum/views/edit.rb
|
lib/gollum/views/edit.rb
|
||||||
lib/gollum/views/editable.rb
|
lib/gollum/views/editable.rb
|
||||||
lib/gollum/views/error.rb
|
lib/gollum/views/error.rb
|
||||||
|
lib/gollum/views/has_math.rb
|
||||||
lib/gollum/views/has_page.rb
|
lib/gollum/views/has_page.rb
|
||||||
lib/gollum/views/has_user_icons.rb
|
lib/gollum/views/has_user_icons.rb
|
||||||
lib/gollum/views/helpers.rb
|
lib/gollum/views/helpers.rb
|
||||||
|
lib/gollum/views/helpers/locale_helpers.rb
|
||||||
lib/gollum/views/history.rb
|
lib/gollum/views/history.rb
|
||||||
lib/gollum/views/latest_changes.rb
|
lib/gollum/views/latest_changes.rb
|
||||||
lib/gollum/views/layout.rb
|
lib/gollum/views/layout.rb
|
||||||
@@ -1227,6 +1234,7 @@ Gem::Specification.new do |s|
|
|||||||
lib/gollum/views/pagination.rb
|
lib/gollum/views/pagination.rb
|
||||||
lib/gollum/views/rss.rb
|
lib/gollum/views/rss.rb
|
||||||
lib/gollum/views/search.rb
|
lib/gollum/views/search.rb
|
||||||
|
lib/gollum/views/template_cascade.rb
|
||||||
licenses/licenses.txt
|
licenses/licenses.txt
|
||||||
]
|
]
|
||||||
# = MANIFEST =
|
# = MANIFEST =
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ require 'rhino' if RUBY_PLATFORM == 'java'
|
|||||||
require ::File.expand_path('../gollum/uri_encode_component', __FILE__)
|
require ::File.expand_path('../gollum/uri_encode_component', __FILE__)
|
||||||
|
|
||||||
module Gollum
|
module Gollum
|
||||||
VERSION = '5.2.3'
|
VERSION = '5.3.0'
|
||||||
|
|
||||||
::I18n.available_locales = [:en]
|
::I18n.available_locales = [:en]
|
||||||
::I18n.load_path = Dir[::File.expand_path("lib/gollum/locales") + "/*.yml"]
|
::I18n.load_path = Dir[::File.expand_path("lib/gollum/locales") + "/*.yml"]
|
||||||
|
|||||||
+41
-18
@@ -211,7 +211,7 @@ module Precious
|
|||||||
end
|
end
|
||||||
|
|
||||||
get '/edit/*' do
|
get '/edit/*' do
|
||||||
forbid unless @allow_editing
|
forbid unless @allow_editing && @user_authed
|
||||||
wikip = wiki_page(params[:splat].first)
|
wikip = wiki_page(params[:splat].first)
|
||||||
@name = wikip.fullname
|
@name = wikip.fullname
|
||||||
@path = wikip.path
|
@path = wikip.path
|
||||||
@@ -234,6 +234,7 @@ module Precious
|
|||||||
|
|
||||||
wiki = wiki_new
|
wiki = wiki_new
|
||||||
halt 405 unless wiki.allow_uploads
|
halt 405 unless wiki.allow_uploads
|
||||||
|
forbid unless @user_authed
|
||||||
|
|
||||||
if params[:file]
|
if params[:file]
|
||||||
fullname = params[:file][:filename]
|
fullname = params[:file][:filename]
|
||||||
@@ -273,7 +274,7 @@ module Precious
|
|||||||
options.merge! author
|
options.merge! author
|
||||||
end
|
end
|
||||||
|
|
||||||
normalize = Gollum::Page.valid_extension?(fullname)
|
options[:normalize] = Gollum::Page.valid_extension?(fullname)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
wiki.write_file(reponame, contents, options)
|
wiki.write_file(reponame, contents, options)
|
||||||
@@ -290,6 +291,7 @@ module Precious
|
|||||||
post '/rename/*' do
|
post '/rename/*' do
|
||||||
wikip = wiki_page(params[:splat].first)
|
wikip = wiki_page(params[:splat].first)
|
||||||
halt 500 if wikip.nil?
|
halt 500 if wikip.nil?
|
||||||
|
forbid unless @user_authed
|
||||||
wiki = wikip.wiki
|
wiki = wikip.wiki
|
||||||
page = wikip.page
|
page = wikip.page
|
||||||
rename = params[:rename]
|
rename = params[:rename]
|
||||||
@@ -333,6 +335,7 @@ module Precious
|
|||||||
path = "/#{clean_url(sanitize_empty_params(params[:path]))}"
|
path = "/#{clean_url(sanitize_empty_params(params[:path]))}"
|
||||||
wiki = wiki_new
|
wiki = wiki_new
|
||||||
page = wiki.page(::File.join(path, params[:page]))
|
page = wiki.page(::File.join(path, params[:page]))
|
||||||
|
forbid unless @user_authed
|
||||||
|
|
||||||
return if page.nil?
|
return if page.nil?
|
||||||
if etag != page.sha
|
if etag != page.sha
|
||||||
@@ -353,6 +356,7 @@ module Precious
|
|||||||
|
|
||||||
post '/delete/*' do
|
post '/delete/*' do
|
||||||
forbid unless @allow_editing
|
forbid unless @allow_editing
|
||||||
|
forbid unless @user_authed
|
||||||
wiki = wiki_new
|
wiki = wiki_new
|
||||||
filepath = params[:splat].first
|
filepath = params[:splat].first
|
||||||
unless filepath.nil?
|
unless filepath.nil?
|
||||||
@@ -364,6 +368,7 @@ module Precious
|
|||||||
|
|
||||||
get '/create/*' do
|
get '/create/*' do
|
||||||
forbid unless @allow_editing
|
forbid unless @allow_editing
|
||||||
|
forbid unless @user_authed
|
||||||
wikip = wiki_page(params[:splat].first)
|
wikip = wiki_page(params[:splat].first)
|
||||||
@name = wikip.name
|
@name = wikip.name
|
||||||
@ext = wikip.ext
|
@ext = wikip.ext
|
||||||
@@ -389,6 +394,7 @@ module Precious
|
|||||||
path = sanitize_empty_params(params[:path]) || ''
|
path = sanitize_empty_params(params[:path]) || ''
|
||||||
format = params[:format].intern
|
format = params[:format].intern
|
||||||
wiki = wiki_new
|
wiki = wiki_new
|
||||||
|
forbid unless @user_authed
|
||||||
|
|
||||||
path.gsub!(/^\//, '')
|
path.gsub!(/^\//, '')
|
||||||
|
|
||||||
@@ -554,6 +560,7 @@ module Precious
|
|||||||
wiki = wiki_new
|
wiki = wiki_new
|
||||||
@results = wiki.tree_list
|
@results = wiki.tree_list
|
||||||
|
|
||||||
|
|
||||||
if path
|
if path
|
||||||
@path = Pathname.new(path).cleanpath.to_s
|
@path = Pathname.new(path).cleanpath.to_s
|
||||||
check_path = wiki.page_file_dir ? ::File.join(wiki.page_file_dir, @path, '/') : "#{@path}/"
|
check_path = wiki.page_file_dir ? ::File.join(wiki.page_file_dir, @path, '/') : "#{@path}/"
|
||||||
@@ -618,28 +625,44 @@ module Precious
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def show_page_or_file(fullpath)
|
def folder_exists(path, wiki)
|
||||||
wiki = wiki_new
|
paths = wiki.tree_list
|
||||||
if page = wiki.page(fullpath)
|
return paths.any? { |item| item.path.start_with?(path) }
|
||||||
@page = page
|
end
|
||||||
@name = page.filename_stripped
|
|
||||||
@content = page.formatted_data
|
|
||||||
@upload_dest = find_upload_dest(Pathname.new(fullpath).cleanpath.to_s)
|
|
||||||
|
|
||||||
# Extensions and layout data
|
def show_page(page, fullpath, wiki)
|
||||||
@editable = true
|
@page = page
|
||||||
@toc_content = wiki.universal_toc ? @page.toc_data : nil
|
@name = page.filename_stripped
|
||||||
@h1_title = wiki.h1_title
|
@content = page.formatted_data
|
||||||
@bar_side = wiki.bar_side
|
@upload_dest = find_upload_dest(Pathname.new(fullpath).cleanpath.to_s)
|
||||||
@allow_uploads = wiki.allow_uploads
|
|
||||||
@navbar = true
|
# Extensions and layout data
|
||||||
mustache :page
|
@editable = true
|
||||||
|
@toc_content = wiki.universal_toc ? @page.toc_data : nil
|
||||||
|
@h1_title = wiki.h1_title
|
||||||
|
@bar_side = wiki.bar_side
|
||||||
|
@allow_uploads = wiki.allow_uploads
|
||||||
|
@navbar = true
|
||||||
|
return mustache :page
|
||||||
|
end
|
||||||
|
|
||||||
|
def show_page_or_file(fullpath)
|
||||||
|
wiki = wiki_new
|
||||||
|
|
||||||
|
if fullpath[-1] != '/' ? page = wiki.page(fullpath) : false
|
||||||
|
show_page(page, fullpath, wiki)
|
||||||
|
elsif page = wiki.page("#{fullpath}/#{wiki.index_page}")
|
||||||
|
show_page(page, fullpath, wiki)
|
||||||
|
elsif page = wiki.page("#{fullpath}/#{File.basename(fullpath)}")
|
||||||
|
show_page(page, fullpath, wiki)
|
||||||
elsif file = wiki.file(fullpath, wiki.ref, true)
|
elsif file = wiki.file(fullpath, wiki.ref, true)
|
||||||
show_file(file)
|
show_file(file)
|
||||||
elsif @redirects_enabled && redirect_path = wiki.redirects[fullpath]
|
elsif @redirects_enabled && redirect_path = wiki.redirects[fullpath]
|
||||||
redirect to("#{encodeURIComponent(redirect_path)}?redirected_from=#{encodeURIComponent(fullpath)}")
|
redirect to("#{encodeURIComponent(redirect_path)}?redirected_from=#{encodeURIComponent(fullpath)}")
|
||||||
|
elsif folder_exists(fullpath, wiki)
|
||||||
|
redirect to("/gollum/overview/#{clean_url(encodeURIComponent(fullpath))}")
|
||||||
else
|
else
|
||||||
if @allow_editing
|
if @allow_editing && @user_authed
|
||||||
path = fullpath[-1] == '/' ? "#{fullpath}#{wiki.index_page}" : fullpath # Append default index page if no page name is supplied
|
path = fullpath[-1] == '/' ? "#{fullpath}#{wiki.index_page}" : fullpath # Append default index page if no page name is supplied
|
||||||
redirect to("/gollum/create/#{clean_url(encodeURIComponent(path))}")
|
redirect to("/gollum/create/#{clean_url(encodeURIComponent(path))}")
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -734,3 +734,12 @@ nav.actions {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* @section user */
|
||||||
|
#user p {
|
||||||
|
text-align: right;
|
||||||
|
padding-right:0.5em;
|
||||||
|
font-size: .8em;
|
||||||
|
line-height: 2.0em;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container-lg clearfix">
|
<div class="container-lg clearfix">
|
||||||
{{{yield}}}
|
{{{yield}}}
|
||||||
|
{{< user}}
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<div id="user">
|
||||||
|
<p>
|
||||||
|
{{#user_authed}}
|
||||||
|
{{user_name}} | {{user_provider}} | <strong><a href="/__omnigollum__/logout">[Logout]</a></strong>
|
||||||
|
{{/user_authed}}
|
||||||
|
{{^user_authed}}
|
||||||
|
not logged in | <strong><a href="/__omnigollum__/login">[Login]</a></strong>
|
||||||
|
{{/user_authed}}
|
||||||
|
<p>
|
||||||
|
</div>
|
||||||
@@ -87,6 +87,19 @@ module Precious
|
|||||||
def latest_changes
|
def latest_changes
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Passthrough additional omniauth parameters for status bar
|
||||||
|
def user_authed
|
||||||
|
@user_authed
|
||||||
|
end
|
||||||
|
|
||||||
|
def user_provider
|
||||||
|
@user.provider
|
||||||
|
end
|
||||||
|
|
||||||
|
def user_name
|
||||||
|
@user.name
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+17
-3
@@ -477,9 +477,9 @@ EOF
|
|||||||
assert_equal 'abc', file.raw_data
|
assert_equal 'abc', file.raw_data
|
||||||
Precious::App.set(:wiki_options, {allow_uploads: false})
|
Precious::App.set(:wiki_options, {allow_uploads: false})
|
||||||
end
|
end
|
||||||
|
|
||||||
test "upload a file with mode page" do
|
test "upload a file with mode page" do
|
||||||
temp_upload_file = Tempfile.new(['upload', '.file']) << 'abc'
|
temp_upload_file = Tempfile.new(['upload', '.file']) << "abc\r"
|
||||||
temp_upload_file.close
|
temp_upload_file.close
|
||||||
Precious::App.set(:wiki_options, {allow_uploads: true, per_page_uploads: true})
|
Precious::App.set(:wiki_options, {allow_uploads: true, per_page_uploads: true})
|
||||||
post "/gollum/upload_file", {:file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))}, {'HTTP_REFERER' => 'http://localhost:4567/Home.md', 'HTTP_HOST' => 'localhost:4567'}
|
post "/gollum/upload_file", {:file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))}, {'HTTP_REFERER' => 'http://localhost:4567/Home.md', 'HTTP_HOST' => 'localhost:4567'}
|
||||||
@@ -488,7 +488,21 @@ EOF
|
|||||||
@wiki.clear_cache
|
@wiki.clear_cache
|
||||||
# Find the file in a page-specific subdir (here: Home), based on referer
|
# Find the file in a page-specific subdir (here: Home), based on referer
|
||||||
file = @wiki.file("uploads/Home/#{::File.basename(temp_upload_file.path)}")
|
file = @wiki.file("uploads/Home/#{::File.basename(temp_upload_file.path)}")
|
||||||
assert_equal 'abc', file.raw_data
|
assert_equal "abc\r", file.raw_data
|
||||||
|
Precious::App.set(:wiki_options, {allow_uploads: false, per_page_uploads: false})
|
||||||
|
end
|
||||||
|
|
||||||
|
test "upload a file with valid extension" do
|
||||||
|
temp_upload_file = Tempfile.new(['upload', '.txt']) << "abc\r"
|
||||||
|
temp_upload_file.close
|
||||||
|
Precious::App.set(:wiki_options, {allow_uploads: true, per_page_uploads: true})
|
||||||
|
post "/gollum/upload_file", {:file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))}, {'HTTP_REFERER' => 'http://localhost:4567/Home.md', 'HTTP_HOST' => 'localhost:4567'}
|
||||||
|
|
||||||
|
assert_equal 302, last_response.status # redirect is expected
|
||||||
|
@wiki.clear_cache
|
||||||
|
# Find the file in a page-specific subdir (here: Home), based on referer
|
||||||
|
file = @wiki.file("uploads/Home/#{::File.basename(temp_upload_file.path)}")
|
||||||
|
assert_equal "abc", file.raw_data
|
||||||
Precious::App.set(:wiki_options, {allow_uploads: false, per_page_uploads: false})
|
Precious::App.set(:wiki_options, {allow_uploads: false, per_page_uploads: false})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user