gitdocs 0.4.7 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +27 -17
- data/gitdocs.gemspec +5 -5
- data/lib/gitdocs/docfile.rb +4 -26
- data/lib/gitdocs/manager.rb +38 -25
- data/lib/gitdocs/public/js/app.js +34 -0
- data/lib/gitdocs/public/js/bootstrap-alerts.js +113 -0
- data/lib/gitdocs/public/js/search.js +1 -1
- data/lib/gitdocs/rendering.rb +2 -1
- data/lib/gitdocs/runner.rb +11 -16
- data/lib/gitdocs/server.rb +6 -2
- data/lib/gitdocs/version.rb +2 -2
- data/lib/gitdocs/views/app.haml +1 -0
- data/lib/gitdocs/views/dir.haml +21 -17
- data/lib/gitdocs/views/settings.haml +4 -3
- metadata +166 -165
data/CHANGELOG
CHANGED
@@ -1,32 +1,42 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.8 (12/29/2011)
|
2
2
|
|
3
|
-
*
|
4
|
-
*
|
3
|
+
* Only encode to utf-8 on ruby 1.9.x
|
4
|
+
* Fixes so that settings form on the web front-end saves
|
5
|
+
* Cleanup the front-end directory listing significantly
|
6
|
+
* More robust EM reactor loop handling
|
5
7
|
|
6
|
-
0.4.
|
8
|
+
0.4.7 (12/15/2011)
|
7
9
|
|
8
|
-
*
|
10
|
+
* Re-throw exceptions from reactor loop
|
11
|
+
* Socket testing moved to defer block
|
9
12
|
|
10
|
-
0.4.
|
13
|
+
0.4.5, 0.4.6 (12/14/2011)
|
11
14
|
|
12
|
-
*
|
15
|
+
* Enables logs in ~/.gitdocs/log for easier debugging
|
16
|
+
* Fix issue with default sort order on web interface
|
17
|
+
* Fixes major mime type detection issues
|
18
|
+
* Fixes rendering issues
|
13
19
|
|
14
|
-
0.4.4 (12/14/
|
20
|
+
0.4.4 (12/14/2011)
|
15
21
|
|
16
22
|
* Lock to eventmachine 1.0
|
17
23
|
* Use mime-types over file for better platform support
|
18
24
|
* Remove signal handling and just leverage EM start/stop
|
19
25
|
* Adds table sorting and file+folder icons in web front-end
|
20
26
|
|
21
|
-
0.4.
|
27
|
+
0.4.3 (12/13/2011)
|
28
|
+
|
29
|
+
* Javascript fixes for front-end
|
30
|
+
|
31
|
+
0.4.2 (12/13/2011)
|
32
|
+
|
33
|
+
* Fixes search on blank results case
|
34
|
+
|
35
|
+
0.4.1 (12/13/2011)
|
36
|
+
|
37
|
+
* Adds a basic search to web front-end
|
38
|
+
* Beginning of the work towards cross-platform notifications
|
39
|
+
|
22
40
|
|
23
|
-
* Enables logs in ~/.gitdocs/log for easier debugging
|
24
|
-
* Fix issue with default sort order on web interface
|
25
|
-
* Fixes major mime type detection issues
|
26
|
-
* Fixes rendering issues
|
27
41
|
|
28
|
-
0.4.7 (12/15/2012)
|
29
42
|
|
30
|
-
* Re-throw exceptions from reactor loop
|
31
|
-
* Socket testing moved to defer block
|
32
|
-
|
data/gitdocs.gemspec
CHANGED
@@ -19,15 +19,15 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
21
|
s.add_dependency 'joshbuddy-guard', '~> 0.10.0'
|
22
|
-
s.add_dependency 'thin'
|
22
|
+
s.add_dependency 'thin', '~> 1.3.1'
|
23
23
|
s.add_dependency 'renee', '~> 0.3.7'
|
24
24
|
s.add_dependency 'redcarpet', '~> 2.0.0'
|
25
|
-
s.add_dependency 'thor'
|
26
|
-
s.add_dependency 'coderay'
|
25
|
+
s.add_dependency 'thor', '~> 0.14.6'
|
26
|
+
s.add_dependency 'coderay', '~> 1.0.4'
|
27
27
|
s.add_dependency 'dante', '~> 0.1.2'
|
28
28
|
s.add_dependency 'growl', '~> 1.0.3'
|
29
|
-
s.add_dependency 'yajl-ruby'
|
30
|
-
s.add_dependency 'haml'
|
29
|
+
s.add_dependency 'yajl-ruby', '~> 1.1.0'
|
30
|
+
s.add_dependency 'haml', '~> 3.1.4'
|
31
31
|
s.add_dependency 'sqlite3', "~> 1.3.4"
|
32
32
|
s.add_dependency 'activerecord', "~> 3.1.0"
|
33
33
|
s.add_dependency 'grit', "~> 2.4.1"
|
data/lib/gitdocs/docfile.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Gitdocs
|
2
2
|
class Docfile
|
3
|
-
|
3
|
+
attr_accessor :parent
|
4
|
+
attr_reader :path, :name
|
4
5
|
|
5
6
|
def initialize(path)
|
6
7
|
@path = path
|
@@ -15,31 +16,8 @@ module Gitdocs
|
|
15
16
|
File.expand_path(@path, root).include?(expanded_root)
|
16
17
|
end
|
17
18
|
|
18
|
-
def
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
class Docdir < Docfile
|
24
|
-
attr_accessor :subdirs
|
25
|
-
attr_accessor :files
|
26
|
-
|
27
|
-
def initialize(path)
|
28
|
-
super
|
29
|
-
@subdirs = []
|
30
|
-
@files = []
|
31
|
-
end
|
32
|
-
|
33
|
-
def items
|
34
|
-
(subdirs + files).sort { |a,b| a.name.downcase <=> b.name.downcase }
|
35
|
-
end
|
36
|
-
|
37
|
-
def parent=(dir)
|
38
|
-
dir.subdirs.push(self) if dir
|
39
|
-
end
|
40
|
-
|
41
|
-
def file?
|
42
|
-
false
|
19
|
+
def dir?
|
20
|
+
File.directory?(@path)
|
43
21
|
end
|
44
22
|
end
|
45
23
|
end
|
data/lib/gitdocs/manager.rb
CHANGED
@@ -29,30 +29,40 @@ module Gitdocs
|
|
29
29
|
self.log "Shares: #{config.shares.map(&:inspect).join(", ")}"
|
30
30
|
# Start the repo watchers
|
31
31
|
runners = nil
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
32
|
+
retrying = false
|
33
|
+
begin
|
34
|
+
EM.run do
|
35
|
+
self.log "Starting EM loop..."
|
36
|
+
@runners = config.shares.map { |share|
|
37
|
+
self.log "Starting #{share}"
|
38
|
+
Runner.new(share)
|
39
|
+
}
|
40
|
+
self.log "Running runners... #{@runners.size}"
|
41
|
+
@runners.each(&:run)
|
42
|
+
# Start the web front-end
|
43
|
+
if self.config.global.start_web_frontend
|
44
|
+
Server.new(self, *@runners).start
|
45
|
+
EM.defer( proc {
|
46
|
+
i = 0
|
47
|
+
web_started = false
|
48
|
+
begin
|
49
|
+
TCPSocket.open('127.0.0.1', 8888).close
|
50
|
+
web_started = true
|
51
|
+
rescue Errno::ECONNREFUSED
|
52
|
+
self.log "Retrying server loop..."
|
53
|
+
sleep 0.2
|
54
|
+
i += 1
|
55
|
+
retry if i <= 20
|
56
|
+
end
|
57
|
+
system("open http://localhost:8888/") if !retrying && self.config.global.load_browser_on_startup && web_started
|
58
|
+
}, proc {
|
59
|
+
self.log "Web server running!"
|
60
|
+
})
|
61
|
+
end
|
55
62
|
end
|
63
|
+
rescue Restart
|
64
|
+
retrying = true
|
65
|
+
retry
|
56
66
|
end
|
57
67
|
rescue Exception => e # Report all errors in log
|
58
68
|
self.log(e.class.inspect + " - " + e.inspect + " - " + e.message.inspect, :error)
|
@@ -63,8 +73,11 @@ module Gitdocs
|
|
63
73
|
end
|
64
74
|
|
65
75
|
def restart
|
66
|
-
|
67
|
-
|
76
|
+
Thread.new do
|
77
|
+
Thread.main.raise Restart, "restarting ... "
|
78
|
+
sleep 0.1 while EM.reactor_running?
|
79
|
+
start
|
80
|
+
end
|
68
81
|
end
|
69
82
|
|
70
83
|
def stop
|
@@ -33,6 +33,25 @@ GitDocs = {
|
|
33
33
|
// Enable table sorter
|
34
34
|
var extractor = function(e) { return $(e).data('val') || $(e).text() }
|
35
35
|
$("table#fileListing").tablesorter({ textExtraction : extractor, sortList: [[0,0]] });
|
36
|
+
},
|
37
|
+
// To make the settings form ajax-y
|
38
|
+
observeSettingsForm : function() {
|
39
|
+
$('#settings').submit(function(e) {
|
40
|
+
e.preventDefault();
|
41
|
+
$.ajax({
|
42
|
+
type: 'POST',
|
43
|
+
url: this.action,
|
44
|
+
data: $(this).serialize(),
|
45
|
+
success: function() {
|
46
|
+
$('.content div.alert-message').remove();
|
47
|
+
var el = $('.content').prepend('<div class="alert-message success"><a class="close" href="#">×</a>' +
|
48
|
+
'<p><strong>Settings saved!</strong> Gitdocs has been restarted with your new settings.</p>' +
|
49
|
+
'</div>');
|
50
|
+
$('div.alert-message').alert();
|
51
|
+
}
|
52
|
+
});
|
53
|
+
return false;
|
54
|
+
});
|
36
55
|
}
|
37
56
|
};
|
38
57
|
|
@@ -40,6 +59,7 @@ $(document).ready(function() {
|
|
40
59
|
GitDocs.linkBreadcrumbs();
|
41
60
|
GitDocs.fillDirMeta();
|
42
61
|
StringFormatter.autoLink();
|
62
|
+
GitDocs.observeSettingsForm();
|
43
63
|
});
|
44
64
|
|
45
65
|
// Redirect to edit page for new file when new file form is submitted
|
@@ -51,3 +71,17 @@ $('form.add').live('submit', function(e){
|
|
51
71
|
window.location = newPath;
|
52
72
|
e.preventDefault(); return false;
|
53
73
|
});
|
74
|
+
|
75
|
+
// Link method redirection
|
76
|
+
$('a[data-method]').live('click', function(e) {
|
77
|
+
e.preventDefault();
|
78
|
+
var link = $(this);
|
79
|
+
var href = link.attr('href'),
|
80
|
+
method = link.data('method'),
|
81
|
+
target = link.attr('target'),
|
82
|
+
form = $('<form method="post" action="' + href + '"></form>'),
|
83
|
+
metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
|
84
|
+
if (target) { form.attr('target', target); }
|
85
|
+
form.hide().append(metadata_input).appendTo('body');
|
86
|
+
form.submit();
|
87
|
+
});
|
@@ -0,0 +1,113 @@
|
|
1
|
+
/* ==========================================================
|
2
|
+
* bootstrap-alerts.js v1.4.0
|
3
|
+
* http://twitter.github.com/bootstrap/javascript.html#alerts
|
4
|
+
* ==========================================================
|
5
|
+
* Copyright 2011 Twitter, Inc.
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
* ========================================================== */
|
19
|
+
|
20
|
+
|
21
|
+
!function( $ ){
|
22
|
+
|
23
|
+
"use strict"
|
24
|
+
|
25
|
+
/* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
|
26
|
+
* ======================================================= */
|
27
|
+
|
28
|
+
var transitionEnd
|
29
|
+
|
30
|
+
$(document).ready(function () {
|
31
|
+
|
32
|
+
$.support.transition = (function () {
|
33
|
+
var thisBody = document.body || document.documentElement
|
34
|
+
, thisStyle = thisBody.style
|
35
|
+
, support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
|
36
|
+
return support
|
37
|
+
})()
|
38
|
+
|
39
|
+
// set CSS transition event type
|
40
|
+
if ( $.support.transition ) {
|
41
|
+
transitionEnd = "TransitionEnd"
|
42
|
+
if ( $.browser.webkit ) {
|
43
|
+
transitionEnd = "webkitTransitionEnd"
|
44
|
+
} else if ( $.browser.mozilla ) {
|
45
|
+
transitionEnd = "transitionend"
|
46
|
+
} else if ( $.browser.opera ) {
|
47
|
+
transitionEnd = "oTransitionEnd"
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
})
|
52
|
+
|
53
|
+
/* ALERT CLASS DEFINITION
|
54
|
+
* ====================== */
|
55
|
+
|
56
|
+
var Alert = function ( content, options ) {
|
57
|
+
this.settings = $.extend({}, $.fn.alert.defaults, options)
|
58
|
+
this.$element = $(content)
|
59
|
+
.delegate(this.settings.selector, 'click', this.close)
|
60
|
+
}
|
61
|
+
|
62
|
+
Alert.prototype = {
|
63
|
+
|
64
|
+
close: function (e) {
|
65
|
+
var $element = $(this).parent('.alert-message')
|
66
|
+
|
67
|
+
e && e.preventDefault()
|
68
|
+
$element.removeClass('in')
|
69
|
+
|
70
|
+
function removeElement () {
|
71
|
+
$element.remove()
|
72
|
+
}
|
73
|
+
|
74
|
+
$.support.transition && $element.hasClass('fade') ?
|
75
|
+
$element.bind(transitionEnd, removeElement) :
|
76
|
+
removeElement()
|
77
|
+
}
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
/* ALERT PLUGIN DEFINITION
|
83
|
+
* ======================= */
|
84
|
+
|
85
|
+
$.fn.alert = function ( options ) {
|
86
|
+
|
87
|
+
if ( options === true ) {
|
88
|
+
return this.data('alert')
|
89
|
+
}
|
90
|
+
|
91
|
+
return this.each(function () {
|
92
|
+
var $this = $(this)
|
93
|
+
|
94
|
+
if ( typeof options == 'string' ) {
|
95
|
+
return $this.data('alert')[options]()
|
96
|
+
}
|
97
|
+
|
98
|
+
$(this).data('alert', new Alert( this, options ))
|
99
|
+
|
100
|
+
})
|
101
|
+
}
|
102
|
+
|
103
|
+
$.fn.alert.defaults = {
|
104
|
+
selector: '.close'
|
105
|
+
}
|
106
|
+
|
107
|
+
$(document).ready(function () {
|
108
|
+
new Alert($('body'), {
|
109
|
+
selector: '.alert-message[data-alert] .close'
|
110
|
+
})
|
111
|
+
})
|
112
|
+
|
113
|
+
}( window.jQuery || window.ender );
|
@@ -1,7 +1,7 @@
|
|
1
1
|
GitDocs.search = {
|
2
2
|
highlight : function(query) {
|
3
3
|
$('.results dl dd').each(function(idx, el) {
|
4
|
-
var result = $(el).text().replace(query, "<strong>" +
|
4
|
+
var result = $(el).text().replace(new RegExp(query, 'ig'), function($0) { return"<strong>" + $0 + "</strong>"; });
|
5
5
|
$(el).html(result);
|
6
6
|
});
|
7
7
|
}
|
data/lib/gitdocs/rendering.rb
CHANGED
data/lib/gitdocs/runner.rb
CHANGED
@@ -6,7 +6,7 @@ module Gitdocs
|
|
6
6
|
|
7
7
|
def initialize(share)
|
8
8
|
@share = share
|
9
|
-
@root = share.path
|
9
|
+
@root = share.path.sub(%r{/+$},'') if share.path
|
10
10
|
@polling_interval = share.polling_interval
|
11
11
|
@icon = File.expand_path("../../img/icon.png", __FILE__)
|
12
12
|
end
|
@@ -14,14 +14,14 @@ module Gitdocs
|
|
14
14
|
SearchResult = Struct.new(:file, :context)
|
15
15
|
def search(term)
|
16
16
|
results = []
|
17
|
-
if result_test = sh_string("git grep #{ShellTools.escape(term)}")
|
17
|
+
if result_test = sh_string("git grep -i #{ShellTools.escape(term)}")
|
18
18
|
result_test.scan(/(.*?):([^\n]*)/) { |(file, context)| results << SearchResult.new(file, context) }
|
19
19
|
end
|
20
20
|
results
|
21
21
|
end
|
22
22
|
|
23
23
|
def run
|
24
|
-
return false unless self.valid?
|
24
|
+
return false unless self.valid? && !self.root.empty?
|
25
25
|
@show_notifications = @share.notification
|
26
26
|
@current_remote = @share.remote_name
|
27
27
|
@current_branch = @share.branch_name
|
@@ -140,26 +140,21 @@ module Gitdocs
|
|
140
140
|
|
141
141
|
IGNORED_FILES = ['.gitignore']
|
142
142
|
# dir_files("some/dir") => [<Docfile>, <Docfile>]
|
143
|
-
def dir_files(
|
144
|
-
dir_path
|
145
|
-
files = {}
|
146
|
-
ls_files = sh_string("git ls-files").split("\n").map { |f| Docfile.new(f) }
|
147
|
-
ls_files.select { |f| f.within?(dir, @root) }.each do |f|
|
148
|
-
path = File.expand_path(f.parent, root)
|
149
|
-
files[path] ||= Docdir.new(path)
|
150
|
-
files[path].files << f unless IGNORED_FILES.include?(f.name)
|
151
|
-
end
|
152
|
-
files.keys.each { |f| files[f].parent = files[File.dirname(f)] }
|
153
|
-
files[dir_path]
|
143
|
+
def dir_files(dir_path)
|
144
|
+
Dir[File.join(dir_path, "*")].to_a.map { |path| Docfile.new(path) }
|
154
145
|
end
|
155
146
|
|
156
147
|
def file_meta(file)
|
148
|
+
result = {}
|
157
149
|
file = file.gsub(%r{^/}, '')
|
158
150
|
full_path = File.expand_path(file, @root)
|
159
|
-
|
151
|
+
log_result = sh_string("git log --format='%aN|%ai' -n1 #{ShellTools.escape(file)}")
|
152
|
+
result = {} unless File.exist?(full_path) && log_result
|
153
|
+
author, modified = log_result.split("|")
|
160
154
|
modified = Time.parse(modified.sub(' ', 'T')).utc.iso8601
|
161
155
|
size = (File.symlink?(full_path) || File.directory?(full_path)) ? -1 : File.size(full_path)
|
162
|
-
{ :author => author, :size => size, :modified => modified }
|
156
|
+
result = { :author => author, :size => size, :modified => modified }
|
157
|
+
result
|
163
158
|
end
|
164
159
|
|
165
160
|
def valid?
|
data/lib/gitdocs/server.rb
CHANGED
@@ -33,7 +33,7 @@ module Gitdocs
|
|
33
33
|
end
|
34
34
|
shares[Integer(idx)].update_attributes(share)
|
35
35
|
end
|
36
|
-
manager.restart
|
36
|
+
EM.add_timer(0.1) { manager.restart }
|
37
37
|
redirect! '/settings'
|
38
38
|
end
|
39
39
|
end
|
@@ -42,6 +42,10 @@ module Gitdocs
|
|
42
42
|
render! "search", :layout => 'app', :locals => {:conf => manager.config, :results => manager.search(request.GET['q']), :nav_state => nil}
|
43
43
|
end
|
44
44
|
|
45
|
+
path('shares').post do
|
46
|
+
Configuration::Share.create
|
47
|
+
end
|
48
|
+
|
45
49
|
var :int do |idx|
|
46
50
|
gd = gds[idx]
|
47
51
|
halt 404 if gd.nil?
|
@@ -68,7 +72,7 @@ module Gitdocs
|
|
68
72
|
elsif !File.exist?(expanded_path) # edit for non-existent file
|
69
73
|
render! "edit", :layout => 'app', :locals => locals.merge(:contents => "")
|
70
74
|
elsif File.directory?(expanded_path) # list directory
|
71
|
-
contents =
|
75
|
+
contents = gd.dir_files(expanded_path)
|
72
76
|
render! "dir", :layout => 'app', :locals => locals.merge(:contents => contents)
|
73
77
|
elsif mode == 'delete' # delete file
|
74
78
|
FileUtils.rm(expanded_path)
|
data/lib/gitdocs/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Gitdocs
|
2
|
-
VERSION = "0.4.
|
3
|
-
end
|
2
|
+
VERSION = "0.4.8"
|
3
|
+
end
|
data/lib/gitdocs/views/app.haml
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
%script{ :src => "/js/util.js", :type => "text/javascript", :charset => "utf-8" }
|
10
10
|
%script{ :src => "/js/jquery.js", :type => "text/javascript", :charset => "utf-8" }
|
11
11
|
%script{ :src => "/js/jquery.tablesorter.js", :type => "text/javascript", :charset => "utf-8" }
|
12
|
+
%script{ :src => "/js/bootstrap-alerts.js", :type => "text/javascript", :charset => "utf-8" }
|
12
13
|
%script{ :src => "/js/app.js", :type => "text/javascript", :charset => "utf-8" }
|
13
14
|
%body
|
14
15
|
#nav.topbar
|
data/lib/gitdocs/views/dir.haml
CHANGED
@@ -2,24 +2,28 @@
|
|
2
2
|
|
3
3
|
= partial("header", :locals => { :parent => parent, :file => false, :idx => idx })
|
4
4
|
|
5
|
-
|
6
|
-
%
|
7
|
-
%
|
8
|
-
%th File
|
9
|
-
%th Author
|
10
|
-
%th Last Modified
|
11
|
-
%th Size
|
12
|
-
|
13
|
-
%tbody
|
14
|
-
- contents.items.each_with_index do |f, i|
|
5
|
+
- if contents && contents.any?
|
6
|
+
%table#fileListing.condensed-table.zebra-striped
|
7
|
+
%thead
|
15
8
|
%tr
|
16
|
-
%
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
9
|
+
%th File
|
10
|
+
%th Author
|
11
|
+
%th Last Modified
|
12
|
+
%th Size
|
13
|
+
|
14
|
+
%tbody
|
15
|
+
- contents.each_with_index do |f, i|
|
16
|
+
%tr
|
17
|
+
%td
|
18
|
+
%img{ :src => "/img/#{f.dir? ? 'folder' : 'file'}.png", :width => 16, :height => 16 }
|
19
|
+
%a{ :href => "/#{idx}#{request.path_info}/#{f.name}" }
|
20
|
+
= f.name
|
21
|
+
%td.author
|
22
|
+
%td.modified
|
23
|
+
%td.size
|
24
|
+
|
25
|
+
- if contents.empty?
|
26
|
+
%p No files were found in this directory.
|
23
27
|
|
24
28
|
.row
|
25
29
|
.span6
|
@@ -1,6 +1,6 @@
|
|
1
1
|
- @title = "Settings"
|
2
2
|
|
3
|
-
%form{:method => 'POST', :action => '/settings'}
|
3
|
+
%form#settings{:method => 'POST', :action => '/settings'}
|
4
4
|
%h2 Gitdocs
|
5
5
|
#config.field.config
|
6
6
|
%input{:type =>'hidden', :value => '0', :name=>"config[load_browser_on_startup]"}
|
@@ -41,8 +41,9 @@
|
|
41
41
|
%input{:type =>'hidden', :value => '0', :name=>"share[#{idx}][notification]"}
|
42
42
|
%input{:type =>'checkbox', :value => '1', :name=>"share[#{idx}][notification]", :checked => share.notification ? 'checked' : nil}
|
43
43
|
%span Notifications?
|
44
|
-
.delete
|
44
|
+
.delete{ :style => "display: none;" }
|
45
45
|
%input{:type =>'button', :value => "Delete", :class => "btn danger"}
|
46
46
|
%input{:type =>'hidden', :name=>"share[#{idx}][delete]"}
|
47
47
|
|
48
|
-
%input{:value => 'Save', :type => 'submit', :class => "btn primary" }
|
48
|
+
%input{:value => 'Save', :type => 'submit', :class => "btn primary" }
|
49
|
+
%a{ :class => "btn secondary new-share", :href => "/shares", :"data-method" => "post" } Add Share
|
metadata
CHANGED
@@ -1,246 +1,249 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitdocs
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.7
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.4.8
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Josh Hull
|
9
9
|
- Nathan Esquenazi
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
|
14
|
+
date: 2011-12-30 00:00:00 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
16
17
|
name: joshbuddy-guard
|
17
|
-
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
20
|
none: false
|
19
|
-
requirements:
|
21
|
+
requirements:
|
20
22
|
- - ~>
|
21
|
-
- !ruby/object:Gem::Version
|
23
|
+
- !ruby/object:Gem::Version
|
22
24
|
version: 0.10.0
|
23
25
|
type: :runtime
|
24
|
-
|
25
|
-
|
26
|
-
- !ruby/object:Gem::Dependency
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
27
28
|
name: thin
|
28
|
-
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
29
31
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version:
|
32
|
+
requirements:
|
33
|
+
- - ~>
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 1.3.1
|
34
36
|
type: :runtime
|
35
|
-
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
38
39
|
name: renee
|
39
|
-
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
42
|
none: false
|
41
|
-
requirements:
|
43
|
+
requirements:
|
42
44
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
45
|
+
- !ruby/object:Gem::Version
|
44
46
|
version: 0.3.7
|
45
47
|
type: :runtime
|
46
|
-
|
47
|
-
|
48
|
-
- !ruby/object:Gem::Dependency
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
49
50
|
name: redcarpet
|
50
|
-
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
51
53
|
none: false
|
52
|
-
requirements:
|
54
|
+
requirements:
|
53
55
|
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
56
|
+
- !ruby/object:Gem::Version
|
55
57
|
version: 2.0.0
|
56
58
|
type: :runtime
|
57
|
-
|
58
|
-
|
59
|
-
- !ruby/object:Gem::Dependency
|
59
|
+
version_requirements: *id004
|
60
|
+
- !ruby/object:Gem::Dependency
|
60
61
|
name: thor
|
61
|
-
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
62
64
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version:
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.14.6
|
67
69
|
type: :runtime
|
68
|
-
|
69
|
-
|
70
|
-
- !ruby/object:Gem::Dependency
|
70
|
+
version_requirements: *id005
|
71
|
+
- !ruby/object:Gem::Dependency
|
71
72
|
name: coderay
|
72
|
-
|
73
|
+
prerelease: false
|
74
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
73
75
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version:
|
76
|
+
requirements:
|
77
|
+
- - ~>
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 1.0.4
|
78
80
|
type: :runtime
|
79
|
-
|
80
|
-
|
81
|
-
- !ruby/object:Gem::Dependency
|
81
|
+
version_requirements: *id006
|
82
|
+
- !ruby/object:Gem::Dependency
|
82
83
|
name: dante
|
83
|
-
|
84
|
+
prerelease: false
|
85
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
84
86
|
none: false
|
85
|
-
requirements:
|
87
|
+
requirements:
|
86
88
|
- - ~>
|
87
|
-
- !ruby/object:Gem::Version
|
89
|
+
- !ruby/object:Gem::Version
|
88
90
|
version: 0.1.2
|
89
91
|
type: :runtime
|
90
|
-
|
91
|
-
|
92
|
-
- !ruby/object:Gem::Dependency
|
92
|
+
version_requirements: *id007
|
93
|
+
- !ruby/object:Gem::Dependency
|
93
94
|
name: growl
|
94
|
-
|
95
|
+
prerelease: false
|
96
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
95
97
|
none: false
|
96
|
-
requirements:
|
98
|
+
requirements:
|
97
99
|
- - ~>
|
98
|
-
- !ruby/object:Gem::Version
|
100
|
+
- !ruby/object:Gem::Version
|
99
101
|
version: 1.0.3
|
100
102
|
type: :runtime
|
101
|
-
|
102
|
-
|
103
|
-
- !ruby/object:Gem::Dependency
|
103
|
+
version_requirements: *id008
|
104
|
+
- !ruby/object:Gem::Dependency
|
104
105
|
name: yajl-ruby
|
105
|
-
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
106
108
|
none: false
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version:
|
109
|
+
requirements:
|
110
|
+
- - ~>
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.1.0
|
111
113
|
type: :runtime
|
112
|
-
|
113
|
-
|
114
|
-
- !ruby/object:Gem::Dependency
|
114
|
+
version_requirements: *id009
|
115
|
+
- !ruby/object:Gem::Dependency
|
115
116
|
name: haml
|
116
|
-
|
117
|
+
prerelease: false
|
118
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
117
119
|
none: false
|
118
|
-
requirements:
|
119
|
-
- -
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version:
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 3.1.4
|
122
124
|
type: :runtime
|
123
|
-
|
124
|
-
|
125
|
-
- !ruby/object:Gem::Dependency
|
125
|
+
version_requirements: *id010
|
126
|
+
- !ruby/object:Gem::Dependency
|
126
127
|
name: sqlite3
|
127
|
-
|
128
|
+
prerelease: false
|
129
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
128
130
|
none: false
|
129
|
-
requirements:
|
131
|
+
requirements:
|
130
132
|
- - ~>
|
131
|
-
- !ruby/object:Gem::Version
|
133
|
+
- !ruby/object:Gem::Version
|
132
134
|
version: 1.3.4
|
133
135
|
type: :runtime
|
134
|
-
|
135
|
-
|
136
|
-
- !ruby/object:Gem::Dependency
|
136
|
+
version_requirements: *id011
|
137
|
+
- !ruby/object:Gem::Dependency
|
137
138
|
name: activerecord
|
138
|
-
|
139
|
+
prerelease: false
|
140
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
139
141
|
none: false
|
140
|
-
requirements:
|
142
|
+
requirements:
|
141
143
|
- - ~>
|
142
|
-
- !ruby/object:Gem::Version
|
144
|
+
- !ruby/object:Gem::Version
|
143
145
|
version: 3.1.0
|
144
146
|
type: :runtime
|
145
|
-
|
146
|
-
|
147
|
-
- !ruby/object:Gem::Dependency
|
147
|
+
version_requirements: *id012
|
148
|
+
- !ruby/object:Gem::Dependency
|
148
149
|
name: grit
|
149
|
-
|
150
|
+
prerelease: false
|
151
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
150
152
|
none: false
|
151
|
-
requirements:
|
153
|
+
requirements:
|
152
154
|
- - ~>
|
153
|
-
- !ruby/object:Gem::Version
|
155
|
+
- !ruby/object:Gem::Version
|
154
156
|
version: 2.4.1
|
155
157
|
type: :runtime
|
156
|
-
|
157
|
-
|
158
|
-
- !ruby/object:Gem::Dependency
|
158
|
+
version_requirements: *id013
|
159
|
+
- !ruby/object:Gem::Dependency
|
159
160
|
name: shell_tools
|
160
|
-
|
161
|
+
prerelease: false
|
162
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
161
163
|
none: false
|
162
|
-
requirements:
|
164
|
+
requirements:
|
163
165
|
- - ~>
|
164
|
-
- !ruby/object:Gem::Version
|
166
|
+
- !ruby/object:Gem::Version
|
165
167
|
version: 0.1.0
|
166
168
|
type: :runtime
|
167
|
-
|
168
|
-
|
169
|
-
- !ruby/object:Gem::Dependency
|
169
|
+
version_requirements: *id014
|
170
|
+
- !ruby/object:Gem::Dependency
|
170
171
|
name: mimetype-fu
|
171
|
-
|
172
|
+
prerelease: false
|
173
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
172
174
|
none: false
|
173
|
-
requirements:
|
175
|
+
requirements:
|
174
176
|
- - ~>
|
175
|
-
- !ruby/object:Gem::Version
|
177
|
+
- !ruby/object:Gem::Version
|
176
178
|
version: 0.1.2
|
177
179
|
type: :runtime
|
178
|
-
|
179
|
-
|
180
|
-
- !ruby/object:Gem::Dependency
|
180
|
+
version_requirements: *id015
|
181
|
+
- !ruby/object:Gem::Dependency
|
181
182
|
name: eventmachine
|
182
|
-
|
183
|
+
prerelease: false
|
184
|
+
requirement: &id016 !ruby/object:Gem::Requirement
|
183
185
|
none: false
|
184
|
-
requirements:
|
185
|
-
- -
|
186
|
-
- !ruby/object:Gem::Version
|
186
|
+
requirements:
|
187
|
+
- - ">="
|
188
|
+
- !ruby/object:Gem::Version
|
187
189
|
version: 1.0.0.beta.3
|
188
190
|
type: :runtime
|
189
|
-
|
190
|
-
|
191
|
-
- !ruby/object:Gem::Dependency
|
191
|
+
version_requirements: *id016
|
192
|
+
- !ruby/object:Gem::Dependency
|
192
193
|
name: minitest
|
193
|
-
|
194
|
+
prerelease: false
|
195
|
+
requirement: &id017 !ruby/object:Gem::Requirement
|
194
196
|
none: false
|
195
|
-
requirements:
|
197
|
+
requirements:
|
196
198
|
- - ~>
|
197
|
-
- !ruby/object:Gem::Version
|
199
|
+
- !ruby/object:Gem::Version
|
198
200
|
version: 2.6.1
|
199
201
|
type: :development
|
200
|
-
|
201
|
-
|
202
|
-
- !ruby/object:Gem::Dependency
|
202
|
+
version_requirements: *id017
|
203
|
+
- !ruby/object:Gem::Dependency
|
203
204
|
name: rake
|
204
|
-
|
205
|
+
prerelease: false
|
206
|
+
requirement: &id018 !ruby/object:Gem::Requirement
|
205
207
|
none: false
|
206
|
-
requirements:
|
207
|
-
- -
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version:
|
208
|
+
requirements:
|
209
|
+
- - ">="
|
210
|
+
- !ruby/object:Gem::Version
|
211
|
+
version: "0"
|
210
212
|
type: :development
|
211
|
-
|
212
|
-
|
213
|
-
- !ruby/object:Gem::Dependency
|
213
|
+
version_requirements: *id018
|
214
|
+
- !ruby/object:Gem::Dependency
|
214
215
|
name: mocha
|
215
|
-
|
216
|
+
prerelease: false
|
217
|
+
requirement: &id019 !ruby/object:Gem::Requirement
|
216
218
|
none: false
|
217
|
-
requirements:
|
218
|
-
- -
|
219
|
-
- !ruby/object:Gem::Version
|
220
|
-
version:
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: "0"
|
221
223
|
type: :development
|
222
|
-
|
223
|
-
|
224
|
-
- !ruby/object:Gem::Dependency
|
224
|
+
version_requirements: *id019
|
225
|
+
- !ruby/object:Gem::Dependency
|
225
226
|
name: fakeweb
|
226
|
-
|
227
|
+
prerelease: false
|
228
|
+
requirement: &id020 !ruby/object:Gem::Requirement
|
227
229
|
none: false
|
228
|
-
requirements:
|
229
|
-
- -
|
230
|
-
- !ruby/object:Gem::Version
|
231
|
-
version:
|
230
|
+
requirements:
|
231
|
+
- - ">="
|
232
|
+
- !ruby/object:Gem::Version
|
233
|
+
version: "0"
|
232
234
|
type: :development
|
233
|
-
|
234
|
-
version_requirements: *70196233085840
|
235
|
+
version_requirements: *id020
|
235
236
|
description: Open-source Dropbox using Ruby and Git.
|
236
|
-
email:
|
237
|
+
email:
|
237
238
|
- joshbuddy@gmail.com
|
238
239
|
- nesquena@gmail.com
|
239
|
-
executables:
|
240
|
+
executables:
|
240
241
|
- gitdocs
|
241
242
|
extensions: []
|
243
|
+
|
242
244
|
extra_rdoc_files: []
|
243
|
-
|
245
|
+
|
246
|
+
files:
|
244
247
|
- .gitignore
|
245
248
|
- CHANGELOG
|
246
249
|
- Gemfile
|
@@ -300,6 +303,7 @@ files:
|
|
300
303
|
- lib/gitdocs/public/js/ace/worker-css.js
|
301
304
|
- lib/gitdocs/public/js/ace/worker-javascript.js
|
302
305
|
- lib/gitdocs/public/js/app.js
|
306
|
+
- lib/gitdocs/public/js/bootstrap-alerts.js
|
303
307
|
- lib/gitdocs/public/js/edit.js
|
304
308
|
- lib/gitdocs/public/js/jquery.js
|
305
309
|
- lib/gitdocs/public/js/jquery.tablesorter.js
|
@@ -324,35 +328,32 @@ files:
|
|
324
328
|
- test/test_helper.rb
|
325
329
|
homepage: http://engineering.gomiso.com/2011/11/30/collaborate-and-track-tasks-with-ease-using-gitdocs/
|
326
330
|
licenses: []
|
331
|
+
|
327
332
|
post_install_message:
|
328
333
|
rdoc_options: []
|
329
|
-
|
334
|
+
|
335
|
+
require_paths:
|
330
336
|
- lib
|
331
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
337
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
332
338
|
none: false
|
333
|
-
requirements:
|
334
|
-
- -
|
335
|
-
- !ruby/object:Gem::Version
|
336
|
-
version:
|
337
|
-
|
338
|
-
- 0
|
339
|
-
hash: -356674648532103914
|
340
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
339
|
+
requirements:
|
340
|
+
- - ">="
|
341
|
+
- !ruby/object:Gem::Version
|
342
|
+
version: "0"
|
343
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
341
344
|
none: false
|
342
|
-
requirements:
|
343
|
-
- -
|
344
|
-
- !ruby/object:Gem::Version
|
345
|
-
version:
|
346
|
-
segments:
|
347
|
-
- 0
|
348
|
-
hash: -356674648532103914
|
345
|
+
requirements:
|
346
|
+
- - ">="
|
347
|
+
- !ruby/object:Gem::Version
|
348
|
+
version: "0"
|
349
349
|
requirements: []
|
350
|
+
|
350
351
|
rubyforge_project: gitdocs
|
351
|
-
rubygems_version: 1.8.
|
352
|
+
rubygems_version: 1.8.12
|
352
353
|
signing_key:
|
353
354
|
specification_version: 3
|
354
355
|
summary: Open-source Dropbox using Ruby and Git
|
355
|
-
test_files:
|
356
|
+
test_files:
|
356
357
|
- test/configuration_test.rb
|
357
358
|
- test/runner_test.rb
|
358
359
|
- test/test_helper.rb
|