aslon_scaffold 0.0.11 → 0.0.12

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 (176) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +4 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README +26 -0
  5. data/Rakefile +2 -0
  6. data/aslon_scaffold.gemspec +33 -0
  7. data/config/locales/aslon_scaffold.fr.yml +14 -0
  8. data/init.rb +1 -0
  9. data/install.rb +1 -0
  10. data/lib/app/controllers/articles_controller.rb +7 -0
  11. data/lib/app/helpers/application_helper.rb +410 -0
  12. data/lib/app/views/aslon_scaffolds/_search.haml +1 -0
  13. data/lib/app/views/aslon_scaffolds/index.haml +4 -0
  14. data/lib/app/views/aslon_scaffolds/new_edit.haml +8 -0
  15. data/lib/app/views/aslon_scaffolds/show.haml +9 -0
  16. data/lib/aslon_scaffold.rb +34 -0
  17. data/lib/aslon_scaffold/aslon_scaffold.rb +237 -0
  18. data/lib/aslon_scaffold/version.rb +4 -0
  19. data/lib/generators/haml.rb +11 -0
  20. data/lib/generators/haml/scaffold/scaffold_generator.rb +25 -0
  21. data/lib/generators/haml/scaffold/templates/_new_edit.haml.erb +6 -0
  22. data/lib/generators/haml/scaffold/templates/_search.haml.erb +6 -0
  23. data/lib/generators/haml/scaffold/templates/edit.haml.erb +5 -0
  24. data/lib/generators/haml/scaffold/templates/index.haml.erb +10 -0
  25. data/lib/generators/haml/scaffold/templates/layout.haml.erb +17 -0
  26. data/lib/generators/haml/scaffold/templates/new.haml.erb +6 -0
  27. data/lib/generators/haml/scaffold/templates/new_edit.haml.erb +13 -0
  28. data/lib/generators/haml/scaffold/templates/show.haml.erb +14 -0
  29. data/lib/generators/nifty.rb +28 -0
  30. data/lib/generators/nifty/aslon/USAGE +51 -0
  31. data/lib/generators/nifty/aslon/aslon_generator.rb +320 -0
  32. data/lib/generators/nifty/aslon/templates/actions/create.rb +8 -0
  33. data/lib/generators/nifty/aslon/templates/actions/destroy.rb +5 -0
  34. data/lib/generators/nifty/aslon/templates/actions/edit.rb +3 -0
  35. data/lib/generators/nifty/aslon/templates/actions/index.rb +3 -0
  36. data/lib/generators/nifty/aslon/templates/actions/new.rb +3 -0
  37. data/lib/generators/nifty/aslon/templates/actions/show.rb +3 -0
  38. data/lib/generators/nifty/aslon/templates/actions/update.rb +8 -0
  39. data/lib/generators/nifty/aslon/templates/controller.rb +10 -0
  40. data/lib/generators/nifty/aslon/templates/fixtures.yml +9 -0
  41. data/lib/generators/nifty/aslon/templates/helper.rb +2 -0
  42. data/lib/generators/nifty/aslon/templates/migration.rb +16 -0
  43. data/lib/generators/nifty/aslon/templates/model.rb +4 -0
  44. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/create.rb +11 -0
  45. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/destroy.rb +6 -0
  46. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/edit.rb +4 -0
  47. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/index.rb +4 -0
  48. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/new.rb +4 -0
  49. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/show.rb +4 -0
  50. data/lib/generators/nifty/aslon/templates/tests/rspec/actions/update.rb +11 -0
  51. data/lib/generators/nifty/aslon/templates/tests/rspec/controller.rb +8 -0
  52. data/lib/generators/nifty/aslon/templates/tests/rspec/model.rb +7 -0
  53. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/create.rb +13 -0
  54. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/destroy.rb +8 -0
  55. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/edit.rb +6 -0
  56. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/index.rb +6 -0
  57. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/new.rb +6 -0
  58. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/show.rb +6 -0
  59. data/lib/generators/nifty/aslon/templates/tests/shoulda/actions/update.rb +13 -0
  60. data/lib/generators/nifty/aslon/templates/tests/shoulda/controller.rb +5 -0
  61. data/lib/generators/nifty/aslon/templates/tests/shoulda/model.rb +7 -0
  62. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/create.rb +11 -0
  63. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/destroy.rb +6 -0
  64. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/edit.rb +4 -0
  65. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/index.rb +4 -0
  66. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/new.rb +4 -0
  67. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/show.rb +4 -0
  68. data/lib/generators/nifty/aslon/templates/tests/testunit/actions/update.rb +11 -0
  69. data/lib/generators/nifty/aslon/templates/tests/testunit/controller.rb +5 -0
  70. data/lib/generators/nifty/aslon/templates/tests/testunit/model.rb +7 -0
  71. data/lib/generators/nifty/aslon/templates/views/haml/_new_edit.html.haml +6 -0
  72. data/lib/generators/nifty/aslon/templates/views/haml/_search.html.haml +6 -0
  73. data/lib/generators/nifty/aslon/templates/views/haml/index.html.haml +10 -0
  74. data/lib/generators/nifty/aslon/templates/views/haml/layout.haml.erb +17 -0
  75. data/lib/generators/nifty/aslon/templates/views/haml/new_edit.html.haml +13 -0
  76. data/lib/generators/nifty/aslon/templates/views/haml/show.html.haml +14 -0
  77. data/lib/generators/nifty/layout/USAGE +25 -0
  78. data/lib/generators/nifty/layout/layout_generator.rb +42 -0
  79. data/lib/generators/nifty/layout/templates/_default.html.haml +9 -0
  80. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/add.gif +0 -0
  81. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/delete.gif +0 -0
  82. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/edit.gif +0 -0
  83. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/folder.gif +0 -0
  84. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/grid-blue-hd.gif +0 -0
  85. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/grid-split.gif +0 -0
  86. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/grid3-hrow.gif +0 -0
  87. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/indicator.gif +0 -0
  88. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/magnifier.png +0 -0
  89. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/sort_asc.gif +0 -0
  90. data/lib/generators/nifty/layout/templates/assets/images/aslon_scaffold/sort_desc.gif +0 -0
  91. data/lib/generators/nifty/layout/templates/assets/stylesheets/aslon_scaffold/base.css.sass +263 -0
  92. data/lib/generators/nifty/layout/templates/assets/stylesheets/aslon_scaffold/formtastic.css.sass +176 -0
  93. data/lib/generators/nifty/layout/templates/assets/stylesheets/aslon_scaffold/formtastic_changes.css.sass +31 -0
  94. data/lib/generators/nifty/layout/templates/assets/stylesheets/aslon_scaffold/table_coffee_with_milk.css.sass +94 -0
  95. data/lib/generators/nifty/layout/templates/error_messages_helper.rb +23 -0
  96. data/lib/generators/nifty/layout/templates/layout.html.haml +13 -0
  97. data/lib/generators/nifty/layout/templates/layout_helper.rb +22 -0
  98. data/lib/generators/nifty/layout/templates/locales/aslon_scaffold.fr.yml +14 -0
  99. data/lib/generators/nifty/scaffold/USAGE +51 -0
  100. data/lib/generators/nifty/scaffold/scaffold_generator.rb +319 -0
  101. data/lib/generators/nifty/scaffold/templates/actions/create.rb +8 -0
  102. data/lib/generators/nifty/scaffold/templates/actions/destroy.rb +5 -0
  103. data/lib/generators/nifty/scaffold/templates/actions/edit.rb +3 -0
  104. data/lib/generators/nifty/scaffold/templates/actions/index.rb +3 -0
  105. data/lib/generators/nifty/scaffold/templates/actions/new.rb +3 -0
  106. data/lib/generators/nifty/scaffold/templates/actions/show.rb +3 -0
  107. data/lib/generators/nifty/scaffold/templates/actions/update.rb +8 -0
  108. data/lib/generators/nifty/scaffold/templates/controller.rb +3 -0
  109. data/lib/generators/nifty/scaffold/templates/fixtures.yml +9 -0
  110. data/lib/generators/nifty/scaffold/templates/helper.rb +2 -0
  111. data/lib/generators/nifty/scaffold/templates/migration.rb +16 -0
  112. data/lib/generators/nifty/scaffold/templates/model.rb +4 -0
  113. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/create.rb +11 -0
  114. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  115. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  116. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/index.rb +4 -0
  117. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/new.rb +4 -0
  118. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/show.rb +4 -0
  119. data/lib/generators/nifty/scaffold/templates/tests/rspec/actions/update.rb +11 -0
  120. data/lib/generators/nifty/scaffold/templates/tests/rspec/controller.rb +8 -0
  121. data/lib/generators/nifty/scaffold/templates/tests/rspec/model.rb +7 -0
  122. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  123. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  124. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  125. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  126. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  127. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  128. data/lib/generators/nifty/scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  129. data/lib/generators/nifty/scaffold/templates/tests/shoulda/controller.rb +5 -0
  130. data/lib/generators/nifty/scaffold/templates/tests/shoulda/model.rb +7 -0
  131. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/create.rb +11 -0
  132. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  133. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  134. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/index.rb +4 -0
  135. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/new.rb +4 -0
  136. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/show.rb +4 -0
  137. data/lib/generators/nifty/scaffold/templates/tests/testunit/actions/update.rb +11 -0
  138. data/lib/generators/nifty/scaffold/templates/tests/testunit/controller.rb +5 -0
  139. data/lib/generators/nifty/scaffold/templates/tests/testunit/model.rb +7 -0
  140. data/lib/generators/nifty/scaffold/templates/views/erb/_form.html.erb +10 -0
  141. data/lib/generators/nifty/scaffold/templates/views/erb/edit.html.erb +14 -0
  142. data/lib/generators/nifty/scaffold/templates/views/erb/index.html.erb +29 -0
  143. data/lib/generators/nifty/scaffold/templates/views/erb/new.html.erb +7 -0
  144. data/lib/generators/nifty/scaffold/templates/views/erb/show.html.erb +20 -0
  145. data/lib/generators/nifty/scaffold/templates/views/haml/_new_edit.html.haml +6 -0
  146. data/lib/generators/nifty/scaffold/templates/views/haml/_search.html.haml +6 -0
  147. data/lib/generators/nifty/scaffold/templates/views/haml/index.html.haml +10 -0
  148. data/lib/generators/nifty/scaffold/templates/views/haml/layout.haml.erb +17 -0
  149. data/lib/generators/nifty/scaffold/templates/views/haml/new_edit.haml.erb +13 -0
  150. data/lib/generators/nifty/scaffold/templates/views/haml/show.haml.erb +14 -0
  151. data/lib/generators/templates/rails/scaffold_controller/controller.rb +11 -0
  152. data/lib/tasks/aslon_scaffold_tasks.rake +91 -0
  153. data/lib/tasks/task.rake +113 -0
  154. data/test/articles_controller_test.rb +24 -0
  155. data/test/database.yml +8 -0
  156. data/test/schema.rb +6 -0
  157. data/test/test_helper.rb +39 -0
  158. data/test/undeletable_plugin.sqlite.db +0 -0
  159. data/test/undeletable_plugin2.sqlite3.db +0 -0
  160. data/uninstall.rb +1 -0
  161. data/vendor/assets/images/aslon_scaffold/add.gif +0 -0
  162. data/vendor/assets/images/aslon_scaffold/delete.gif +0 -0
  163. data/vendor/assets/images/aslon_scaffold/edit.gif +0 -0
  164. data/vendor/assets/images/aslon_scaffold/folder.gif +0 -0
  165. data/vendor/assets/images/aslon_scaffold/grid-blue-hd.gif +0 -0
  166. data/vendor/assets/images/aslon_scaffold/grid-split.gif +0 -0
  167. data/vendor/assets/images/aslon_scaffold/grid3-hrow.gif +0 -0
  168. data/vendor/assets/images/aslon_scaffold/indicator.gif +0 -0
  169. data/vendor/assets/images/aslon_scaffold/magnifier.png +0 -0
  170. data/vendor/assets/images/aslon_scaffold/sort_asc.gif +0 -0
  171. data/vendor/assets/images/aslon_scaffold/sort_desc.gif +0 -0
  172. data/vendor/assets/stylesheets/aslon_scaffold_base.css.sass +116 -0
  173. data/vendor/assets/stylesheets/aslon_scaffold_base.css.sass.old +263 -0
  174. data/vendor/assets/stylesheets/aslon_scaffold_table.css.sass +94 -0
  175. data/vendor/assets/stylesheets/formtastic_changes.css.sass +31 -0
  176. metadata +185 -4
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .svn
6
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in aslon_scaffold.gemspec
4
+ gemspec
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 [name of plugin creator]
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.
data/README ADDED
@@ -0,0 +1,26 @@
1
+ Aslon Scaffold
2
+ ===========
3
+
4
+
5
+
6
+ Example
7
+ =======
8
+
9
+ class LanguesController < ApplicationController
10
+ aslon_scaffold
11
+ end
12
+
13
+ class LanguesController < ApplicationController
14
+ aslon_scaffold :display_columns=>%w(lib code)
15
+ end
16
+
17
+
18
+ class LanguesController < ApplicationController
19
+ aslon_scaffold :display_columns=>%w(lib code),
20
+ :show_fields=>%w(lib code id),
21
+ :edit_fields=%w(lib)
22
+ :search_fields=>%w(lib),
23
+ :legend=>"Hello"
24
+ end
25
+
26
+ Copyright (c) 2009 [name of plugin creator], released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,33 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "aslon_scaffold/version"
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "aslon_scaffold"
8
+ s.version = AslonScaffold::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.authors = ["alson"]
11
+ s.email = ["Write your email address"]
12
+ s.homepage = ""
13
+ s.summary = %q{TOD O: Write a gem summary}
14
+ s.description = %q{Write a gem description}
15
+
16
+ s.rubyforge_project = "aslon_scaff old"
17
+
18
+ # s.files = `git ls-files`.split("\n")
19
+ # s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ # s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.files = `git ls-files`.split($/)
22
+ s.executables = s.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
23
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
24
+ s.require_paths = ["lib"]
25
+
26
+ s.add_dependency('will_paginate', '~> 3.0.pre2')
27
+ s.add_dependency('formtastic', '~>2')
28
+ s.add_dependency('haml')
29
+ s.add_dependency('sass')
30
+ s.add_dependency('dynamic_form')
31
+
32
+ end
33
+
@@ -0,0 +1,14 @@
1
+ ---
2
+ fr:
3
+ views:
4
+ generic:
5
+ edit: "Edition : %{model}"
6
+ new: "Nouveau : %{model}"
7
+ index: "Liste : %{model}"
8
+ messages:
9
+ ok_created: "%{model} : OK création"
10
+ ok_deleted: "OK suppression"
11
+ ko_deleted: "KO suppression"
12
+ ok_updated: "OK mise à jour"
13
+ mise_a_jour: "Mise à jour"
14
+ model: "Modèle"
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'aslon_scaffold'
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,7 @@
1
+ class ArticleesController < ActionController::Base
2
+
3
+ def index
4
+ render :text => "Hello !"
5
+ end
6
+
7
+ end
@@ -0,0 +1,410 @@
1
+ # encoding: utf-8
2
+
3
+ # Methods added to this helper will be available to all templates in the application.
4
+ module ApplicationHelper
5
+
6
+ def ican?(*args)
7
+ begin
8
+ # if CanCan plugin installed
9
+ can?(*args)
10
+ rescue
11
+ true
12
+ end
13
+ end
14
+ def icannot?(*args)
15
+ begin
16
+ # if CanCan plugin installed
17
+ cannot?(*args)
18
+ rescue
19
+ false
20
+ end
21
+ end
22
+
23
+ def url(v)
24
+ if v =~ /http:/
25
+ return "<a href=#{v}>#{v}</a>"
26
+ else
27
+ return v
28
+ end
29
+ end
30
+
31
+ def show(objet,attribut)
32
+
33
+
34
+ aslib= eval "#{objet.class.name}.human_attribute_name(attribut)"
35
+ begin
36
+ if attribut.split('.').size==2
37
+ return ("<li class='string input optional stringish'><label class='label'>#{aslib}</label>"+objet.send( attribut.split('.').first).send( attribut.split('.').second).to_s+"</li>").html_safe
38
+ else
39
+ return ("<li class='string input optional stringish'><label class='label'>#{aslib}</label>"+url(objet.send(attribut).to_s)+"</li>").html_safe
40
+ end
41
+
42
+ rescue
43
+ return ("<li class='string input optional stringish'><label class='label'>#{aslib}</label>?</li>").html_safe
44
+ end
45
+ end
46
+
47
+ def model_name(model)
48
+ begin
49
+ eval("#{model}.model_name.human")
50
+ rescue
51
+ model.humanize
52
+ end
53
+ end
54
+ def titre_action (action,model)
55
+ txt=model_name(model)
56
+ ("<h1 class='aslon_scaffold'>"+t("views.generic.#{action}", :model=>txt)+"</h1>").html_safe
57
+ end
58
+
59
+ def titre_show(objet, lib)
60
+ model=objet.class
61
+ begin
62
+ txt=eval("#{model}.model_name.human")
63
+ rescue
64
+ txt= model.model_name
65
+ end
66
+ ("<h1 class='aslon_scaffold'> #{txt} : #{lib} #{link_to_image_edit(objet)} #{link_to_image_delete(objet)}</h1>").html_safe
67
+
68
+ end
69
+
70
+ def link_to_image_edit(objet)
71
+ if ican? :edit,objet
72
+ link_to image_edit,eval("edit_#{objet.class.to_s.underscore.gsub('/','_')}_path(objet)"),:id=>'edit'
73
+ end
74
+ end
75
+ def link_to_image_add(objet)
76
+ if ican? :create,objet
77
+ link_to image_add,eval("new_#{objet.class.to_s.underscore}_path(objet)"),:id=>'add'
78
+ end
79
+ end
80
+ def link_to_image_delete(objet)
81
+ if ican? :destroy, objet
82
+ link_to(image_delete, objet, :confirm => 'Are you sure?', :method => :delete, :id=>'delete')
83
+ end
84
+ end
85
+
86
+
87
+
88
+
89
+ # --------------------------------------------------------------------------------
90
+ # Création de la barre de titre à associé au tableau
91
+ # --------------------------------------------------------------------------------
92
+ def titre(titre, model=nil, search=true, add=true, action='search',addlink=nil)
93
+
94
+ s=form_tag('javascript:void(0)' )
95
+ s="
96
+ <table id='titreliste' cellpadding='0' cellspacing='0' >
97
+ <tr>
98
+ <th COLSPAN='10'>#{titre}"
99
+ if add==true
100
+ if addlink==nil
101
+ t="new_"+model.singularize.underscore.gsub('/','_') + "_path(:fournisseur_id=>params[:fournisseur_id],
102
+ :rfq_id=>params[:rfq_id],
103
+ :client_id=>params[:client_id])"
104
+ else
105
+ t=addlink
106
+ end
107
+ s<<link_to(image_add, eval(t),:id=>'add') if ican?(:create, eval(model.camelcase))
108
+
109
+ end
110
+ if search
111
+ s<<" "+image_tag("aslon_scaffold/grid-split.gif", :border=>0, :style=>"vertical-align:middle")
112
+ s<<" Search : "
113
+ s<< text_field_tag( :search, nil, {:size=>10})
114
+ s<< image_tag("aslon_scaffold/indicator.gif", :style=>"vertical-align:middle", :border => 0, :id => "spiner",:style => "display:none;" )
115
+ end
116
+ s<<"</th>
117
+ </tr>
118
+ </table>"
119
+ if search
120
+ cond=":type=>'simle'"
121
+ # s<< observe_field(:search,
122
+ # :frequency=>1,
123
+ # :update=>"ajaxw",
124
+ # :before=>"Element.show('spiner')",
125
+ # :success=>"Element.hide('spiner')",
126
+ # :url=>{ :controller=>model.underscore.pluralize,
127
+ # :action=>action,
128
+ # :method => 'get',
129
+ # :only_path=>false,
130
+ # :type=>params[:type],
131
+ # :status=>params[:status],
132
+ # :fournisseur_id=>params[:fournisseur_id],
133
+ # :rfq_id=>params[:rfq_id],
134
+ # :client_id=>params[:client_id]
135
+ # },
136
+ # :with=>"'search='+encodeURIComponent(value)")
137
+ url= url_for(:action => 'search', :controller => model.underscore.pluralize)
138
+
139
+ s<< "<script>
140
+ $(document).ready(function(){
141
+
142
+ $('#search').bind('keyup', function() {
143
+ $('#spiner').show();
144
+ var url = '#{url}';
145
+ var formData = 'search='+encodeURIComponent($('#search').val());
146
+ $.post(url, formData, function(html) {
147
+ $('#spiner').hide(); // hide the spinner
148
+ $('#ajaxw').html(html);
149
+ });
150
+ });
151
+
152
+ });
153
+ </script>"
154
+
155
+ end
156
+ return s.html_safe
157
+
158
+ end
159
+ # --------------------------------------------------------------------------------
160
+ # Création d'un tableau
161
+ # --------------------------------------------------------------------------------
162
+ def table(model, table, h, actions)
163
+ sel=''
164
+ sel='&type='+params[:type] if params[:type]
165
+ sel+='&status='+params[:status] if params[:status]
166
+
167
+ wp=will_paginate(table)
168
+ info_titre_tableau=page_entries_info(table)
169
+ s=''.force_encoding('utf-8')
170
+ # --------------------------------------------------------------------
171
+ s<<"<table id='liste'>
172
+ <caption>#{info_titre_tableau}</caption>
173
+ <thead>
174
+ <tr>"
175
+ # --------------------------------------------------------------------
176
+ # intitulé des colonnes
177
+ # --------------------------------------------------------------------
178
+
179
+ h.each do |value|
180
+ img='aslon_scaffold/sort_desc.gif'
181
+ sens='DESC'
182
+ if params[:order]==value && params[:sens]=='DESC'
183
+ sens='ASC'
184
+ img='aslon_scaffold/sort_desc.gif'
185
+ end
186
+
187
+ if params[:order]==value && params[:sens]=='ASC'
188
+ sens='DESC'
189
+ img='aslon_scaffold/sort_asc.gif'
190
+ end
191
+ hlib=eval("#{model.gsub('_','/').camelize}.human_attribute_name(value)")
192
+ # sorting doesn't work with search
193
+ if request.env['QUERY_STRING'] != "method=get" && !value.include?('.')
194
+ s<<"<th scope='col' onclick=\"self.location.href = \'#{request.env['PATH_INFO']}?#{sel}&order=#{value}&sens=#{sens}\'; \">"
195
+ s<< hlib
196
+ s<<" "+image_tag(img, :border=>0, :style=>"vertical-align:middle") if (img)
197
+ s<<"</th>"
198
+ else
199
+ # s<< "<th scope='col'>"+l(key)+"</th>"
200
+ s<< "<th scope='col'>"+hlib+"</th>"
201
+ end
202
+ end
203
+
204
+ s<<'</tr>'
205
+ s<<'</thead>'
206
+ # --------------------------------------------------------------------
207
+ # bas du tableau
208
+ # --------------------------------------------------------------------
209
+ s<< " <tfoot>
210
+ <tr>
211
+ <th scope='row'>#{info_titre_tableau}</th>
212
+ <td colspan='#{h.size-1}'>&nbsp; #{wp}</td>
213
+ </tr>
214
+ </tfoot>"
215
+ s<<'<tbody>'
216
+ # --------------------------------------------------------------------
217
+ # lignes du tableau
218
+ # --------------------------------------------------------------------
219
+ i=1
220
+ script="".force_encoding('utf-8')
221
+ for aLine in table
222
+ id=''
223
+ c_id=''
224
+ # ------------- création id de la ligne --------------------------
225
+ h.each do |lib|
226
+ begin
227
+ v=eval("aLine."+"#{lib}").to_s
228
+ rescue
229
+ v='nil'
230
+ end
231
+ id<<model+'_'+lib+'_'+ v.gsub(' ', '')
232
+ c_id=aLine.id
233
+
234
+ end
235
+ # ----------------------------------------------------------------
236
+ # ----------------------------------------------------------------
237
+ if i%2==0
238
+ s<<"<tr id='#{id}' class=#{c_id}>"
239
+ else
240
+ s<<"<tr class='odd #{c_id}' id='#{id}'>"
241
+ end
242
+ i+=1
243
+ # ----------------------------------------------------------------
244
+ cp=0
245
+
246
+ h.each do |lib|
247
+
248
+ local= I18n.locale
249
+ begin
250
+ v=url(eval("aLine."+"#{lib}").to_s)
251
+ rescue
252
+ v='nil'
253
+ end
254
+ s<<""
255
+ premiere_colonne=v
256
+ t=model.singularize.downcase + "_url(aLine)"
257
+ if cp==0
258
+ s<<("<th scope='row' "+"class='"+model.singularize.downcase+'_'+lib+'_'+ v+'_'+"'>" )
259
+ premiere_colonne= link_to(v, eval(t),:id=>'show')
260
+ else
261
+ s<<('<td '+"class='"+model+'_'+lib.to_s+'_'+ v+'_'+local.to_s+"'>")
262
+ end
263
+
264
+ s<< premiere_colonne
265
+ lik= url_for( eval(t))
266
+ # script << "<script>$('#{id}').observe('click',function(e) {window.location='#{lik}';},false)</script>"
267
+ # script << "<script>$('#{id}').observe('click',function(e) {window.location='#{lik}';},false)</script>"
268
+ # script << "<script>$('##{id}').click(function(){window.location='#{lik}';})</script>"
269
+ script << "<script>$('.#{c_id}').click(function(){window.location='#{lik}';})</script>"
270
+ if cp==0
271
+ s<<"&nbsp;</th>"
272
+ else
273
+ s<<"&nbsp;</td>"
274
+ end
275
+ cp+=1
276
+ end
277
+ s<<'</tr>'
278
+
279
+ end
280
+ s<<'</tbody>'
281
+ s<<"</table>"
282
+ s<<script
283
+ if table.size>0
284
+ return s
285
+ else
286
+ return "0 line"
287
+ end
288
+
289
+ end
290
+
291
+ #todo rendre multiplangues
292
+ def l(lib)
293
+ return lib.to_s.humanize
294
+ end
295
+
296
+ def llib(lib)
297
+ return lib.to_s.humanize if $l[lib]==nil
298
+ return "<b>"+$l[lib]+"</b>"
299
+ end
300
+
301
+ def hi(lib)
302
+ if lib.to_s==""
303
+ return "-"
304
+ else
305
+ h(lib)
306
+ end
307
+ end
308
+
309
+ def td (lib)
310
+ return "<td>"+hi(lib)+"</td>"
311
+ end
312
+
313
+ def tri(i)
314
+ if i%2==0
315
+ return "<tr class='pair'>"
316
+ else
317
+ return "<tr>"
318
+ end
319
+ end
320
+
321
+ def image_edit
322
+ return image_tag("aslon_scaffold/edit.gif", :border=>0, :style=>"vertical-align:middle")+"[Edit]"
323
+ end
324
+
325
+ def image_delete
326
+ return image_tag("aslon_scaffold/delete.gif", :border=>0, :style=>"vertical-align:middle")+"[Supp]"
327
+ end
328
+
329
+ def image_add
330
+ return image_tag("aslon_scaffold/add.gif", :border=>0, :style=>"vertical-align:middle",:id=>'add')+"[Ajouter]"
331
+ end
332
+
333
+ def image_zoom
334
+ return image_tag("aslon_scaffold/magnifier.png", :border=>0, :style=>"vertical-align:middle")+"[Voir]"
335
+ end
336
+
337
+ def image_folder
338
+ return image_tag("aslon_scaffold/folder.gif", :border=>0, :style=>"vertical-align:bottom")
339
+ end
340
+
341
+ def image_refresh
342
+ return image_tag("icons/mini/page_refresh.gif", :border=>0, :style=>"vertical-align:bottom")
343
+ end
344
+
345
+ def image_export
346
+ return image_tag("icons/mini/icon_download.gif", :border=>0, :style=>"vertical-align:middle")+"Export .csv"
347
+ end
348
+
349
+ def image_import
350
+ return image_tag("icons/mini/page_new.gif", :border=>0, :style=>"vertical-align:middle")+"Import"
351
+ end
352
+
353
+
354
+ # Outputs the error messages block.
355
+ # The first argument specifies a hash options:
356
+ # * :on => :products Also includes AR validation errors for @products
357
+ # * :clear => true Clears messages after displaying
358
+ # * :keep => true Keeps around messages for next response cycle
359
+ #
360
+
361
+ def mb
362
+ out = "é"
363
+ end
364
+
365
+ def message_block(options = {})
366
+ out = ""
367
+
368
+ [:back, :confirm, :error, :info, :warn, :notice].each do |type|
369
+ next if flash[type].nil? or flash[type].empty?
370
+ flash[type] = [flash[type]] unless flash[type].is_a?(Array)
371
+
372
+ out << "<div class=\"container #{type}\"><ul>\n"
373
+ flash[type].each {|msg| out << "<li>#{h(msg.to_s)}</li>\n"}
374
+ out << "</ul></div>\n"
375
+
376
+ flash[type] = nil if options[:clear]
377
+ flash.keep[type] if options[:keep]
378
+ end
379
+
380
+ if options[:on]
381
+ options[:on] = [options[:on]] unless options[:on].kind_of?(Array)
382
+ models = options[:on].map {|m| instance_variable_get("@" + m.to_s)}.select {|m| !m.nil?}
383
+ errors = models.inject([]) {|b, m| b += m.errors.full_messages}
384
+
385
+ if errors.size > 0
386
+ out << "<div class=\"container error\"><ul>\n"
387
+ errors.each {|msg| out << "<li>#{h(msg.to_s)}</li>\n"}
388
+ out << "</ul></div>\n"
389
+ end
390
+ end
391
+
392
+ content_tag(:div, out.html_safe, :id => 'message_block', :class => 'flash')
393
+ end
394
+
395
+
396
+ def hbutton_to(text, url, active=true)
397
+ out=''
398
+ out<<"<button type='button' onclick=\"JavaScript: window.location='"
399
+ out<< url_for(url)
400
+ out<<"'\">"
401
+ out<<text
402
+ out<<'</button> '
403
+ return out
404
+ end
405
+
406
+ def submit_action(form, lib, action)
407
+ button_to_function lib, "$('#{form}').action='#{action}';$('#{form}').submit();"
408
+ end
409
+
410
+ end