whurl_engine 2.1.4 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. data/app/controllers/whurl_engine/chapters_controller.rb +32 -0
  2. data/app/controllers/whurl_engine/stories_controller.rb +36 -0
  3. data/app/models/whurl_engine/chapter.rb +6 -0
  4. data/app/models/whurl_engine/story.rb +5 -0
  5. data/app/views/layouts/whurl_engine/application.html.haml +3 -1
  6. data/app/views/whurl_engine/categories/index.html.haml +2 -2
  7. data/app/views/whurl_engine/chapters/_chapter.html.haml +9 -0
  8. data/app/views/whurl_engine/chapters/_form.html.haml +29 -0
  9. data/app/views/whurl_engine/chapters/create.js.haml +5 -0
  10. data/app/views/whurl_engine/chapters/destroy.js.haml +1 -0
  11. data/app/views/whurl_engine/chapters/edit.js.haml +3 -0
  12. data/app/views/whurl_engine/chapters/new.js.haml +3 -0
  13. data/app/views/whurl_engine/chapters/update.js.haml +6 -0
  14. data/app/views/whurl_engine/resources/show.html.haml +1 -0
  15. data/app/views/whurl_engine/stories/_form.html.haml +24 -0
  16. data/app/views/whurl_engine/stories/_story.html.haml +10 -0
  17. data/app/views/whurl_engine/stories/create.js.haml +5 -0
  18. data/app/views/whurl_engine/stories/destroy.js.haml +1 -0
  19. data/app/views/whurl_engine/stories/edit.js.haml +3 -0
  20. data/app/views/whurl_engine/stories/index.html.haml +5 -0
  21. data/app/views/whurl_engine/stories/new.js.haml +3 -0
  22. data/app/views/whurl_engine/stories/update.js.haml +6 -0
  23. data/config/initializers/string.rb +0 -1
  24. data/config/routes.rb +2 -0
  25. data/db/migrate/20120309045108_whurl_create_stories_table.rb +9 -0
  26. data/db/migrate/20120309055033_whurl_create_chapters_table.rb +11 -0
  27. data/lib/whurl_engine/version.rb +1 -1
  28. metadata +47 -26
@@ -0,0 +1,32 @@
1
+ module WhurlEngine
2
+ class ChaptersController < WhurlEngine::ApplicationController
3
+ def new
4
+ @chapter = WhurlEngine::Chapter.new(:story_id => params[:story_id])
5
+ end
6
+
7
+ def create
8
+ @chapter = WhurlEngine::Chapter.new(params[:chapter])
9
+ unless @chapter.save
10
+ render :partial => 'error'
11
+ end
12
+ end
13
+
14
+ def edit
15
+ @chapter = WhurlEngine::Chapter.find(params[:id])
16
+ end
17
+
18
+ def update
19
+ @chapter = WhurlEngine::Chapter.find(params[:id])
20
+ unless @chapter.update_attributes(params[:chapter])
21
+ render :partial => 'error'
22
+ end
23
+ end
24
+
25
+ def destroy
26
+ @chapter = WhurlEngine::Chapter.find(params[:id])
27
+ unless @chapter.destroy
28
+ render :partial => 'error'
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ module WhurlEngine
2
+ class StoriesController < WhurlEngine::ApplicationController
3
+ def index
4
+ @stories = WhurlEngine::Story.all
5
+ end
6
+
7
+ def new
8
+ @story = WhurlEngine::Story.new
9
+ end
10
+
11
+ def create
12
+ @story = WhurlEngine::Story.new(params[:story])
13
+ unless @story.save
14
+ render :partial => 'whurl_engine/shared/error', :locals => {:object => @story}
15
+ end
16
+ end
17
+
18
+ def edit
19
+ @story = WhurlEngine::Story.find(params[:id])
20
+ end
21
+
22
+ def update
23
+ @story = WhurlEngine::Story.find(params[:id])
24
+ unless @story.update_attributes(params[:story])
25
+ render :partial => 'whurl_engine/shared/error', :locals => {:object => @story}
26
+ end
27
+ end
28
+
29
+ def destroy
30
+ @story = WhurlEngine::Story.find(params[:id])
31
+ unless @story.destroy
32
+ render :partial => 'whurl_engine/shared/error', :locals => {:object => @story}
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,6 @@
1
+ module WhurlEngine
2
+ class Chapter < ActiveRecord::Base
3
+ belongs_to :whurl, :primary_key => :hash_key
4
+ belongs_to :story
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ module WhurlEngine
2
+ class Story < ActiveRecord::Base
3
+ has_many :chapters
4
+ end
5
+ end
@@ -31,6 +31,8 @@
31
31
  =link_to "Documentation Home", root_path
