simonmenke-mr_henry 0.0.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 (43) hide show
  1. data/License.txt +20 -0
  2. data/README +8 -0
  3. data/about.yml +7 -0
  4. data/app/controllers/lalala/base_controller.rb +8 -0
  5. data/app/helpers/lalala/base_helper.rb +47 -0
  6. data/app/helpers/lalala/tabs_helper.rb +96 -0
  7. data/app/views/lalala/layouts/application.html.erb +39 -0
  8. data/config/routes.rb +0 -0
  9. data/generators/mr_resource/USAGE +25 -0
  10. data/generators/mr_resource/mr_resource_generator.rb +103 -0
  11. data/generators/mr_resource/templates/controller.rb +24 -0
  12. data/generators/mr_resource/templates/functional_test.rb +45 -0
  13. data/generators/mr_resource/templates/helper.rb +2 -0
  14. data/generators/mr_resource/templates/partial_form.html.erb +14 -0
  15. data/generators/mr_resource/templates/partial_item.html.erb +3 -0
  16. data/generators/mr_resource/templates/view_edit.html.erb +2 -0
  17. data/generators/mr_resource/templates/view_index.html.erb +7 -0
  18. data/generators/mr_resource/templates/view_new.html.erb +2 -0
  19. data/generators/mr_resource/templates/view_show.html.erb +14 -0
  20. data/lib/mr_henry.rb +4 -0
  21. data/lib/mr_henry/action_controller.rb +5 -0
  22. data/lib/mr_henry/action_controller/handles_resource.rb +85 -0
  23. data/lib/mr_henry/generator.rb +5 -0
  24. data/lib/mr_henry/generator/create.rb +68 -0
  25. data/lib/mr_henry/generator/destroy.rb +51 -0
  26. data/lib/mr_henry/generator/update.rb +41 -0
  27. data/lib/mr_henry/version.rb +10 -0
  28. data/lib/tasks/passenger.rake +5 -0
  29. data/public/images/error.png +0 -0
  30. data/public/images/handle.png +0 -0
  31. data/public/images/henry.png +0 -0
  32. data/public/images/pointer.gif +0 -0
  33. data/public/images/spinner.gif +0 -0
  34. data/public/images/tab-active.png +0 -0
  35. data/public/images/tab-hover.png +0 -0
  36. data/public/javascripts/c_b_s.js +16 -0
  37. data/public/javascripts/lang.cbs +69 -0
  38. data/public/javascripts/lowpro.js +320 -0
  39. data/public/stylesheets/lalala.css +367 -0
  40. data/public/stylesheets/lalala_custom.css +0 -0
  41. data/rails/init.rb +35 -0
  42. data/setup/setup.rb +6 -0
  43. metadata +149 -0
