mugen 0.2.1

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.
Files changed (92) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +5 -0
  3. data/CHANGELOG.md +3 -0
  4. data/Gemfile +5 -0
  5. data/LICENSE +20 -0
  6. data/README.md +65 -0
  7. data/Rakefile +31 -0
  8. data/autotest/discover.rb +1 -0
  9. data/generators/README +3 -0
  10. data/generators/USAGE +34 -0
  11. data/generators/mugen_generator.rb +63 -0
  12. data/generators/templates/app/controllers/mygengo/account_controller.rb +10 -0
  13. data/generators/templates/app/controllers/mygengo/comments_controller.rb +6 -0
  14. data/generators/templates/app/controllers/mygengo/jobs_controller.rb +153 -0
  15. data/generators/templates/app/helpers/mugen_helper.rb +11 -0
  16. data/generators/templates/app/views/layouts/mygengo.html.erb +52 -0
  17. data/generators/templates/app/views/mygengo/account/_balance.haml +5 -0
  18. data/generators/templates/app/views/mygengo/account/_stats.haml +9 -0
  19. data/generators/templates/app/views/mygengo/account/index.haml +3 -0
  20. data/generators/templates/app/views/mygengo/comments/_comment.haml +7 -0
  21. data/generators/templates/app/views/mygengo/comments/_form.haml +10 -0
  22. data/generators/templates/app/views/mygengo/jobs/_comments.haml +8 -0
  23. data/generators/templates/app/views/mygengo/jobs/_feedback.haml +8 -0
  24. data/generators/templates/app/views/mygengo/jobs/_job.haml +36 -0
  25. data/generators/templates/app/views/mygengo/jobs/_revision.haml +2 -0
  26. data/generators/templates/app/views/mygengo/jobs/index.haml +8 -0
  27. data/generators/templates/app/views/mygengo/jobs/new.haml +53 -0
  28. data/generators/templates/app/views/mygengo/jobs/reject_form.haml +36 -0
  29. data/generators/templates/app/views/mygengo/jobs/review_form.haml +54 -0
  30. data/generators/templates/app/views/mygengo/jobs/revise_form.haml +7 -0
  31. data/generators/templates/app/views/mygengo/jobs/revision.haml +8 -0
  32. data/generators/templates/app/views/mygengo/jobs/show.haml +38 -0
  33. data/generators/templates/config/initializers/mugen.rb +2 -0
  34. data/generators/templates/config/routes.rb +16 -0
  35. data/generators/templates/public/stylesheets/mygengo/base.css +397 -0
  36. data/generators/templates/public/stylesheets/mygengo/mugen.css +117 -0
  37. data/generators/templates/public/stylesheets/mygengo/override.css +1 -0
  38. data/generators/templates/public/stylesheets/mygengo/scaffold.css +56 -0
  39. data/generators/templates/public/stylesheets/mygengo/style.css +373 -0
  40. data/lib/generators/mugen/README +3 -0
  41. data/lib/generators/mugen/USAGE +35 -0
  42. data/lib/generators/mugen/mugen_generator.rb +50 -0
  43. data/lib/generators/mugen/templates/app/controllers/mygengo/account_controller.rb +10 -0
  44. data/lib/generators/mugen/templates/app/controllers/mygengo/comments_controller.rb +6 -0
  45. data/lib/generators/mugen/templates/app/controllers/mygengo/jobs_controller.rb +153 -0
  46. data/lib/generators/mugen/templates/app/controllers/mygengo/mygengo_controller.rb +18 -0
  47. data/lib/generators/mugen/templates/app/helpers/mugen_helper.rb +11 -0
  48. data/lib/generators/mugen/templates/app/views/layouts/mygengo.html.erb +52 -0
  49. data/lib/generators/mugen/templates/app/views/mygengo/account/_balance.haml +5 -0
  50. data/lib/generators/mugen/templates/app/views/mygengo/account/_stats.haml +9 -0
  51. data/lib/generators/mugen/templates/app/views/mygengo/account/index.haml +3 -0
  52. data/lib/generators/mugen/templates/app/views/mygengo/comments/_comment.haml +7 -0
  53. data/lib/generators/mugen/templates/app/views/mygengo/comments/_form.haml +10 -0
  54. data/lib/generators/mugen/templates/app/views/mygengo/jobs/_comments.haml +8 -0
  55. data/lib/generators/mugen/templates/app/views/mygengo/jobs/_feedback.haml +8 -0
  56. data/lib/generators/mugen/templates/app/views/mygengo/jobs/_job.haml +36 -0
  57. data/lib/generators/mugen/templates/app/views/mygengo/jobs/_revision.haml +2 -0
  58. data/lib/generators/mugen/templates/app/views/mygengo/jobs/index.haml +8 -0
  59. data/lib/generators/mugen/templates/app/views/mygengo/jobs/new.haml +53 -0
  60. data/lib/generators/mugen/templates/app/views/mygengo/jobs/reject_form.haml +36 -0
  61. data/lib/generators/mugen/templates/app/views/mygengo/jobs/review_form.haml +54 -0
  62. data/lib/generators/mugen/templates/app/views/mygengo/jobs/revise_form.haml +7 -0
  63. data/lib/generators/mugen/templates/app/views/mygengo/jobs/revision.haml +8 -0
  64. data/lib/generators/mugen/templates/app/views/mygengo/jobs/show.haml +38 -0
  65. data/lib/generators/mugen/templates/config/initializers/mugen.rb +2 -0
  66. data/lib/generators/mugen/templates/config/routes2.rb +16 -0
  67. data/lib/generators/mugen/templates/config/routes3.rb +17 -0
  68. data/lib/generators/mugen/templates/public/images/mygengo/blank +0 -0
  69. data/lib/generators/mugen/templates/public/stylesheets/mygengo/base.css +397 -0
  70. data/lib/generators/mugen/templates/public/stylesheets/mygengo/mugen.css +117 -0
  71. data/lib/generators/mugen/templates/public/stylesheets/mygengo/override.css +1 -0
  72. data/lib/generators/mugen/templates/public/stylesheets/mygengo/scaffold.css +56 -0
  73. data/lib/generators/mugen/templates/public/stylesheets/mygengo/style.css +373 -0
  74. data/lib/mugen.rb +73 -0
  75. data/lib/mugen/account.rb +27 -0
  76. data/lib/mugen/client.rb +33 -0
  77. data/lib/mugen/core_extensions.rb +32 -0
  78. data/lib/mugen/httparty_extensions.rb +26 -0
  79. data/lib/mugen/job.rb +169 -0
  80. data/lib/mugen/jobs.rb +42 -0
  81. data/lib/mugen/service.rb +30 -0
  82. data/lib/mugen/version.rb +3 -0
  83. data/lib/tasks/mugen.rake +5 -0
  84. data/mugen.gemspec +33 -0
  85. data/rails/init.rb +1 -0
  86. data/spec/account_spec.rb +22 -0
  87. data/spec/job_spec.rb +40 -0
  88. data/spec/jobs_spec.rb +33 -0
  89. data/spec/mugen_spec.rb +33 -0
  90. data/spec/service_spec.rb +21 -0
  91. data/spec/spec_helper.rb +4 -0
  92. metadata +191 -0