32
32
  |
33
33
  =link_to "Console", new_whurl_path
34
+ |
35
+ =link_to "Stories", stories_path
34
36
  .content
35
37
  - if notice || alert
36
38
  .flash
@@ -48,4 +50,4 @@
48
50
  %a.contact{:href => "mailto:will.read@gmail.com"} Will Read
49
51
  See it on
50
52
  = succeed "." do
51
- %a{:href => "https://github.com/tildewill/whurl"} Github
53
+ %a{:href => "https://github.com/tildewill/whurl_engine"} Github
@@ -3,5 +3,5 @@
3
3
  -if authorized?(:manage, nil, WhurlEngine::Category)
4
4
  = link_to('Add Category', new_category_path, :remote => true, :class => 'popup button')
5
5
  .category_list
6
- - @categories.each do |category|
7
- = render(category)
6
+ - @categories.each do |category|
7
+ = render(category)
@@ -0,0 +1,9 @@
1
+ %li
2
+ %div{:id => "chapter_#{chapter.id}"}
3
+ %h3
4
+ =chapter.title
5
+ -if authorized?(:manage, nil, WhurlEngine::Chapter)
6
+ = link_to('', edit_chapter_path(chapter), :remote => true, :class => 'edit button icon_only')
7
+ = link_to( '', chapter, :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => 'destroy button icon_only')
8
+ %p=chapter.description
9
+ = render(chapter.whurl)
@@ -0,0 +1,29 @@
1
+ :javascript
2
+ $(function() {
3
+ $( ".whurl_engine_chapter" ).dialog(
4
+ {
5
+ modal: true,
6
+ autoOpen: false,
7
+ title: 'Manage Resources',
8
+ minWidth: 375,
9
+ minHeight: 300,
10
+ close: function(event, ui) {
11
+ $(this).remove();
12
+ }
13
+ });
14
+ });
15
+ .whurl_engine_chapter
16
+ = form_for @chapter, :remote => true do |f|
17
+ = f.hidden_field :story_id
18
+
19
+ %div
20
+ = f.label :title
21
+ = f.text_field :title, :placeholder => 'eg. Logging in'
22
+ %div
23
+ = f.label :description
24
+ %div
25
+ = f.text_area :description
26
+ %div
27
+ = f.label :whurl_id
28
+ = f.text_field :whurl_id, :placeholder => "the last part of a Whurl's url"
29
+ = f.submit :value => 'Submit'
@@ -0,0 +1,5 @@
1
+ $(".whurl_engine_chapter").dialog('close');
2
+
3
+ - content = escape_javascript(render(@chapter))
4
+ $('#story_#{@chapter.story_id} .chapters').append("#{content}");
5
+ $("#chapter_#{@chapter.id}").effect("highlight", {}, 3000);
@@ -0,0 +1 @@
1
+ $("#chapter_#{@chapter.id}").fadeOut()
@@ -0,0 +1,3 @@
1
+ - content = escape_javascript(render(:partial => 'form', :locals => {:chapter => @chapter}))
2
+ $('.content').append("#{content}");
3
+ $('.whurl_engine_chapter').dialog('open');
@@ -0,0 +1,3 @@
1
+ - content = escape_javascript(render(:partial => 'form', :locals => {:chapter => @chapter}))
2
+ $('.content').append("#{content}");
3
+ $('.whurl_engine_chapter').dialog('open');
@@ -0,0 +1,6 @@
1
+ $(".whurl_engine_chapter").dialog('close');
2
+
3
+ - content = escape_javascript(render(@chapter));
4
+ target_row = $("#chapter_#{@chapter.id}");
5
+ target_row.replaceWith("#{content}");
6
+ $("#chapter_#{@chapter.id}").effect("highlight", {}, 3000);
@@ -31,6 +31,7 @@
31
31
  %h3{:class => "whurl_#{whurl.id}"}