@@ -0,0 +1,14 @@
1
+ <%% form_for([:lalala, <%= singular_name %>]) do |f| %>
2
+
3
+ <% for attribute in attributes -%>
4
+ <div>
5
+ <%%= f.label :<%= attribute.name %> %>
6
+ <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
7
+ </div>
8
+ <% end -%>
9
+ <div class="button">
10
+ <%%= f.submit (<%= singular_name %>.new_record? ? "Create" : "Update") %>
11
+ <%%= link_to "Cancel", lalala_<%= plural_name %>_path %>
12
+ </div>
13
+
14
+ <%% end %>
@@ -0,0 +1,3 @@
1
+ <%% div_for <%= singular_name %>, :class => "record" do %>
2
+ <%%= link_to "<%= singular_name %> (Replace me)", [:lalala, <%= singular_name %>] %>
3
+ <%% end %>
@@ -0,0 +1,2 @@
1
+ <h1>Edit <%= singular_name %></h1>
2
+ <%%= render :partial => 'form' %>
@@ -0,0 +1,7 @@
1
+ <h1><%= plural_name.humanize %></h1>
2
+ <div id="actions">
3
+ <%%= link_to "New <%= singular_name %>", new_lalala_<%= singular_name %>_path %>
4
+ </div>
5
+ <div id="<%= plural_name %>" class="records">
6
+ <%%= render :partial => <%= plural_name %> %>
7
+ </div>
@@ -0,0 +1,2 @@
1
+ <h1>New <%= singular_name %></h1>
2
+ <%%= render :partial => 'form' %>
@@ -0,0 +1,14 @@
1
+ <h1 id="title"><%= singular_name %></h1>
2
+
3
+ <div class="actions">
4
+ <%%= link_to "Edit", [:edit, :lalala, <%= singular_name %>] %>
5
+ <%%= link_to "Delete", [:lalala, <%= singular_name %>], :method => :delete, :confirm => "Are you sure?" %>
6
+ </div>
7
+
8
+ <% for attribute in attributes -%>
9
+ <p>
10
+ <b><%= attribute.column.human_name %>:</b>
11
+ <%%=h <%= singular_name %>.<%= attribute.name %> %>
12
+ </p>
13
+
14
+ <% end -%>
data/lib/mr_henry.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'diamonds'
2
+
3
+ module MrHenry
4
+ end
@@ -0,0 +1,5 @@
1
+
2
+ module MrHenry
3
+ module ActionController
4
+ end
5
+ end
@@ -0,0 +1,85 @@
1
+
2
+ module MrHenry
3
+ module ActionController
4
+ module HandlesResource
5
+
6
+ def self.included(target)
7
+ target.send :extend, ::MrHenry::ActionController::HandlesResource::Macros
8
+ end
9
+
10
+ module Macros
11
+
12
+ def resource(name,options={})
13
+ options.reverse_merge! :param => :id
14
+ parent = options[:from].nil? ? nil : options[:from].to_s.underscore.singularize
15
+
16
+ klass = name.to_s.classify
17
+ singular_name = klass.underscore.singularize
18
+ association = singular_name
19
+ if parent.nil?
20
+ singular_finder = %(#{klass}.find(params[:#{options[:param]}]))
21
+ singular_builder = %(#{klass}.new(params[:#{singular_name}]))
22
+ else
23
+ singular_finder = %(#{parent}.#{association})
24
+ singular_builder = %(#{parent}.#{association}.build(params[:#{singular_name}]))
25
+ end
26
+
27
+ generate_resource_method(singular_name, options[:param], singular_finder, singular_builder)
28
+ end
29
+
30
+ def resources(name,options={})
31
+ options.reverse_merge! :paginate => false, :param => :id
32
+ parent = options[:from].nil? ? nil : options[:from].to_s.underscore.singularize
33
+
34
+ klass = name.to_s.classify
35
+ singular_name = klass.underscore.singularize
36
+ plural_name = singular_name.pluralize
37
+ association = plural_name
38
+ finder_method = options[:paginate] ? "paginate" : "find"
39
+ finder_options = Array.new
40
+ finder_options << %(:all)
41
+ finder_options << %(:page => params[:page]) if options[:paginate]
42
+ finder_options << %(:order => '#{options[:order]}') unless options[:order].nil?
43
+ if parent.nil?
44
+ singular_finder = %(#{klass}.find(params[:#{options[:param]}]))
45
+ singular_builder = %(#{klass}.new(params[:#{singular_name}]))
46
+ plural_finder = %(#{klass}.#{finder_method}(#{finder_options.join(', ')}))
47
+ else
48
+ singular_finder = %(#{parent}.#{association}.find(params[:#{options[:param]}]))
49
+ singular_builder = %(#{parent}.#{association}.build(params[:#{singular_name}]))
50
+ plural_finder = %(#{parent}.#{association}.#{finder_method}(#{finder_options.join(', ')}))
51
+ end
52
+
53
+ generate_resource_method(singular_name, options[:param], singular_finder, singular_builder)
54
+ generate_resources_method(plural_name, plural_finder)
55
+ end
56
+
57
+ private
58
+
59
+ def generate_resource_method(name, param, finder, builder)
60
+ class_eval %(
61
+ def #{name}
62
+ @#{name} ||= if params[:#{param}]
63
+ #{finder}
64
+ else
65
+ #{builder}
66
+ end
67
+ end
68
+ helper_method :#{name}
69
+ private :#{name})
70
+ end
71
+
72
+ def generate_resources_method(name, finder)
73
+ class_eval %(
74
+ def #{name}
75
+ @#{name} ||= #{finder}
76
+ end
77
+ helper_method :#{name}
78
+ private :#{name})
79
+ end
80
+
81
+ end
82
+
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,5 @@
1
+
2
+ module MrHenry
3
+ module Generator
4
+ end
5
+ end
@@ -0,0 +1,68 @@
1
+
2
+ module MrHenry
3
+ module Generator
4
+ module Create
5
+
6
+ def plugin(repo)
7
+ logger.plugin repo
8
+ system(%{script/plugin install #{repo} > /dev/null 2>&1})
9
+ end
10
+
11
+ def patch(patch_file, target_file)
12
+ patch_file = source_path(File.join("..", "patches", patch_file))
13
+ target_file = destination_path(target_file)
14
+ logger.patch target_file
15
+ system(%{patch -i '#{patch_file}' '#{target_file}' > /dev/null 2>&1})
16
+ end
17
+
18
+ def drop(target_file)
19
+ target_file = destination_path(target_file)
20
+ logger.drop target_file
21
+ system(%{rm -fr '#{target_file}' > /dev/null 2>&1})
22
+ end
23
+
24
+ def route_lalala_resources(*resources)
25
+ resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
26
+ sentinel = ' map.namespace :lalala do |lalala|'
27
+
28
+ logger.route_lalala "lalala.resources #{resource_list}"
29
+ unless options[:pretend]
30
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
31
+ "#{match}\n lalala.resources #{resource_list}"
32
+ end
33
+ end
34
+ end
35
+
36
+ def lalala_menu(name, resource)
37
+ sentinel = " <div id=\"menu\">\n "
38
+
39
+ logger.menu_lalala "menu_item(\"#{name}\", :lalala_#{resource}_path)"
40
+ unless options[:pretend]
41
+ gsub_file 'app/views/lalala/layouts/application.html.erb', /(#{Regexp.escape(sentinel)})/mi do |match|
42
+ "#{match}\n <%= menu_item(\"#{name}\", :lalala_#{resource}_path) %>"
43
+ end
44
+ end
45
+ end
46
+
47
+ def asset(relative_source, *rest, &block)
48
+ file(File.join("..", "assets", relative_source), *rest, &block)
49
+ end
50
+
51
+ def add_gem(gem, c={})
52
+ sentinel = " # config.gem \"aws-s3\", :lib => \"aws/s3\""
53
+
54
+ logger.add_gem "config.gem '#{gem}', #{c.inspect}"
55
+ unless options[:pretend]
56
+ gsub_file 'config/environment.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
57
+ "#{match}\n config.gem '#{gem}', #{c.inspect}"
58
+ end
59
+ end
60
+ end
61
+
62
+ def reset_session_id
63
+ gsub_file 'config/environment.rb', /\:session_key => '[^']+',/mi, ":session_key => '_session_id',"
64
+ end
65
+
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,51 @@
1
+
2
+ module MrHenry
3
+ module Generator
4
+ module Destroy
5
+
6
+ def plugin(repo)
7
+ logger.plugin repo
8
+ system(%{script/plugin remove #{repo} > /dev/null 2>&1})
9
+ end
10
+
11
+ def patch(patch_file, target_file)
12
+ patch_file = source_path(File.join("..", "patches", patch_file))
13
+ target_file = destination_path(target_file)
14
+ logger.patch target_file
15
+ system(%{patch -R -i '#{patch_file}' '#{target_file}' > /dev/null 2>&1})
16
+ end
17
+
18
+ def drop(target_file)
19
+ # do nothing
20
+ end
21
+
22
+ def route_lalala_resources(*resources)
23
+ resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
24
+ look_for = "\n lalala.resources #{resource_list}"
25
+ logger.route_lalala "lalala.resources #{resource_list}"
26
+ gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
27
+ end
28
+
29
+ def lalala_menu(name, resource)
30
+ look_for = "\n <%= menu_item(\"#{name}\", :lalala_#{resource}_path) %>"
31
+ logger.menu_lalala "menu_item(\"#{name}\", :lalala_#{resource}_path)"
32
+ gsub_file 'app/views/lalala/layouts/application.html.erb', /(#{look_for})/mi, ''
33
+ end
34
+
35
+ def asset(relative_source, *rest, &block)
36
+ file(File.join("..", "assets", relative_source), *rest, &block)
37
+ end
38
+
39
+ def reset_session_id
40
+ # do nothing
41
+ end
42
+
43
+ def add_gem(gem, c={})
44
+ look_for = "\n config.gem '#{gem}', #{c.inspect}"
45
+ logger.add_gem "config.gem '#{gem}', #{c.inspect}"
46
+ gsub_file 'config/environment.rb', /(#{Regexp.escape(look_for)})/mi, ''
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+
2
+ module MrHenry
3
+ module Generator
4
+ module Update
5
+
6
+ def plugin(repo)
7
+ logger.plugin repo
8
+ system(%{script/plugin update #{repo} > /dev/null 2>&1})
9
+ end
10
+
11
+ def patch(patch_file, target_file)
12
+ # do nothing
13
+ end
14
+
15
+ def drop(target_file)
16
+ # do nothing
17
+ end
18
+
19
+ def route_lalala_resources(*resources)
20
+ # do nothing
21
+ end
22
+
23
+ def lalala_menu(name, resource)
24
+ # do nothing
25
+ end
26
+
27
+ def add_gem(*args)
28
+ # do nothing
29
+ end
30
+
31
+ def reset_session_id
32
+ # do nothing
33
+ end
34
+
35
+ def asset(relative_source, *rest, &block)
36
+ file(File.join("..", "assets", relative_source), *rest, &block)
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,10 @@
1
+
2
+ module MrHenry
3
+ module VERSION #:nodoc:
4
+ MAJOR = 0
5
+ MINOR = 0
6
+ TINY = 1
7
+
8
+ STRING = [MAJOR, MINOR, TINY].join('.')
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+
2
+ desc "Restart passenger"
3
+ task :restart do
4
+ sh "touch #{RAILS_ROOT}/tmp/restart.txt"
5
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,16 @@
1
+ // CSS Browser Selector v0.2.5
2
+ // Documentation: http://rafael.adm.br/css_browser_selector
3
+ // License: http://creativecommons.org/licenses/by/2.5/
4
+ // Author: Rafael Lima (http://rafael.adm.br)
5
+ // Contributors: http://rafael.adm.br/css_browser_selector#contributors
6
+
7
+ var css_browser_selector = function() {
8
+ var
9
+ ua=navigator.userAgent.toLowerCase(),
10
+ is=function(t){ return ua.indexOf(t) != -1; },
11
+ h=document.getElementsByTagName('html')[0],
12
+ b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
13
+ os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
14
+ var c=b+os+' js';
15
+ h.className += h.className?' '+c:c;
16
+ }();
@@ -0,0 +1,69 @@
1
+
2
+ @behavior LanguageButton {
3
+ initialize(parent) {
4
+ this.parent = parent;
5
+ }
6
+ onchange {
7
+ var index = this.element.selectedIndex;
8
+ var option = this.element.options[index];
9
+ this.parent._selectLanguage(option.value);
10
+ return false;
11
+ }
12
+ }
13
+
14
+ @behavior LanguageChooser {
15
+ initialize {
16
+ var self = this;
17
+ self.languages = [];
18
+ self.elements_by_language = {};
19
+ self.default_language = self.element.readAttribute('lang');
20
+ self.current_language = null;
21
+
22
+ $$('.lang').each(function(element){
23
+ var lang = element.readAttribute('lang');
24
+ self.languages.push(lang);
25
+ if (!self.elements_by_language[lang]) { self.elements_by_language[lang] = []; }
26
+ self.elements_by_language[lang].push(element);
27
+ element.hide();
28
+ });
29
+
30
+ self.languages = self.languages.uniq();
31
+
32
+ self._buildSelectTag();
33
+ self._selectLanguage(self.default_language);
34
+ }
35
+
36
+ _buildSelectTag {
37
+ var html = '';
38
+ var default_language = this.default_language;
39
+ html += 'languages: <select id="lang_chooser_select_tag">';
40
+ this.languages.each(function(lang){
41
+ html += '<option value="'+lang+'" '+(default_language == lang ? 'selected="selected"' : '')+'>'+lang+'</option>';
42
+ });
43
+ html += '</select>';
44
+ this.element.insert(html);
45
+ LanguageButton.attach($('lang_chooser_select_tag'), this);
46
+ }
47
+
48
+ _selectLanguage(lang) {
49
+ var self = this;
50
+ if (self.current_language) {
51
+ self.elements_by_language[self.current_language].each(function(element){
52
+ element.hide();
53
+ });
54
+
55
+ self.elements_by_language[lang].each(function(element){
56
+ element.show();
57
+ element.highlight();
58
+ });
59
+ } else {
60
+ self.elements_by_language[lang].each(function(element){
61
+ element.show();
62
+ });
63
+ }
64
+
65
+ self.current_language = lang;
66
+ }
67
+ }
68
+
69
+ #lang_chooser % LanguageChooser ;