plan_b 0.0.1.pre
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/README.md +43 -0
- data/Rakefile +13 -0
- data/app/assets/images/plan_b/plan_b.png +0 -0
- data/app/assets/javascripts/plan_b/application.js +9 -0
- data/app/assets/javascripts/plan_b/itineraries/controllers.js +67 -0
- data/app/assets/javascripts/plan_b/itineraries/services.js +4 -0
- data/app/assets/javascripts/plan_b/plan_b.js +53 -0
- data/app/assets/stylesheets/plan_b/application.css.scss +2 -0
- data/app/assets/stylesheets/plan_b/foundation_and_overrides.scss +1015 -0
- data/app/assets/templates/plan_b/itineraries/edit.html.erb +87 -0
- data/app/assets/templates/plan_b/itineraries/new.html.erb +22 -0
- data/app/controllers/plan_b/angular_controller.rb +16 -0
- data/app/controllers/plan_b/application_controller.rb +5 -0
- data/app/controllers/plan_b/hiking_profiles_controller.rb +59 -0
- data/app/controllers/plan_b/itineraries_controller.rb +46 -0
- data/app/helpers/plan_b/application_helper.rb +4 -0
- data/app/helpers/plan_b/itineraries_helper.rb +4 -0
- data/app/models/plan_b/hiking_template.rb +7 -0
- data/app/models/plan_b/itinerary.rb +15 -0
- data/app/models/plan_b/itinerary_template.rb +8 -0
- data/app/models/plan_b/template_creator.rb +25 -0
- data/app/views/plan_b/angular/index.html.haml +38 -0
- data/config/initializers/haml.rb +1 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/plan_b.en.yml +31 -0
- data/config/routes.rb +20 -0
- data/db/migrate/20130408193857_create_plan_b_itineraries.rb +16 -0
- data/db/migrate/20130408193858_create_plan_b_itinerary_templates.rb +10 -0
- data/db/migrate/20130408193859_create_plan_b_hiking_templates.rb +10 -0
- data/lib/plan_b/config.rb +10 -0
- data/lib/plan_b/engine.rb +12 -0
- data/lib/plan_b/version.rb +3 -0
- data/lib/plan_b.rb +5 -0
- metadata +161 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
<h1>
|
2
|
+
{{ itinerary.title }}
|
3
|
+
<small><a href='#' ng-click='addTemplate("hiking")'><%= I18n.translate 'plan_b.itineraries.form.add_hike' %></a></small>
|
4
|
+
</h1>
|
5
|
+
|
6
|
+
<div class="alert-box success" ng-show="flash.success">
|
7
|
+
{{ flash.success }}
|
8
|
+
</div>
|
9
|
+
|
10
|
+
<div class="alert-box alert" ng-show="flash.error">
|
11
|
+
{{ flash.error }}
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<form>
|
15
|
+
|
16
|
+
<div ng-repeat="template in itinerary.hiking_templates">
|
17
|
+
<fieldset>
|
18
|
+
<legend>
|
19
|
+
<%= I18n.translate 'plan_b.itineraries.form.legends.hike' %>
|
20
|
+
<a href="#" ng-click="removeTemplate($index)">Remove</a>
|
21
|
+
</legend>
|
22
|
+
<div class="row">
|
23
|
+
<div class="large-4 columns">
|
24
|
+
<label><%= PlanB::HikingTemplate.human_attribute_name 'start' %></label>
|
25
|
+
<input ng-model="template.start">
|
26
|
+
</div>
|
27
|
+
<div class="large-4 columns">
|
28
|
+
<label><%= PlanB::HikingTemplate.human_attribute_name 'end' %></label>
|
29
|
+
<input ng-model="template.end">
|
30
|
+
</div>
|
31
|
+
<div class="large-4 columns">
|
32
|
+
<label><%= PlanB::HikingTemplate.human_attribute_name 'distance' %></label>
|
33
|
+
<input ng-model="template.distance">
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</fieldset>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<fieldset>
|
40
|
+
<legend><%= I18n.translate 'plan_b.itineraries.form.legends.details' %></legend>
|
41
|
+
|
42
|
+
<div class="row">
|
43
|
+
<div class="large-12 columns">
|
44
|
+
<label>Title</label>
|
45
|
+
<input type="text" ng-model="itinerary.title" placeholder="<%= I18n.translate 'plan_b.itineraries.form.new.title_placeholder' %>">
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
|
49
|
+
<div class="row">
|
50
|
+
<div class="large-6 columns">
|
51
|
+
<label><%= PlanB::Itinerary.human_attribute_name('start') %></label>
|
52
|
+
<input data-date-format="yyyy-mm-dd" ng-model="itinerary.start" class="date">
|
53
|
+
</div>
|
54
|
+
<div class="large-6 columns">
|
55
|
+
<label><%= PlanB::Itinerary.human_attribute_name('end') %></label>
|
56
|
+
<input data-date-format="yyyy-mm-dd" ng-model="itinerary.end" class="date">
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<div class="row">
|
61
|
+
<div class="large-12 columns">
|
62
|
+
<label><%= PlanB::Itinerary.human_attribute_name('preplanning') %></label>
|
63
|
+
<textarea ng-model="itinerary.preplanning" placeholder="Enter in some details about what you're planning"></textarea>
|
64
|
+
</div>
|
65
|
+
</div>
|
66
|
+
|
67
|
+
<div class="row">
|
68
|
+
<div class="large-12 columns">
|
69
|
+
<label><%= PlanB::Itinerary.human_attribute_name('summary') %></label>
|
70
|
+
<textarea ng-model="itinerary.summary" placeholder="After the trip, enter in a summary of how awesome it was."></textarea>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
|
74
|
+
|
75
|
+
<div class="row">
|
76
|
+
<div class="large-12 columns">
|
77
|
+
<label><input type="checkbox"><span class="custom checkbox"></span> Published?</label>
|
78
|
+
</div>
|
79
|
+
</div>
|
80
|
+
</fieldset>
|
81
|
+
|
82
|
+
<div class="row">
|
83
|
+
<div class="large-3 columns">
|
84
|
+
<a href='#' class="button prefix" ng-click="save()"><%= I18n.translate 'plan_b.itineraries.form.edit.submit' %></a>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
</form>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<h1>
|
2
|
+
<small>{{ itinerary.title }}</small>
|
3
|
+
</h1>
|
4
|
+
|
5
|
+
<div class="alert-box success" ng-show="flash.success">
|
6
|
+
{{ flash.success }}
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="alert-box alert" ng-show="flash.error">
|
10
|
+
{{ flash.error }}
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<form>
|
14
|
+
<div class="row collapse">
|
15
|
+
<div class="large-9 columns">
|
16
|
+
<input type="text" ng-model="itinerary.title" placeholder="<%= I18n.translate 'plan_b.itineraries.form.new.title_placeholder' %>">
|
17
|
+
</div>
|
18
|
+
<div class="large-3 columns">
|
19
|
+
<a href='#' class="button prefix" ng-click="save()"><%= I18n.translate 'plan_b.itineraries.form.new.submit' %></a>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</form>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_dependency "plan_b/application_controller"
|
2
|
+
|
3
|
+
module PlanB
|
4
|
+
class AngularController < ApplicationController
|
5
|
+
before_filter :_authenticate!
|
6
|
+
|
7
|
+
def index
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def _authenticate!
|
13
|
+
instance_eval &PlanB::Config.authenticate_with
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_dependency "plan_b/application_controller"
|
2
|
+
|
3
|
+
module PlanB
|
4
|
+
class HikingProfilesController < ApplicationController
|
5
|
+
|
6
|
+
def show
|
7
|
+
@hiking_profile = HikingProfiles.find params[:id]
|
8
|
+
|
9
|
+
respond_to do |format|
|
10
|
+
format.json { render json: @hiking_profile }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def new
|
15
|
+
@itinerary = Itinerary.new
|
16
|
+
|
17
|
+
respond_to do |format|
|
18
|
+
format.json { render json: @hiking_profile }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# POST /itineraries.json
|
23
|
+
def create
|
24
|
+
@hiking_profile = Itinerary.new(params[:itinerary])
|
25
|
+
|
26
|
+
respond_to do |format|
|
27
|
+
if @hiking_profile.save
|
28
|
+
format.json { render json: @hiking_profile, status: :created, location: @hiking_profile }
|
29
|
+
else
|
30
|
+
format.json { render json: @hiking_profile.errors, status: :unprocessable_entity }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# PUT /itineraries/1.json
|
36
|
+
def update
|
37
|
+
@hiking_profile = Itinerary.find(params[:id])
|
38
|
+
|
39
|
+
respond_to do |format|
|
40
|
+
if @hiking_profile.update_attributes(params[:hiking_profile])
|
41
|
+
format.json { head :no_content }
|
42
|
+
else
|
43
|
+
format.json { render json: @hiking_profile.errors, status: :unprocessable_entity }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# DELETE /itineraries/1
|
49
|
+
# DELETE /itineraries/1.json
|
50
|
+
def destroy
|
51
|
+
@itinerary = Itinerary.find(params[:id])
|
52
|
+
@itinerary.destroy
|
53
|
+
|
54
|
+
respond_to do |format|
|
55
|
+
format.json { head :no_content }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_dependency "plan_b/application_controller"
|
2
|
+
|
3
|
+
module PlanB
|
4
|
+
class ItinerariesController < ApplicationController
|
5
|
+
respond_to :json
|
6
|
+
|
7
|
+
def index
|
8
|
+
@itineraries = Itinerary.all
|
9
|
+
respond_with @itineraries
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
@itinerary = Itinerary.find(params[:id])
|
14
|
+
respond_with @itinerary.to_json(include: :hiking_templates)
|
15
|
+
end
|
16
|
+
|
17
|
+
def new
|
18
|
+
@itinerary = Itinerary.new
|
19
|
+
respond_with @itinerary
|
20
|
+
end
|
21
|
+
|
22
|
+
def create
|
23
|
+
@itinerary = PlanB::Itinerary.new params[:itinerary]
|
24
|
+
@itinerary.save
|
25
|
+
respond_with @itinerary
|
26
|
+
end
|
27
|
+
|
28
|
+
# PUT /itineraries/1.json
|
29
|
+
def update
|
30
|
+
@itinerary = PlanB::TemplateCreator.new(Itinerary.find(params[:id]), params[:itinerary])
|
31
|
+
@itinerary.save
|
32
|
+
respond_with @itinerary
|
33
|
+
end
|
34
|
+
|
35
|
+
# DELETE /itineraries/1
|
36
|
+
# DELETE /itineraries/1.json
|
37
|
+
def destroy
|
38
|
+
@itinerary = Itinerary.find(params[:id])
|
39
|
+
@itinerary.destroy
|
40
|
+
|
41
|
+
respond_to do |format|
|
42
|
+
format.json { head :no_content }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'friendly_id'
|
2
|
+
|
3
|
+
module PlanB
|
4
|
+
class Itinerary < ActiveRecord::Base
|
5
|
+
extend FriendlyId
|
6
|
+
attr_accessible :title, :start, :end, :preplanning, :summary, :published
|
7
|
+
|
8
|
+
has_many :itinerary_templates, dependent: :destroy
|
9
|
+
has_many :hiking_templates, through: :itinerary_templates, source: :template, source_type: 'PlanB::HikingTemplate'
|
10
|
+
|
11
|
+
friendly_id :title, use: :slugged
|
12
|
+
|
13
|
+
validates :title, presence: true, uniqueness: true
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PlanB
|
2
|
+
class TemplateCreator
|
3
|
+
def initialize itinerary, itinerary_params
|
4
|
+
@itinerary = itinerary
|
5
|
+
@templates = []
|
6
|
+
@itinerary_params = extract_templates(itinerary_params)
|
7
|
+
end
|
8
|
+
|
9
|
+
def save
|
10
|
+
@itinerary.update_attributes(@itinerary_params) && create_templates
|
11
|
+
end
|
12
|
+
|
13
|
+
def extract_templates itinerary_params
|
14
|
+
@templates << itinerary_params.delete(:hiking_templates)
|
15
|
+
itinerary_params
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_templates
|
19
|
+
@itinerary.itinerary_templates.destroy_all
|
20
|
+
@templates.each do |t|
|
21
|
+
@itinerary.itinerary_templates.create(template: PlanB::HikingTemplate.new(t))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html(ng-app='plan-b' mount-path='#{plan_b.root_path[0..-2]}')
|
3
|
+
%head
|
4
|
+
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
|
5
|
+
%meta{content: "width=device-width, initial-scale=1.0", name: "viewport"}
|
6
|
+
%meta{content: "NONE,NOARCHIVE", name: "robots"}
|
7
|
+
%title Plan B
|
8
|
+
= csrf_meta_tag
|
9
|
+
= stylesheet_link_tag 'plan_b/application', :media => :all
|
10
|
+
= javascript_include_tag 'vendor/custom.modernizr'
|
11
|
+
|
12
|
+
%body
|
13
|
+
.alert-box(ng-class="alertType" ng-show="alertShow")
|
14
|
+
{{ alertMessage }}
|
15
|
+
|
16
|
+
.row
|
17
|
+
.large-2.columns
|
18
|
+
%h1
|
19
|
+
= image_tag 'plan_b/plan_b.png'
|
20
|
+
.row
|
21
|
+
.large-10.push-2.columns
|
22
|
+
%div(ng-view)
|
23
|
+
.large-2.pull-10.columns(ng-controller="ItinerariesCtrl")
|
24
|
+
= PlanB::Itinerary.model_name.human.pluralize
|
25
|
+
= link_to t('plan_b.itineraries.create_new'), new_itinerary_path, class: 'button tiny secondary'
|
26
|
+
%ul.side-nav
|
27
|
+
%li(ng-hide="itineraries.length")
|
28
|
+
= t('plan_b.itineraries.none_created')
|
29
|
+
%li(ng-repeat="itinerary in itineraries")
|
30
|
+
%a(href='/plan_b/itineraries/{{itinerary.id}}/edit') {{itinerary.title}}
|
31
|
+
%footer.row
|
32
|
+
.large-12.columns
|
33
|
+
%hr
|
34
|
+
.row
|
35
|
+
.large-6.columns
|
36
|
+
%p Plan B
|
37
|
+
|
38
|
+
= javascript_include_tag 'plan_b/application'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'haml'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
#
|
3
|
+
# This file contains settings for ActionController::ParamsWrapper which
|
4
|
+
# is enabled by default.
|
5
|
+
|
6
|
+
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
7
|
+
ActiveSupport.on_load(:action_controller) do
|
8
|
+
wrap_parameters format: [:json]
|
9
|
+
end
|
10
|
+
|
11
|
+
# Disable root element in JSON by default.
|
12
|
+
ActiveSupport.on_load(:active_record) do
|
13
|
+
self.include_root_in_json = false
|
14
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
attributes:
|
4
|
+
plan_b/hiking_template:
|
5
|
+
distance: Distance
|
6
|
+
end: Ending trailhead
|
7
|
+
start: Starting trailhead
|
8
|
+
plan_b/itinerary:
|
9
|
+
title: Title
|
10
|
+
plan_b:
|
11
|
+
itineraries:
|
12
|
+
types:
|
13
|
+
backpacking: Backpacking
|
14
|
+
basic: Basic
|
15
|
+
climbing: Climbing
|
16
|
+
hiking: Hiking
|
17
|
+
sight_seeing: Sight seeing
|
18
|
+
create_new: Create new
|
19
|
+
none_created: You haven't created any itineraries yet.
|
20
|
+
form:
|
21
|
+
add_hike: Add Hike
|
22
|
+
legends:
|
23
|
+
details: Details
|
24
|
+
hike: Hike
|
25
|
+
edit:
|
26
|
+
submit: Save Itinerary
|
27
|
+
new:
|
28
|
+
submit: Create Itinerary
|
29
|
+
title_placeholder: Name your itinerary
|
30
|
+
trips:
|
31
|
+
title: Trips
|
data/config/routes.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
PlanB::Engine.routes.draw do
|
2
|
+
|
3
|
+
class FormatTest
|
4
|
+
attr_accessor :mime_type
|
5
|
+
|
6
|
+
def initialize(format)
|
7
|
+
@mime_type = Mime::Type.lookup_by_extension(format)
|
8
|
+
end
|
9
|
+
|
10
|
+
def matches?(request)
|
11
|
+
request.format == mime_type
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
resources :hiking_profiles, constraints: FormatTest.new(:json)
|
16
|
+
resources :itineraries, constraints: FormatTest.new(:json)
|
17
|
+
|
18
|
+
get '/*foo', to: 'angular#index', constraints: FormatTest.new(:html)
|
19
|
+
root to: 'angular#index', constraints: FormatTest.new(:html)
|
20
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreatePlanBItineraries < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :plan_b_itineraries do |t|
|
4
|
+
t.string :title
|
5
|
+
t.string :slug
|
6
|
+
t.datetime :start
|
7
|
+
t.datetime :end
|
8
|
+
t.text :preplanning
|
9
|
+
t.text :summary
|
10
|
+
t.boolean :published, default: false, null: false
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
add_index :plan_b_itineraries, :slug, unique: true
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'sass'
|
2
|
+
|
3
|
+
module PlanB
|
4
|
+
class Engine < ::Rails::Engine
|
5
|
+
isolate_namespace PlanB
|
6
|
+
|
7
|
+
initializer "zurb-foundation" do
|
8
|
+
zurb_dir = Gem::Specification.find_by_name('zurb-foundation').gem_dir
|
9
|
+
Sass.load_paths << File.join(zurb_dir, 'scss')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/plan_b.rb
ADDED
metadata
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: plan_b
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Eric Thomas
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-04-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: friendly_id
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 4.0.9
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 4.0.9
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: haml
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '4.0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '4.0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rails
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '3.2'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.2'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sass-rails
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.2'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.2'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: zurb-foundation
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - '='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 4.0.3
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - '='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 4.0.3
|
94
|
+
description: Plan B is a Rails engine that provides a flexible itinerary planning.
|
95
|
+
email:
|
96
|
+
- eric.l.m.thomas@gmail.com
|
97
|
+
executables: []
|
98
|
+
extensions: []
|
99
|
+
extra_rdoc_files: []
|
100
|
+
files:
|
101
|
+
- app/assets/images/plan_b/plan_b.png
|
102
|
+
- app/assets/javascripts/plan_b/application.js
|
103
|
+
- app/assets/javascripts/plan_b/itineraries/controllers.js
|
104
|
+
- app/assets/javascripts/plan_b/itineraries/services.js
|
105
|
+
- app/assets/javascripts/plan_b/plan_b.js
|
106
|
+
- app/assets/stylesheets/plan_b/application.css.scss
|
107
|
+
- app/assets/stylesheets/plan_b/foundation_and_overrides.scss
|
108
|
+
- app/assets/templates/plan_b/itineraries/edit.html.erb
|
109
|
+
- app/assets/templates/plan_b/itineraries/new.html.erb
|
110
|
+
- app/controllers/plan_b/angular_controller.rb
|
111
|
+
- app/controllers/plan_b/application_controller.rb
|
112
|
+
- app/controllers/plan_b/hiking_profiles_controller.rb
|
113
|
+
- app/controllers/plan_b/itineraries_controller.rb
|
114
|
+
- app/helpers/plan_b/application_helper.rb
|
115
|
+
- app/helpers/plan_b/itineraries_helper.rb
|
116
|
+
- app/models/plan_b/hiking_template.rb
|
117
|
+
- app/models/plan_b/itinerary.rb
|
118
|
+
- app/models/plan_b/itinerary_template.rb
|
119
|
+
- app/models/plan_b/template_creator.rb
|
120
|
+
- app/views/plan_b/angular/index.html.haml
|
121
|
+
- config/initializers/haml.rb
|
122
|
+
- config/initializers/wrap_parameters.rb
|
123
|
+
- config/locales/plan_b.en.yml
|
124
|
+
- config/routes.rb
|
125
|
+
- db/migrate/20130408193857_create_plan_b_itineraries.rb
|
126
|
+
- db/migrate/20130408193858_create_plan_b_itinerary_templates.rb
|
127
|
+
- db/migrate/20130408193859_create_plan_b_hiking_templates.rb
|
128
|
+
- lib/plan_b/config.rb
|
129
|
+
- lib/plan_b/engine.rb
|
130
|
+
- lib/plan_b/version.rb
|
131
|
+
- lib/plan_b.rb
|
132
|
+
- Rakefile
|
133
|
+
- README.md
|
134
|
+
homepage: ''
|
135
|
+
licenses: []
|
136
|
+
post_install_message:
|
137
|
+
rdoc_options: []
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ! '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
hash: -3695193271680986366
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ! '>'
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: 1.3.1
|
155
|
+
requirements: []
|
156
|
+
rubyforge_project:
|
157
|
+
rubygems_version: 1.8.25
|
158
|
+
signing_key:
|
159
|
+
specification_version: 3
|
160
|
+
summary: An itinerary planning tool.
|
161
|
+
test_files: []
|