outpost-aggregator 1.0.0
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/.gitignore +17 -0
- data/CHANGELOG.md +16 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE +20 -0
- data/README.md +117 -0
- data/Rakefile +14 -0
- data/config.ru +7 -0
- data/lib/assets/javascripts/outpost/aggregator/aggregator.js.coffee +796 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/_pagination.jst.eco +12 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/base.jst.eco +90 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/content_full.jst.eco +19 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/content_small.jst.eco +15 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/drop_zone.jst.eco +1 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/error.jst.eco +4 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/recent_content.jst.eco +2 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/search.jst.eco +6 -0
- data/lib/assets/javascripts/outpost/aggregator/templates/url.jst.eco +5 -0
- data/lib/assets/javascripts/outpost/aggregator.js +2 -0
- data/lib/assets/stylesheets/outpost/aggregator.css.scss +93 -0
- data/lib/outpost/aggregator/json_input.rb +75 -0
- data/lib/outpost/aggregator/simple_json.rb +12 -0
- data/lib/outpost/aggregator/version.rb +5 -0
- data/lib/outpost/aggregator.rb +21 -0
- data/outpost-aggregator.gemspec +28 -0
- data/spec/factories.rb +2 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/db/combustion_test.sqlite +0 -0
- data/spec/internal/db/schema.rb +3 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/lib/outpost/aggregator/json_input_spec.rb +4 -0
- data/spec/lib/outpost/aggregator/simple_json_spec.rb +4 -0
- data/spec/spec_helper.rb +23 -0
- metadata +204 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="pagination pagination-mini pagination-centered">
|
2
|
+
<ul>
|
3
|
+
<li class="<%= 'disabled' if !@prev %>">
|
4
|
+
<a href="#" data-page="<%=@prev%>">« Back</a>
|
5
|
+
</li>
|
6
|
+
<li>
|
7
|
+
<a href="#" data-page="<%=@current%>"><i data-page="<%=@current%>" class="icon-refresh" style="vertical-align:sub"></i></a>
|
8
|
+
<li class="<%= 'disabled' if !@next %>">
|
9
|
+
<a href="#" data-page="<%=@next%>">More »</a>
|
10
|
+
</li>
|
11
|
+
</ul>
|
12
|
+
</div>
|
@@ -0,0 +1,90 @@
|
|
1
|
+
<div class="row">
|
2
|
+
<div id="aggregator-dropzone" class="content-bucket span5">
|
3
|
+
Loading content...
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div class="span4">
|
7
|
+
<ul class="nav nav-tabs">
|
8
|
+
<li class="<%= 'active' if @active is 'recent' %>">
|
9
|
+
<a href="#aggregator-recent-content" data-toggle="tab">Recent</a>
|
10
|
+
</li>
|
11
|
+
|
12
|
+
<li class="<%= 'active' if @active is 'search' %>">
|
13
|
+
<a href="#aggregator-search" data-toggle="tab">Search</a>
|
14
|
+
</li>
|
15
|
+
|
16
|
+
<li class"<%= 'active' if @active is 'url' %>">
|
17
|
+
<a href="#aggregator-url" data-toggle="tab">URL</a>
|
18
|
+
</li>
|
19
|
+
|
20
|
+
<li class="<%= 'active' if @active is 'help' %>">
|
21
|
+
<a href="#aggregator-help" data-toggle="tab">Help</a>
|
22
|
+
</li>
|
23
|
+
</ul>
|
24
|
+
|
25
|
+
<div class="tab-content">
|
26
|
+
<!-- Recent Content Tab -->
|
27
|
+
<div class="tab-pane<%= ' active' if @active is 'recent' %>" id="aggregator-recent-content">
|
28
|
+
Loading Recent Content...
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<!-- Search Tab -->
|
32
|
+
<div class="tab-pane<%= ' active' if @active is 'search' %>" id="aggregator-search">
|
33
|
+
Loading Search...
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<!-- URL Import Tab -->
|
37
|
+
<div class="tab-pane<%= ' active' if @active is 'url' %>" id="aggregator-url">
|
38
|
+
Loading URL Import...
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<!-- Help Tab -->
|
42
|
+
<div class="tab-pane<%= ' active' if @active is 'help' %>" id="aggregator-help">
|
43
|
+
<ul class="help-content">
|
44
|
+
<li>The gray area on the left is referred to as the "<strong>Drop Zone</strong>".</li>
|
45
|
+
<hr />
|
46
|
+
|
47
|
+
<h4>Finding content</h4>
|
48
|
+
<li>
|
49
|
+
The "Recent" tab loads the most recent articles when the page loads.
|
50
|
+
They will usually be ordered by reverse publish date.
|
51
|
+
</li>
|
52
|
+
<li>
|
53
|
+
The "Search" tab allows you to search across the available content types.
|
54
|
+
</li>
|
55
|
+
<li>
|
56
|
+
<strong>Pagination:</strong>
|
57
|
+
<ul>
|
58
|
+
<li>"Back" shows the previous page of stories if available</li>
|
59
|
+
<li>"Next" shows the next page stories if available</li>
|
60
|
+
<li>
|
61
|
+
The "Refresh" icon (<i class="icon-refresh"></i>) refreshes the current page.
|
62
|
+
This is is useful if you have been moving content out of the list and want to get it all back.
|
63
|
+
</li>
|
64
|
+
</ul>
|
65
|
+
</li>
|
66
|
+
<hr />
|
67
|
+
|
68
|
+
<h4>Importing content</h4>
|
69
|
+
<li><strong>Recent Tab</strong>: Drag content from the "Recent" tab into the Drop Zone</strong</li>
|
70
|
+
<li>
|
71
|
+
<strong>Search Tab</strong>:
|
72
|
+
Use the "Search" tab to find older content.
|
73
|
+
Dragging from the Search panel works the same as from the Recent panel.
|
74
|
+
</li>
|
75
|
+
<li>
|
76
|
+
<strong>Via URL</strong>:
|
77
|
+
Drag any Content URL into the Drop Zone.
|
78
|
+
Alternatively, you can paste a URL into the form in the "URL" tab and click "Import".<br />
|
79
|
+
</li>
|
80
|
+
<hr />
|
81
|
+
|
82
|
+
<h4>Managing content</h4>
|
83
|
+
<li><strong>Ordering</strong>: Drag content vertically within the Drop Zone to re-order it.</li>
|
84
|
+
<li><strong>Removing</strong>: Drag and release content outside of the Drop Zone to remove it from the collection.</li>
|
85
|
+
<hr />
|
86
|
+
</ul>
|
87
|
+
</div>
|
88
|
+
</div>
|
89
|
+
</div>
|
90
|
+
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="content-full">
|
2
|
+
<a href="<%= @content.public_url or @content.edit_url %>" target="_blank">
|
3
|
+
<%- @content.thumbnail %><%= @content.title %>
|
4
|
+
</a> <small>(<strong><%=@content.title?.length %></strong>)</small>
|
5
|
+
|
6
|
+
<div style="font-size:11px">
|
7
|
+
<strong><%= @content.byline %></strong> - <% if @content.public_datetime?: %>
|
8
|
+
<%= moment(@content.public_datetime).format("YYYY-MM-DD, h:mma") %>
|
9
|
+
<% else: %>
|
10
|
+
<span class="text-error"><strong>UNPUBLISHED</strong></span>
|
11
|
+
<% end %><br />
|
12
|
+
|
13
|
+
<% if !_.isEmpty(@content.teaser)?: %>
|
14
|
+
<%= @content.teaser %> (<strong><%= @content.teaser?.length %></strong>)<br />
|
15
|
+
<% end %>
|
16
|
+
|
17
|
+
(<a href="<%=@content.edit_url%>" target="_blank"><%= @content.id %></a>)
|
18
|
+
</div>
|
19
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="content-small">
|
2
|
+
<a href="<%= @content.public_url or @content.edit_url %>" target="_blank">
|
3
|
+
<%- @content.thumbnail %><%= @content.title %>
|
4
|
+
</a>
|
5
|
+
|
6
|
+
<div style="font-size:11px;">
|
7
|
+
<% if @content.public_datetime?: %>
|
8
|
+
<%= moment(@content.public_datetime).format("YYYY-MM-DD, h:mma") %>
|
9
|
+
<% else: %>
|
10
|
+
<span class="text-error"><strong>UNPUBLISHED</strong></span>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
(<a href="<%=@content.edit_url%>" target="_blank"><%= @content.id %></a>)
|
14
|
+
</div>
|
15
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<h4>Current Content</h4>
|
@@ -0,0 +1,93 @@
|
|
1
|
+
.aggregator {
|
2
|
+
// Fancy UI things
|
3
|
+
.dim {
|
4
|
+
@include opacity(30);
|
5
|
+
@include transition(opacity 0.1s linear)
|
6
|
+
}
|
7
|
+
|
8
|
+
// Override the Twitter pagination
|
9
|
+
// To reduce the padding
|
10
|
+
.pagination {
|
11
|
+
margin: 0 0 10px 0;
|
12
|
+
}
|
13
|
+
|
14
|
+
input {
|
15
|
+
max-width: 250px;
|
16
|
+
}
|
17
|
+
|
18
|
+
.drop-zone.empty {
|
19
|
+
position: relative;
|
20
|
+
color: $grayLight;
|
21
|
+
h1 {
|
22
|
+
position: absolute;
|
23
|
+
top: 60px;
|
24
|
+
left: 50px;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
.drop-zone {
|
29
|
+
max-height: 500px;
|
30
|
+
overflow: auto;
|
31
|
+
}
|
32
|
+
|
33
|
+
.content-list, .help-content {
|
34
|
+
max-height: 455px;
|
35
|
+
overflow: auto;
|
36
|
+
}
|
37
|
+
|
38
|
+
.help-content {
|
39
|
+
padding-right: 10px;
|
40
|
+
}
|
41
|
+
|
42
|
+
.drop-zone, .content-list {
|
43
|
+
min-height: 200px;
|
44
|
+
@extend .unstyled;
|
45
|
+
|
46
|
+
li {
|
47
|
+
@extend .clearfix;
|
48
|
+
|
49
|
+
background: #fff;
|
50
|
+
border: 1px solid $grayLight;
|
51
|
+
margin: 5px 0;
|
52
|
+
padding: 5px;
|
53
|
+
cursor: move;
|
54
|
+
|
55
|
+
@include box-shadow(2px 2px 6px #ccc);
|
56
|
+
@include border-radius(3px);
|
57
|
+
|
58
|
+
// Dragging any content
|
59
|
+
&.dragging {
|
60
|
+
@include box-shadow(2px 2px 10px #ccc);
|
61
|
+
}
|
62
|
+
|
63
|
+
// Adding content from the right panel
|
64
|
+
&.adding {
|
65
|
+
border-color: #0f0;
|
66
|
+
}
|
67
|
+
|
68
|
+
// Removing content from drop zone
|
69
|
+
&.removing {
|
70
|
+
background-color: #f2dede;
|
71
|
+
border-color: #f00;
|
72
|
+
&>div { @include opacity(30); }
|
73
|
+
}
|
74
|
+
|
75
|
+
img {
|
76
|
+
float: left;
|
77
|
+
margin-right: 5px;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
.content-full {
|
83
|
+
img {
|
84
|
+
max-width: 120px;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
.content-minimal {
|
89
|
+
img {
|
90
|
+
max-width: 60px;
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module Outpost
|
2
|
+
module Aggregator
|
3
|
+
module JsonInput
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
module ClassMethods
|
7
|
+
def accepts_json_input_for(name)
|
8
|
+
include InstanceMethodsOnActivation
|
9
|
+
|
10
|
+
# The current collection as simple_json
|
11
|
+
define_method "current_#{name}_json" do
|
12
|
+
current_json_for(name)
|
13
|
+
end
|
14
|
+
|
15
|
+
# The current collection as simple_json and then
|
16
|
+
# converted to real JSON.
|
17
|
+
define_method "#{name}_json" do
|
18
|
+
current_json_for(name).to_json
|
19
|
+
end
|
20
|
+
|
21
|
+
define_method "#{name}_json=" do |json|
|
22
|
+
process_json_input_for(name.to_s, json)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
module InstanceMethodsOnActivation
|
29
|
+
def current_json_for(name)
|
30
|
+
Aggregator.array_to_simple_json(self.send(name))
|
31
|
+
end
|
32
|
+
|
33
|
+
def process_json_input_for(name, json)
|
34
|
+
return if json.empty?
|
35
|
+
name = name.to_s
|
36
|
+
|
37
|
+
json = Array(JSON.parse(json)).sort_by { |c| c["position"].to_i }
|
38
|
+
loaded = []
|
39
|
+
|
40
|
+
json.each do |object_hash|
|
41
|
+
if object = Outpost.obj_by_key(object_hash["id"])
|
42
|
+
new_object = build_association_for(name, object_hash, object)
|
43
|
+
loaded.push(new_object) if new_object
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
loaded_json = Aggregator.array_to_simple_json(loaded)
|
48
|
+
current_json = current_json_for(name)
|
49
|
+
|
50
|
+
if current_json != loaded_json
|
51
|
+
# Outpost::Version hook
|
52
|
+
if self.respond_to?(:custom_changes)
|
53
|
+
self.custom_changes[name] = [current_json, loaded_json]
|
54
|
+
end
|
55
|
+
|
56
|
+
self.changed_attributes[name] = current_json
|
57
|
+
|
58
|
+
# This actually opens a DB transaction and saves stuff.
|
59
|
+
# This is Rails behavior.
|
60
|
+
self.send("#{name}=", loaded)
|
61
|
+
end
|
62
|
+
|
63
|
+
self.send(name)
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def build_association_for(name, object_hash, object)
|
70
|
+
self.send("build_#{name.singularize}_association", object_hash, object)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "outpost/aggregator/version"
|
2
|
+
require "outpost/aggregator/json_input"
|
3
|
+
require "outpost/aggregator/simple_json"
|
4
|
+
|
5
|
+
module Outpost
|
6
|
+
module Aggregator
|
7
|
+
module Rails
|
8
|
+
class Engine < ::Rails::Engine
|
9
|
+
config.to_prepare do
|
10
|
+
ActiveSupport.on_load(:active_record) do
|
11
|
+
ActiveRecord::Base.send :include, Outpost::Aggregator::JsonInput
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end # Rails
|
16
|
+
|
17
|
+
def self.array_to_simple_json(array)
|
18
|
+
Array(array).map(&:simple_json)
|
19
|
+
end
|
20
|
+
end # Aggregator
|
21
|
+
end # Outpost
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'outpost/aggregator/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "outpost-aggregator"
|
8
|
+
spec.version = Outpost::Aggregator::VERSION
|
9
|
+
spec.authors = ["Bryan Ricker"]
|
10
|
+
spec.email = ["bricker88@gmail.com"]
|
11
|
+
spec.description = %q{Content aggregator for Outpost}
|
12
|
+
spec.summary = %q{A simple UI and server-side integration to help aggregate content using an API.}
|
13
|
+
spec.homepage = "https://github.com/SCPR/outpost-aggregator"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec-rails"
|
24
|
+
spec.add_development_dependency "combustion"
|
25
|
+
spec.add_development_dependency 'activerecord'
|
26
|
+
spec.add_development_dependency "sqlite3", "~> 1.3"
|
27
|
+
spec.add_development_dependency "factory_girl", "~> 4.2"
|
28
|
+
end
|
data/spec/factories.rb
ADDED
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
*.log
|
File without changes
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'combustion'
|
2
|
+
|
3
|
+
unless defined?(RAKED)
|
4
|
+
Bundler.require :default, :test
|
5
|
+
Combustion.initialize! :active_record
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'rspec/rails'
|
9
|
+
require 'factory_girl'
|
10
|
+
load 'factories.rb'
|
11
|
+
|
12
|
+
Rails.backtrace_cleaner.remove_silencers!
|
13
|
+
|
14
|
+
|
15
|
+
Dir[File.expand_path("spec/support/**/*.rb")].each { |f| require f }
|
16
|
+
|
17
|
+
RSpec.configure do |config|
|
18
|
+
config.mock_with :rspec
|
19
|
+
config.order = "random"
|
20
|
+
config.infer_base_class_for_anonymous_controllers = false
|
21
|
+
config.filter_run focus: true
|
22
|
+
config.run_all_when_everything_filtered = true
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: outpost-aggregator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Bryan Ricker
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-09-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec-rails
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: combustion
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: activerecord
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: sqlite3
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '1.3'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.3'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: factory_girl
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '4.2'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '4.2'
|
126
|
+
description: Content aggregator for Outpost
|
127
|
+
email:
|
128
|
+
- bricker88@gmail.com
|
129
|
+
executables: []
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files: []
|
132
|
+
files:
|
133
|
+
- .gitignore
|
134
|
+
- CHANGELOG.md
|
135
|
+
- Gemfile
|
136
|
+
- MIT-LICENSE
|
137
|
+
- README.md
|
138
|
+
- Rakefile
|
139
|
+
- config.ru
|
140
|
+
- lib/assets/javascripts/outpost/aggregator.js
|
141
|
+
- lib/assets/javascripts/outpost/aggregator/aggregator.js.coffee
|
142
|
+
- lib/assets/javascripts/outpost/aggregator/templates/_pagination.jst.eco
|
143
|
+
- lib/assets/javascripts/outpost/aggregator/templates/base.jst.eco
|
144
|
+
- lib/assets/javascripts/outpost/aggregator/templates/content_full.jst.eco
|
145
|
+
- lib/assets/javascripts/outpost/aggregator/templates/content_small.jst.eco
|
146
|
+
- lib/assets/javascripts/outpost/aggregator/templates/drop_zone.jst.eco
|
147
|
+
- lib/assets/javascripts/outpost/aggregator/templates/error.jst.eco
|
148
|
+
- lib/assets/javascripts/outpost/aggregator/templates/recent_content.jst.eco
|
149
|
+
- lib/assets/javascripts/outpost/aggregator/templates/search.jst.eco
|
150
|
+
- lib/assets/javascripts/outpost/aggregator/templates/url.jst.eco
|
151
|
+
- lib/assets/stylesheets/outpost/aggregator.css.scss
|
152
|
+
- lib/outpost/aggregator.rb
|
153
|
+
- lib/outpost/aggregator/json_input.rb
|
154
|
+
- lib/outpost/aggregator/simple_json.rb
|
155
|
+
- lib/outpost/aggregator/version.rb
|
156
|
+
- outpost-aggregator.gemspec
|
157
|
+
- spec/factories.rb
|
158
|
+
- spec/internal/config/database.yml
|
159
|
+
- spec/internal/config/routes.rb
|
160
|
+
- spec/internal/db/combustion_test.sqlite
|
161
|
+
- spec/internal/db/schema.rb
|
162
|
+
- spec/internal/log/.gitignore
|
163
|
+
- spec/internal/public/favicon.ico
|
164
|
+
- spec/lib/outpost/aggregator/json_input_spec.rb
|
165
|
+
- spec/lib/outpost/aggregator/simple_json_spec.rb
|
166
|
+
- spec/spec_helper.rb
|
167
|
+
homepage: https://github.com/SCPR/outpost-aggregator
|
168
|
+
licenses:
|
169
|
+
- MIT
|
170
|
+
post_install_message:
|
171
|
+
rdoc_options: []
|
172
|
+
require_paths:
|
173
|
+
- lib
|
174
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
none: false
|
176
|
+
requirements:
|
177
|
+
- - ! '>='
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '0'
|
180
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
+
none: false
|
182
|
+
requirements:
|
183
|
+
- - ! '>='
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
requirements: []
|
187
|
+
rubyforge_project:
|
188
|
+
rubygems_version: 1.8.25
|
189
|
+
signing_key:
|
190
|
+
specification_version: 3
|
191
|
+
summary: A simple UI and server-side integration to help aggregate content using an
|
192
|
+
API.
|
193
|
+
test_files:
|
194
|
+
- spec/factories.rb
|
195
|
+
- spec/internal/config/database.yml
|
196
|
+
- spec/internal/config/routes.rb
|
197
|
+
- spec/internal/db/combustion_test.sqlite
|
198
|
+
- spec/internal/db/schema.rb
|
199
|
+
- spec/internal/log/.gitignore
|
200
|
+
- spec/internal/public/favicon.ico
|
201
|
+
- spec/lib/outpost/aggregator/json_input_spec.rb
|
202
|
+
- spec/lib/outpost/aggregator/simple_json_spec.rb
|
203
|
+
- spec/spec_helper.rb
|
204
|
+
has_rdoc:
|