@@ -0,0 +1,2 @@
1
+ pkg
2
+ *.lock
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.2"
4
+ script:
5
+ - bundle exec rspec spec/
@@ -0,0 +1,3 @@
1
+ ## 0.0.1 (January 2, 2011)
2
+
3
+ Features:
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'rake'
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Vladimir Penkin
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,65 @@
1
+ [![Build Status](https://secure.travis-ci.org/shell/mugen.png)](https://secure.travis-ci.org/shell/mugen.png)
2
+ ## Introduction
3
+ Mugen is API wrapper for MyGengo(<http://mygengo.com/>) and scaffold generator for existing rails app
4
+
5
+ ## Installation
6
+ Working best with Rails3 and jQuery
7
+
8
+ ## Rails 3.x
9
+
10
+ Add gems to your Gemfile and bundle install it:
11
+ gem 'haml'
12
+ gem 'mugen'
13
+
14
+ Generate scaffold:
15
+ $ rails generate mugen
16
+
17
+ Install rails3_before_render plugin
18
+ $ rails plugin install git://github.com/shell/rails3_before_render.git
19
+
20
+ Configure API keys in config/initializers/mugen.rb:
21
+ Mugen.api_key = ''
22
+ Mugen.private_key = ''
23
+
24
+ Start server and enjoy
25
+
26
+ ## Rails 2.x
27
+ Add gems to config/environment.rb
28
+ config.gem 'haml'
29
+ config.gem 'mugen'
30
+
31
+ Next install gems via
32
+ gem install mugen
33
+ or
34
+ rake gems:install
35
+
36
+ Next generate scaffold
37
+
38
+ $ script/generate mugen
39
+
40
+ Install rails3_before_render plugin
41
+ $ rails plugin install git://github.com/shell/rails3_before_render.git
42
+
43
+ Configure API keys in config/initializers/mugen.rb
44
+ Start server and enjoy
45
+
46
+ ## Usage
47
+ See routes.rb for url mappings.
48
+ Default page is here (<http://localhost:3000/mygengo/account>)
49
+
50
+ ## Debugging
51
+
52
+ To debug http-requests, uncomment following line in lib/mugen/client.rb:
53
+
54
+ debug_output $stderr
55
+
56
+ ## TODO
57
+ - remove csrf_tag in layout file for rails2
58
+ - I18n
59
+ - made js agnostic
60
+ - cover everything with tests
61
+ - Something really bad happening with css
62
+
63
+
64
+ ## Author
65
+ Copyright (c) 2011 Vladimir Penkin
@@ -0,0 +1,31 @@
1
+ begin
2
+ require "bundler"
3
+ Bundler.setup
4
+ rescue LoadError
5
+ $stderr.puts "You need to have Bundler installed to be able build this gem."
6
+ end
7
+
8
+ gemspec = eval(File.read(Dir["*.gemspec"].first))
9
+
10
+
11
+ desc "Validate the gemspec"
12
+ task :gemspec do
13
+ gemspec.validate
14
+ end
15
+
16
+ desc "Build gem locally"
17
+ task :build => :gemspec do
18
+ system "gem build #{gemspec.name}.gemspec"
19
+ FileUtils.mkdir_p "pkg"
20
+ FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", "pkg"
21
+ end
22
+
23
+ desc "Install gem locally"
24
+ task :install => :build do
25
+ system "gem install pkg/#{gemspec.name}-#{gemspec.version}"
26
+ end
27
+
28
+ desc "Clean automatically generated files"
29
+ task :clean do
30
+ FileUtils.rm_rf "pkg"
31
+ end
@@ -0,0 +1 @@
1
+ Autotest.add_discovery { "rspec2" }
@@ -0,0 +1,3 @@
1
+ This directory is for the Rails 2.x generator.
2
+
3
+ The (Thor-based) Rails 3 generator is in lib/generators.
@@ -0,0 +1,34 @@
1
+ Description:
2
+ Generates MyGengo scaffold for your app
3
+
4
+ Example:
5
+ script/generate mugen
6
+
7
+ This will update routes.rb
8
+ This will create:
9
+ config/initializers/mugen.rb
10
+ app/controllers/mygengo
11
+ app/controllers/mygengo/account_controller.rb
12
+ app/controllers/mygengo/comments_controller.rb
13
+ app/controllers/mygengo/jobs_controller.rb
14
+ app/helpers/mugen_helper.rb
15
+ app/views/layouts/mygengo.html.erb
16
+ app/views/mygengo/account
17
+ app/views/mygengo/comments
18
+ app/views/mygengo/jobs
19
+ app/views/mygengo/account/index.haml
20
+ app/views/mygengo/account/_balance.haml
21
+ app/views/mygengo/account/_stats.haml
22
+ app/views/mygengo/comments/_comment.haml
23
+ app/views/mygengo/comments/_form.haml
24
+ app/views/mygengo/jobs/_comments.haml
25
+ app/views/mygengo/jobs/_feedback.haml
26
+ app/views/mygengo/jobs/_revision.haml
27
+ app/views/mygengo/jobs/index.haml
28
+ app/views/mygengo/jobs/new.haml
29
+ app/views/mygengo/jobs/reject_form.haml
30
+ app/views/mygengo/jobs/review_form.haml
31
+ app/views/mygengo/jobs/revise_form.haml
32
+ app/views/mygengo/jobs/revision.haml
33
+ app/views/mygengo/jobs/show.haml
34
+ README
@@ -0,0 +1,63 @@
1
+ class MugenGenerator < Rails::Generator::Base
2
+ attr_reader :model_name
3
+
4
+ def initialize(runtime_args, runtime_options = {})
5
+ runtime_args << "user" if runtime_args.empty?
6
+ super
7
+ end
8
+
9
+ def manifest
10
+ record do |m|
11
+
12
+ # Initializer
13
+ m.file 'config/initializers/mugen.rb', 'config/initializers/mugen.rb'
14
+
15
+ # Controller
16
+ m.directory 'app/controllers/mygengo'
17
+ m.file "app/controllers/mygengo/account_controller.rb", "app/controllers/mygengo/account_controller.rb"
18
+ m.file "app/controllers/mygengo/comments_controller.rb", "app/controllers/mygengo/comments_controller.rb"
19
+ m.file "app/controllers/mygengo/jobs_controller.rb", "app/controllers/mygengo/jobs_controller.rb"
20
+
21
+ # Helpers
22
+ m.file "app/helpers/mugen_helper.rb", "app/helpers/mugen_helper.rb"
23
+
24
+ # Views
25
+ m.file 'app/views/layouts/mygengo.html.erb', 'app/views/layouts/mygengo.html.erb'
26
+ m.directory 'app/views/mygengo/account'
27
+ m.directory 'app/views/mygengo/comments'
28
+ m.directory 'app/views/mygengo/jobs'
29
+ m.directory 'public/stylesheets/mygengo'
30
+ m.directory 'public/images/mygengo'
31
+ m.file 'app/views/mygengo/account/index.haml', 'app/views/mygengo/account/index.haml'
32
+ m.file 'app/views/mygengo/account/_balance.haml', 'app/views/mygengo/account/_balance.haml'
33
+ m.file 'app/views/mygengo/account/_stats.haml', 'app/views/mygengo/account/_stats.haml'
34
+ m.file 'app/views/mygengo/comments/_comment.haml', 'app/views/mygengo/comments/_comment.haml'
35
+ m.file 'app/views/mygengo/comments/_form.haml', 'app/views/mygengo/comments/_form.haml'
36
+ m.file 'app/views/mygengo/jobs/_comments.haml', 'app/views/mygengo/jobs/_comments.haml'
37
+ m.file 'app/views/mygengo/jobs/_feedback.haml', 'app/views/mygengo/jobs/_feedback.haml'
38
+ m.file 'app/views/mygengo/jobs/_job.haml', 'app/views/mygengo/jobs/_job.haml'
39
+ m.file 'app/views/mygengo/jobs/_revision.haml', 'app/views/mygengo/jobs/_revision.haml'
40
+ m.file 'app/views/mygengo/jobs/index.haml', 'app/views/mygengo/jobs/index.haml'
41
+ m.file 'app/views/mygengo/jobs/new.haml', 'app/views/mygengo/jobs/new.haml'
42
+ m.file 'app/views/mygengo/jobs/reject_form.haml', 'app/views/mygengo/jobs/reject_form.haml'
43
+ m.file 'app/views/mygengo/jobs/review_form.haml', 'app/views/mygengo/jobs/review_form.haml'
44
+ m.file 'app/views/mygengo/jobs/revise_form.haml', 'app/views/mygengo/jobs/revise_form.haml'
45
+ m.file 'app/views/mygengo/jobs/revision.haml', 'app/views/mygengo/jobs/revision.haml'
46
+ m.file 'app/views/mygengo/jobs/show.haml', 'app/views/mygengo/jobs/show.haml'
47
+ m.file 'public/stylesheets/mygengo/base.css', 'public/stylesheets/mygengo/base.css'
48
+ m.file 'public/stylesheets/mygengo/mugen.css', 'public/stylesheets/mygengo/mugen.css'
49
+ m.file 'public/stylesheets/mygengo/override.css', 'public/stylesheets/mygengo/override.css'
50
+ m.file 'public/stylesheets/mygengo/scaffold.css', 'public/stylesheets/mygengo/scaffold.css'
51
+ m.file 'public/stylesheets/mygengo/style.css', 'public/stylesheets/mygengo/style.css'
52
+ # m.readme "USAGE"
53
+
54
+ # Routes
55
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
56
+ new_routes = IO.read(File.dirname(__FILE__) + '/templates/config/routes.rb')
57
+
58
+ m.gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
59
+ "#{match}\n #{new_routes}"
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,10 @@
1
+ class Mygengo::AccountController < Mygengo::MygengoController
2
+
3
+ def index
4
+ @account = Mugen::Account.balance || {}
5
+ @stats = Mugen::Account.stats
6
+
7
+ @account.merge! @stats if @stats
8
+ end
9
+
10
+ end
@@ -0,0 +1,6 @@
1
+ class Mygengo::CommentsController < Mygengo::MygengoController
2
+ def create
3
+ flag = Mugen::Job.create_comment(params[:id], params[:comment])
4
+ redirect_to mygengo_job_path(params[:id])
5
+ end
6
+ end
@@ -0,0 +1,153 @@
1
+ class Mygengo::JobsController < Mygengo::MygengoController
2
+ URL_REGEXP = /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix
3
+
4
+ # GET /jobs
5
+ # GET /jobs.xml
6
+ def index
7
+ @job_ids = Mugen::Jobs.all
8
+ if @job_ids
9
+ @jobs = @job_ids.collect {|j|
10
+ Mugen::Job.find(j['job_id']).merge('comments' => Mugen::Job.comments(j['job_id']))
11
+ }
12
+ respond_to do |format|
13
+ format.html # index.html.erb
14
+ format.xml { render :xml => @jobs }
15
+ end
16
+ else
17
+ redirect_to mygengo_account_index_path
18
+ end
19
+ end
20
+
21
+ # GET /jobs/1
22
+ # GET /jobs/1.xml
23
+ def show
24
+ @job = Mugen::Job.find(params[:id])
25
+ @preview = Mugen::Job.preview(@job['job_id'])
26
+ @comments = Mugen::Job.comments(@job['job_id'])
27
+ @job.merge!('comments' => @comments)
28
+ @feedback = Mugen::Job.feedback(@job['job_id'])
29
+ @revisions = Mugen::Job.revisions(@job['job_id'])
30
+ @revisions = [@revisions] if @revisions.is_a?(Hash)
31
+
32
+ respond_to do |format|
33
+ format.html # show.html.erb
34
+ format.xml { render :xml => @job }
35
+ end
36
+ end
37
+
38
+ def review_form
39
+ @job = Mugen::Job.find(params[:id])
40
+ @preview = Mugen::Job.preview(@job['job_id'])
41
+ @comments = Mugen::Job.comments(@job['job_id'])
42
+ @job.merge!('comments' => @comments)
43
+ @feedback = Mugen::Job.feedback(@job['job_id'])
44
+ end
45
+
46
+ def reject_form
47
+ @job = Mugen::Job.find(params[:id])
48
+ @preview = Mugen::Job.preview(@job['job_id'])
49
+ @comments = Mugen::Job.comments(@job['job_id'])
50
+ @job.merge!('comments' => @comments)
51
+ end
52
+
53
+ def revise_form
54
+ @job = Mugen::Job.find(params[:id])
55
+ @preview = Mugen::Job.preview(@job['job_id'])
56
+ @comments = Mugen::Job.comments(@job['job_id'])
57
+ @job.merge!('comments' => @comments)
58
+ end
59
+
60
+ # GET /jobs/1
61
+ # GET /jobs/1.xml
62
+ def revision
63
+ @job = Mugen::Job.find(params[:job_id])
64
+ @revision = Mugen::Job.revision(params[:job_id], params[:id])
65
+
66
+ respond_to do |format|
67
+ format.html {}
68
+ format.xml { render :xml => @job }
69
+ end
70
+ end
71
+
72
+ # GET /jobs/new
73
+ # GET /jobs/new.xml
74
+ def new
75
+ @job = Mugen::Job
76
+ @languages = Mugen::Service.languages
77
+ @language_pairs = Mugen::Service.language_pairs
78
+ @language_src = @languages.collect { |lp| [ lp["language"], lp['lc'] ] }.uniq.sort
79
+ @language_tgt = @languages.collect { |lp| [ lp["language"], lp['lc'] ] }.uniq.sort
80
+
81
+ respond_to do |format|
82
+ format.html # new.html.erb
83
+ format.xml { render :xml => @job }
84
+ end
85
+ end
86
+
87
+ # GET /jobs/1/edit
88
+ def edit
89
+ @job = Mugen::Job.find(params[:id])
90
+ end
91
+
92
+ # POST /jobs
93
+ # POST /jobs.xml
94
+ def create
95
+ params[:job]['body_src'] = sanitize(params[:job]['body_src'])
96
+ if params[:job]['callback_url'].empty? ||
97
+ !params[:job]['callback_url'].match(URL_REGEXP)
98
+ params[:job].delete('callback_url')
99
+ end
100
+ flag = Mugen::Job.create(params[:job])
101
+
102
+ redirect_to mygengo_jobs_path
103
+ end
104
+
105
+ # PUT /jobs/1
106
+ # PUT /jobs/1.xml
107
+ def update
108
+ @job = Mugen::Job.update(params[:id])
109
+
110
+ redirect_to mygengo_jobs_path
111
+ end
112
+
113
+ def purchase
114
+ @job = Mugen::Job.purchase(params[:id])
115
+
116
+ redirect_to mygengo_jobs_path
117
+ end
118
+
119
+ def approve
120
+ @job = Mugen::Job.approve(params[:id])
121
+
122
+ redirect_to mygengo_jobs_path
123
+ end
124
+
125
+ def revise
126
+ @job = Mugen::Job.revise(params[:id], params[:job])
127
+
128
+ redirect_to mygengo_jobs_path
129
+ end
130
+
131
+ def reject
132
+ @job = Mugen::Job.reject(params[:id], params[:job])
133
+
134
+ redirect_to mygengo_jobs_path
135
+ end
136
+
137
+ # DELETE /jobs/1
138
+ # DELETE /jobs/1.xml
139
+ def destroy
140
+ @job = Mugen::Job.delete(params[:id])
141
+
142
+ respond_to do |format|
143
+ format.html { redirect_to(mygengo_jobs_url) }
144
+ format.xml { head :ok }
145
+ end
146
+ end
147
+
148
+ private
149
+
150
+ def sanitize(text)
151
+ return text.gsub(/<\/?.*?>/, "")
152
+ end
153
+ end
@@ -0,0 +1,11 @@
1
+ module MugenHelper
2
+ def d(timestamp)
3
+ if timestamp
4
+ Time.at(timestamp).to_s(:short)
5
+ end
6
+ end
7
+
8
+ def eta(timestamp)
9
+ time_ago_in_words(Time.at(timestamp)) unless timestamp.empty?
10
+ end
11
+ end
@@ -0,0 +1,52 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>MyGengo</title>
5
+ <%= stylesheet_link_tag "mygengo/base", "mygengo/style", "mygengo/override", :cache => true %>
6
+ <%= stylesheet_link_tag 'mygengo/scaffold', 'mygengo/mugen', :cache => true %>
7
+ <%= javascript_include_tag 'jquery', 'rails', 'application' %>
8
+ <%= csrf_meta_tag %>
9
+ </head>
10
+ <body>
11
+ <div id="container">
12
+ <div id="header">
13
+ <h1><a href="/">Gengo</a></h1>
14
+ <div id="user-navigation">
15
+ <ul class="wat-cf">
16
+ <li><a href="/logout" class="logout"><%= t("web-app-theme.logout", :default => "Logout") %></a></li>
17
+ </ul>
18
+ </div>
19
+ <div id="main-navigation">
20
+ <ul class="wat-cf">
21
+ <li><%= link_to 'Jobs', '/mygengo/jobs' %></li>
22
+ <li><%= link_to 'Account', '/mygengo/account' %></li>
23
+ </ul>
24
+ </div>
25
+ </div>
26
+ <div id="wrapper" class="wat-cf">
27
+ <div class="flash">
28
+ <% flash.each do |type, message| -%>
29
+ <% unless message.empty? %>
30
+ <div class="message <%= type %>">
31
+ <p><%= message %></p>
32
+ </div>
33
+ <% end %>
34
+ <% end -%>
35
+ </div>
36
+ <div id="main">
37
+ <%= yield %>
38
+ <br />
39
+ <br />
40
+ <div id="footer">
41
+ <div class="block">
42
+ <p>Copyright &copy; <%= Time.now.year %> Vladimir Penkin</p>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <div id="sidebar">
47
+ <%= yield :sidebar %>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </body>
52
+ </html>