32
32
  %a{:href => "#whurl_#{whurl.id}"}=whurl.name
33
33
  .container{:class => "whurl_#{whurl.id}"}
34
+ .permalink= link_to short_whurl_url(whurl), short_whurl_url(whurl), target: 'whurl'
34
35
  -if authorized?(:manage, nil, WhurlEngine::Resource)
35
36
  = link_to('', edit_whurl_path(whurl), :remote => true, :class => 'edit button icon_only')
36
37
  = link_to( '', whurl, :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => 'destroy button icon_only')
@@ -0,0 +1,24 @@
1
+ :javascript
2
+ $(function() {
3
+ $( ".whurl_engine_story" ).dialog(
4
+ {
5
+ modal: true,
6
+ autoOpen: false,
7
+ title: 'Manage Stories',
8
+ minWidth: 375,
9
+ minHeight: 300,
10
+ close: function(event, ui) {
11
+ $(this).remove();
12
+ }
13
+ });
14
+ });
15
+ .whurl_engine_story
16
+ = form_for story, :remote => true do |f|
17
+ %div
18
+ = f.label :title
19
+ = f.text_field :title, :placeholder => 'eg. Log in, Change my profile, Log out'
20
+ %div
21
+ = f.label :description
22
+ %div
23
+ = f.text_area :description
24
+ = f.submit :value => 'Submit'
@@ -0,0 +1,10 @@
1
+ %div{:id => "story_#{story.id}"}
2
+ %h2
3
+ = story.title
4
+ -if authorized?(:manage, nil, WhurlEngine::Story)
5
+ = link_to('Add Chapter', new_chapter_path(:story_id => story.id), :remote => true, :class => 'popup button')
6
+ = link_to('', edit_story_path(story), :remote => true, :class => 'edit button icon_only')
7
+ = link_to( '', story, :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => 'destroy button icon_only')
8
+ %p= story.description
9
+ .chapters
10
+ = render story.chapters
@@ -0,0 +1,5 @@
1
+ $(".whurl_engine_story").dialog('close');
2
+
3
+ - content = escape_javascript(render(@story))
4
+ $('.story_list').append("#{content}");
5
+ $("#story_#{@story.id}").effect("highlight", {}, 3000);
@@ -0,0 +1 @@
1
+ $("#story_#{@story.id}").fadeOut()
@@ -0,0 +1,3 @@
1
+ - content = escape_javascript(render(:partial => 'form', :locals => {:story => @story}))
2
+ $('.story_list').append("#{content}");
3
+ $('.whurl_engine_story').dialog('open');
@@ -0,0 +1,5 @@
1
+ %h1 Tell me a story using the API...
2
+ -if authorized?(:manage, nil, WhurlEngine::Story)
3
+ = link_to('Add Story', new_story_path, :remote => true, :class => 'popup button')
4
+ %ol.story_list
5
+ = render @stories
@@ -0,0 +1,3 @@
1
+ - content = escape_javascript(render(:partial => 'form', :locals => {:story => @story}))
2
+ $('.content').append("#{content}");
3
+ $('.whurl_engine_story').dialog('open');
@@ -0,0 +1,6 @@
1
+ $(".whurl_engine_story").dialog('close');
2
+
3
+ - content = escape_javascript(render(@story));
4
+ target_row = $("#story_#{@story.id}");
5
+ target_row.replaceWith("#{content}");
6
+ $("#story_#{@story.id}").effect("highlight", {}, 3000);
@@ -29,7 +29,6 @@ class String
29
29
  else
30
30
  self
31
31
  end
32
-
33
32
  rescue
34
33
  self
35
34
  end
data/config/routes.rb CHANGED
@@ -5,5 +5,7 @@ WhurlEngine::Engine.routes.draw do
5
5
  resources :header_definitions, :except => [:index, :show]
6
6
  resources :whurls, :except => [:index]
7
7
  resources :resources, :except => :index
8
+ resources :chapters, :except => [:index, :show]
9
+ resources :stories, :except => :show
8
10
  match '/:id' => 'whurls#show', :as => :short_whurl
9
11
  end
@@ -0,0 +1,9 @@
1
+ class WhurlCreateStoriesTable < ActiveRecord::Migration
2
+ def change
3
+ create_table :whurl_engine_stories do |t|
4
+ t.string :title
5
+ t.text :description
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ class WhurlCreateChaptersTable < ActiveRecord::Migration
2
+ def change
3
+ create_table :whurl_engine_chapters do |t|
4
+ t.string :title
5
+ t.text :description
6
+ t.integer :whurl_id
7
+ t.integer :story_id
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module WhurlEngine
2
- VERSION = "2.1.4"
2
+ VERSION = "2.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whurl_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.4
4
+ version: 2.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-04 00:00:00.000000000 -08:00
12
+ date: 2012-03-08 00:00:00.000000000 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coderay
17
- requirement: &2158600320 !ruby/object:Gem::Requirement
17
+ requirement: &2156304500 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0.9'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2158600320
25
+ version_requirements: *2156304500
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: coffee-script
28
- requirement: &2158599880 !ruby/object:Gem::Requirement
28
+ requirement: &2156304060 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2158599880
36
+ version_requirements: *2156304060
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: httmultiparty
39
- requirement: &2158599320 !ruby/object:Gem::Requirement
39
+ requirement: &2156303500 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0.2'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2158599320
47
+ version_requirements: *2156303500
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: haml
50
- requirement: &2158598820 !ruby/object:Gem::Requirement
50
+ requirement: &2156302980 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '3.1'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2158598820
58
+ version_requirements: *2156302980
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: json
61
- requirement: &2158598340 !ruby/object:Gem::Requirement
61
+ requirement: &2156302480 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '1.5'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2158598340
69
+ version_requirements: *2156302480
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rails
72
- requirement: &2158597860 !ruby/object:Gem::Requirement
72
+ requirement: &2156302000 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '3.1'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *2158597860
80
+ version_requirements: *2156302000
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rinku
83
- requirement: &2158597400 !ruby/object:Gem::Requirement
83
+ requirement: &2156301520 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ~>
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '1.5'
89
89
  type: :runtime
90
90
  prerelease: false
91
- version_requirements: *2158597400
91
+ version_requirements: *2156301520
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: sass
94
- requirement: &2158596920 !ruby/object:Gem::Requirement
94
+ requirement: &2156301040 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ~>
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '3.1'
100
100
  type: :runtime
101
101
  prerelease: false
102
- version_requirements: *2158596920
102
+ version_requirements: *2156301040
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: uglifier
105
- requirement: &2158596480 !ruby/object:Gem::Requirement
105
+ requirement: &2156300640 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *2158596480
113
+ version_requirements: *2156300640
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: heroku
116
- requirement: &2158595940 !ruby/object:Gem::Requirement
116
+ requirement: &2156300160 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *2158595940
124
+ version_requirements: *2156300160
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: mysql
127
- requirement: &2158595400 !ruby/object:Gem::Requirement
127
+ requirement: &2156299640 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 2.8.1
133
133
  type: :development
134
134
  prerelease: false
135
- version_requirements: *2158595400
135
+ version_requirements: *2156299640
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: webmock
138
- requirement: &2158594900 !ruby/object:Gem::Requirement
138
+ requirement: &2156299140 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ~>
@@ -143,7 +143,7 @@ dependencies:
143
143
  version: 1.7.10
144
144
  type: :development
145
145
  prerelease: false
146
- version_requirements: *2158594900
146
+ version_requirements: *2156299140
147
147
  description: ! "Whurl is a mountable engine for Rails 3.1+ apps allowing\n you
148
148
  to show the functionality of your API. You can save API calls and share them with
149
149
  your team or the public."
@@ -198,15 +198,19 @@ files:
198
198
  - app/assets/stylesheets/whurl_engine/whurl.css.scss
199
199
  - app/controllers/whurl_engine/application_controller.rb
200
200
  - app/controllers/whurl_engine/categories_controller.rb
201
+ - app/controllers/whurl_engine/chapters_controller.rb
201
202
  - app/controllers/whurl_engine/header_definitions_controller.rb
202
203
  - app/controllers/whurl_engine/parameter_definitions_controller.rb
203
204
  - app/controllers/whurl_engine/resources_controller.rb
205
+ - app/controllers/whurl_engine/stories_controller.rb
204
206
  - app/controllers/whurl_engine/whurls_controller.rb
205
207
  - app/helpers/whurl_engine/application_helper.rb
206
208
  - app/models/whurl_engine/category.rb
209
+ - app/models/whurl_engine/chapter.rb
207
210
  - app/models/whurl_engine/header_definition.rb
208
211
  - app/models/whurl_engine/parameter_definition.rb
209
212
  - app/models/whurl_engine/resource.rb
213
+ - app/models/whurl_engine/story.rb
210
214
  - app/models/whurl_engine/whurl.rb
211
215
  - app/views/layouts/whurl_engine/application.html.haml
212
216
  - app/views/whurl_engine/categories/_category.html.haml
@@ -217,6 +221,13 @@ files:
217
221
  - app/views/whurl_engine/categories/index.html.haml
218
222
  - app/views/whurl_engine/categories/new.js.haml
219
223
  - app/views/whurl_engine/categories/update.js.haml
224
+ - app/views/whurl_engine/chapters/_chapter.html.haml
225
+ - app/views/whurl_engine/chapters/_form.html.haml
226
+ - app/views/whurl_engine/chapters/create.js.haml
227
+ - app/views/whurl_engine/chapters/destroy.js.haml
228
+ - app/views/whurl_engine/chapters/edit.js.haml
229
+ - app/views/whurl_engine/chapters/new.js.haml
230
+ - app/views/whurl_engine/chapters/update.js.haml
220
231
  - app/views/whurl_engine/header_definitions/_form.html.haml
221
232
  - app/views/whurl_engine/header_definitions/_header_definition.html.haml
222
233
  - app/views/whurl_engine/header_definitions/create.js.haml
@@ -240,6 +251,14 @@ files:
240
251
  - app/views/whurl_engine/resources/show.html.haml
241
252
  - app/views/whurl_engine/resources/update.js.haml
242
253
  - app/views/whurl_engine/shared/_error.js.haml
254
+ - app/views/whurl_engine/stories/_form.html.haml
255
+ - app/views/whurl_engine/stories/_story.html.haml
256
+ - app/views/whurl_engine/stories/create.js.haml
257
+ - app/views/whurl_engine/stories/destroy.js.haml
258
+ - app/views/whurl_engine/stories/edit.js.haml
259
+ - app/views/whurl_engine/stories/index.html.haml
260
+ - app/views/whurl_engine/stories/new.js.haml
261
+ - app/views/whurl_engine/stories/update.js.haml
243
262
  - app/views/whurl_engine/whurls/_edit_form.html.haml
244
263
  - app/views/whurl_engine/whurls/_form.html.haml
245
264
  - app/views/whurl_engine/whurls/_input_set.html.haml
@@ -271,6 +290,8 @@ files:
271
290
  - db/migrate/20120118011913_whurl_create_header_definitions_table.rb
272
291
  - db/migrate/20120214074332_whurl_add_message_to_whurls.rb
273
292
  - db/migrate/20120221012000_whurl_add_basic_auth_fields.rb
293
+ - db/migrate/20120309045108_whurl_create_stories_table.rb
294
+ - db/migrate/20120309055033_whurl_create_chapters_table.rb
274
295
  - lib/tasks/whurl_engine_tasks.rake
275
296
  - lib/whurl_engine/config.rb
276
297
  - lib/whurl_engine/engine.rb