advertnet 1.0.0

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 (159) hide show
  1. data/LICENSE +674 -0
  2. data/README +257 -0
  3. data/Rakefile +10 -0
  4. data/app/controllers/application.rb +40 -0
  5. data/app/controllers/container_controller.rb +83 -0
  6. data/app/controllers/content_controller.rb +61 -0
  7. data/app/controllers/furnitures_controller.rb +87 -0
  8. data/app/controllers/networks_controller.rb +269 -0
  9. data/app/controllers/objects_in_world_controller.rb +27 -0
  10. data/app/controllers/panels_controller.rb +186 -0
  11. data/app/helpers/application_helper.rb +31 -0
  12. data/app/helpers/container_helper.rb +2 -0
  13. data/app/helpers/content_helper.rb +2 -0
  14. data/app/helpers/furnitures_helper.rb +2 -0
  15. data/app/helpers/network_helper.rb +2 -0
  16. data/app/helpers/networks_helper.rb +2 -0
  17. data/app/helpers/objects_in_world_helper.rb +2 -0
  18. data/app/helpers/panels_helper.rb +2 -0
  19. data/app/models/container.rb +51 -0
  20. data/app/models/furniture.rb +60 -0
  21. data/app/models/mailer.rb +22 -0
  22. data/app/models/network.rb +38 -0
  23. data/app/models/object_in_world.rb +60 -0
  24. data/app/models/object_off_world.rb +77 -0
  25. data/app/models/panel.rb +136 -0
  26. data/app/models/panel_revision.rb +108 -0
  27. data/app/views/container/list.rhtml +27 -0
  28. data/app/views/container/show.rhtml +8 -0
  29. data/app/views/content/_form.rhtml +12 -0
  30. data/app/views/content/edit.rhtml +8 -0
  31. data/app/views/content/list.rhtml +26 -0
  32. data/app/views/content/new.rhtml +8 -0
  33. data/app/views/furnitures/list.rhtml +51 -0
  34. data/app/views/furnitures/show.rhtml +7 -0
  35. data/app/views/layouts/default.rhtml +30 -0
  36. data/app/views/mailer/avtouch.rhtml +1 -0
  37. data/app/views/networks/_form.rhtml +11 -0
  38. data/app/views/networks/_parameters_form.rhtml +8 -0
  39. data/app/views/networks/edit.rhtml +9 -0
  40. data/app/views/networks/list.rhtml +25 -0
  41. data/app/views/networks/new.rhtml +8 -0
  42. data/app/views/networks/show.rhtml +72 -0
  43. data/app/views/networks/show_parameters_form.rjs +5 -0
  44. data/app/views/objects_in_world/list.rhtml +30 -0
  45. data/app/views/objects_in_world/show.rhtml +8 -0
  46. data/app/views/panels/list.rhtml +48 -0
  47. data/app/views/panels/show.rhtml +8 -0
  48. data/bin/advertnet-install +144 -0
  49. data/config/boot.rb +45 -0
  50. data/config/database.yml.default +43 -0
  51. data/config/environment.rb +67 -0
  52. data/config/environments/development.rb +21 -0
  53. data/config/environments/production.rb +21 -0
  54. data/config/environments/test.rb +19 -0
  55. data/config/routes.rb +23 -0
  56. data/db/migrate/001_create_networks.rb +14 -0
  57. data/db/migrate/002_create_furnitures.rb +17 -0
  58. data/db/migrate/003_create_containers.rb +16 -0
  59. data/db/migrate/004_create_objects_in_world.rb +16 -0
  60. data/db/migrate/005_create_objects_off_world.rb +16 -0
  61. data/db/migrate/006_create_panels.rb +17 -0
  62. data/db/migrate/007_join_objects_in_world_panels.rb +17 -0
  63. data/db/migrate/008_join_objects_off_world_panels.rb +17 -0
  64. data/db/migrate/009_add_sessions.rb +19 -0
  65. data/db/migrate/010_add_or_rename_fields.rb +25 -0
  66. data/db/migrate/011_move_texture_to_object_in_world.rb +25 -0
  67. data/db/migrate/012_add_permanent_furniture_id.rb +18 -0
  68. data/db/migrate/013_create_panel_revisions.rb +42 -0
  69. data/db/schema.rb +102 -0
  70. data/doc/README_FOR_APP +108 -0
  71. data/lib/advertnet.rb +13 -0
  72. data/lib/second_life_validators.rb +89 -0
  73. data/lib/tasks/documentation.rake +16 -0
  74. data/lib/tasks/extract_fixtures.rake +23 -0
  75. data/lib/tasks/load_exported_fixtures.rake +14 -0
  76. data/public/404.html +30 -0
  77. data/public/500.html +30 -0
  78. data/public/dispatch.cgi +10 -0
  79. data/public/dispatch.fcgi +24 -0
  80. data/public/dispatch.rb +10 -0
  81. data/public/favicon.ico +0 -0
  82. data/public/images/rails.png +0 -0
  83. data/public/javascripts/application.js +2 -0
  84. data/public/javascripts/controls.js +833 -0
  85. data/public/javascripts/dragdrop.js +942 -0
  86. data/public/javascripts/effects.js +1088 -0
  87. data/public/javascripts/prototype.js +2515 -0
  88. data/public/robots.txt +1 -0
  89. data/public/stylesheets/application.css +25 -0
  90. data/public/stylesheets/scaffold.css +74 -0
  91. data/script/about +3 -0
  92. data/script/breakpointer +3 -0
  93. data/script/console +3 -0
  94. data/script/destroy +3 -0
  95. data/script/generate +3 -0
  96. data/script/performance/benchmarker +3 -0
  97. data/script/performance/profiler +3 -0
  98. data/script/plugin +3 -0
  99. data/script/process/inspector +3 -0
  100. data/script/process/reaper +3 -0
  101. data/script/process/spawner +3 -0
  102. data/script/runner +3 -0
  103. data/script/server +3 -0
  104. data/test/fixtures/containers.yml +44 -0
  105. data/test/fixtures/furnitures.yml +47 -0
  106. data/test/fixtures/mailer/avtouch +1 -0
  107. data/test/fixtures/networks.yml +31 -0
  108. data/test/fixtures/objects_in_world.yml +71 -0
  109. data/test/fixtures/objects_in_world_panels.yml +43 -0
  110. data/test/fixtures/objects_off_world.yml +55 -0
  111. data/test/fixtures/objects_off_world_panels.yml +20 -0
  112. data/test/fixtures/panel_revisions.yml +28 -0
  113. data/test/fixtures/panels.yml +79 -0
  114. data/test/functional/container_controller_test.rb +167 -0
  115. data/test/functional/content_controller_test.rb +91 -0
  116. data/test/functional/furnitures_controller_test.rb +134 -0
  117. data/test/functional/networks_controller_test.rb +248 -0
  118. data/test/functional/objects_in_world_controller_test.rb +42 -0
  119. data/test/functional/panels_controller_test.rb +173 -0
  120. data/test/test_helper.rb +53 -0
  121. data/test/unit/container_test.rb +53 -0
  122. data/test/unit/furniture_test.rb +68 -0
  123. data/test/unit/mailer_test.rb +40 -0
  124. data/test/unit/network_test.rb +42 -0
  125. data/test/unit/object_in_world_test.rb +33 -0
  126. data/test/unit/object_off_world_test.rb +26 -0
  127. data/test/unit/panel_revision_test.rb +148 -0
  128. data/test/unit/panel_test.rb +63 -0
  129. data/vendor/plugins/annotate_models/ChangeLog +46 -0
  130. data/vendor/plugins/annotate_models/README +31 -0
  131. data/vendor/plugins/annotate_models/lib/annotate_models.rb +132 -0
  132. data/vendor/plugins/annotate_models/tasks/annotate_models_tasks.rake +7 -0
  133. data/vendor/plugins/foreign_key_migrations/CHANGELOG +99 -0
  134. data/vendor/plugins/foreign_key_migrations/MIT-LICENSE +20 -0
  135. data/vendor/plugins/foreign_key_migrations/README +87 -0
  136. data/vendor/plugins/foreign_key_migrations/about.yml +5 -0
  137. data/vendor/plugins/foreign_key_migrations/init.rb +3 -0
  138. data/vendor/plugins/foreign_key_migrations/install.rb +1 -0
  139. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/base.rb +22 -0
  140. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/abstract_adapter.rb +22 -0
  141. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb +28 -0
  142. data/vendor/plugins/redhillonrails_core/CHANGELOG +154 -0
  143. data/vendor/plugins/redhillonrails_core/MIT-LICENSE +20 -0
  144. data/vendor/plugins/redhillonrails_core/README +139 -0
  145. data/vendor/plugins/redhillonrails_core/init.rb +19 -0
  146. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +54 -0
  147. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +31 -0
  148. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +21 -0
  149. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +26 -0
  150. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +11 -0
  151. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +82 -0
  152. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +8 -0
  153. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +107 -0
  154. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +23 -0
  155. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +9 -0
  156. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +27 -0
  157. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +27 -0
  158. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +47 -0
  159. metadata +290 -0
@@ -0,0 +1,31 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module AbstractAdapter
3
+ def self.included(base)
4
+ base.module_eval do
5
+ alias_method_chain :drop_table, :redhillonrails_core
6
+ end
7
+ end
8
+
9
+ def foreign_keys(table_name, name = nil)
10
+ []
11
+ end
12
+
13
+ def reverse_foreign_keys(table_name, name = nil)
14
+ []
15
+ end
16
+
17
+ def add_foreign_key(table_name, column_names, references_table_name, references_column_names, options = {})
18
+ foreign_key = ForeignKeyDefinition.new(options[:name], table_name, column_names, ActiveRecord::Migrator.proper_table_name(references_table_name), references_column_names, options[:on_update], options[:on_delete], options[:deferrable])
19
+ execute "ALTER TABLE #{table_name} ADD #{foreign_key}"
20
+ end
21
+
22
+ def remove_foreign_key(table_name, foreign_key_name)
23
+ execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{foreign_key_name}"
24
+ end
25
+
26
+ def drop_table_with_redhillonrails_core(name, options = {})
27
+ reverse_foreign_keys(name).each { |foreign_key| remove_foreign_key(foreign_key.table_name, foreign_key.name) }
28
+ drop_table_without_redhillonrails_core(name, options)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module Column
3
+ attr_accessor :unique_scope
4
+ attr_accessor :case_sensitive
5
+ alias case_sensitive? case_sensitive
6
+
7
+ def unique?
8
+ !unique_scope.nil?
9
+ end
10
+
11
+ def required_on
12
+ if null
13
+ nil
14
+ elsif default.nil?
15
+ :save
16
+ else
17
+ :update
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ class ForeignKeyDefinition < Struct.new(:name, :table_name, :column_names, :references_table_name, :references_column_names, :on_update, :on_delete, :deferrable)
3
+ ACTIONS = { :cascade => "CASCADE", :restrict => "RESTRICT", :set_null => "SET NULL", :set_default => "SET DEFAULT", :no_action => "NO ACTION" }.freeze
4
+
5
+ def to_dump
6
+ dump = "add_foreign_key"
7
+ dump << " #{table_name.inspect}, [#{column_names.collect{ |name| name.inspect }.join(', ')}]"
8
+ dump << ", #{references_table_name.inspect}, [#{references_column_names.collect{ |name| name.inspect }.join(', ')}]"
9
+ dump << ", :on_update => :#{on_update}" if on_update
10
+ dump << ", :on_delete => :#{on_delete}" if on_delete
11
+ dump << ", :deferrable => #{deferrable}" if deferrable
12
+ dump << ", :name => #{name.inspect}" if name
13
+ dump
14
+ end
15
+
16
+ def to_sql
17
+ sql = name ? "CONSTRAINT #{name} " : ""
18
+ sql << "FOREIGN KEY (#{Array(column_names).join(", ")}) REFERENCES #{references_table_name} (#{Array(references_column_names).join(", ")})"
19
+ sql << " ON UPDATE #{ACTIONS[on_update]}" if on_update
20
+ sql << " ON DELETE #{ACTIONS[on_delete]}" if on_delete
21
+ sql << " DEFERRABLE" if deferrable
22
+ sql
23
+ end
24
+ alias :to_s :to_sql
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module IndexDefinition
3
+ def case_sensitive?
4
+ @case_sensitive.nil? ? true : @case_sensitive
5
+ end
6
+
7
+ def case_sensitive=(case_sensitive)
8
+ @case_sensitive = case_sensitive
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,82 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module MysqlAdapter
3
+ def self.included(base)
4
+ base.class_eval do
5
+ alias_method_chain :remove_column, :redhillonrails_core
6
+ end
7
+ end
8
+
9
+ def set_table_comment(table_name, comment)
10
+ execute "ALTER TABLE #{table_name} COMMENT='#{quote_string(comment)}'"
11
+ end
12
+
13
+ def clear_table_comment(table_name)
14
+ execute "ALTER TABLE #{table_name} COMMENT=''"
15
+ end
16
+
17
+ def remove_foreign_key(table_name, foreign_key_name)
18
+ execute "ALTER TABLE #{table_name} DROP FOREIGN KEY #{foreign_key_name}"
19
+ end
20
+
21
+ def remove_column_with_redhillonrails_core(table_name, column_name)
22
+ foreign_keys(table_name).select { |foreign_key| foreign_key.column_names.include?(column_name.to_s) }.each do |foreign_key|
23
+ remove_foreign_key(table_name, foreign_key.name)
24
+ end
25
+ remove_column_without_redhillonrails_core(table_name, column_name)
26
+ end
27
+
28
+ def foreign_keys(table_name, name = nil)
29
+ results = execute("SHOW CREATE TABLE `#{table_name}`", name)
30
+
31
+ foreign_keys = []
32
+
33
+ results.each do |row|
34
+ row[1].each do |line|
35
+ if line =~ /^ CONSTRAINT [`"](.+?)[`"] FOREIGN KEY \([`"](.+?)[`"]\) REFERENCES [`"](.+?)[`"] \((.+?)\)( ON DELETE (.+?))?( ON UPDATE (.+?))?,?$/
36
+ name = $1
37
+ column_names = $2
38
+ references_table_name = $3
39
+ references_column_names = $4
40
+ on_update = $8
41
+ on_delete = $6
42
+ on_update = on_update.downcase.gsub(' ', '_').to_sym if on_update
43
+ on_delete = on_delete.downcase.gsub(' ', '_').to_sym if on_delete
44
+
45
+ foreign_keys << ForeignKeyDefinition.new(name,
46
+ table_name, column_names.gsub('`', '').split(', '),
47
+ references_table_name, references_column_names.gsub('`', '').split(', '),
48
+ on_update, on_delete)
49
+ end
50
+ end
51
+ end
52
+
53
+ foreign_keys
54
+ end
55
+
56
+ def reverse_foreign_keys(table_name, name = nil)
57
+ results = execute(<<-SQL, name)
58
+ SELECT constraint_name, table_name, column_name, referenced_table_name, referenced_column_name
59
+ FROM information_schema.key_column_usage
60
+ WHERE table_schema = SCHEMA()
61
+ AND referenced_table_schema = table_schema
62
+ AND referenced_table_name = '#{table_name}'
63
+ ORDER BY constraint_name, ordinal_position;
64
+ SQL
65
+
66
+ current_foreign_key = nil
67
+ foreign_keys = []
68
+
69
+ results.each do |row|
70
+ if current_foreign_key != row[0]
71
+ foreign_keys << ForeignKeyDefinition.new(row[0], row[1], [], row[3], [])
72
+ current_foreign_key = row[0]
73
+ end
74
+
75
+ foreign_keys.last.column_names << row[2]
76
+ foreign_keys.last.references_column_names << row[4]
77
+ end
78
+
79
+ foreign_keys
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,8 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module MysqlColumn
3
+ def initialize(name, default, sql_type = nil, null = true)
4
+ default = nil if !null && default.blank?
5
+ super
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,107 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module PostgresqlAdapter
3
+ def self.included(base)
4
+ base.class_eval do
5
+ alias_method_chain :indexes, :redhillonrails_core
6
+ end
7
+ end
8
+
9
+ def set_table_comment(table_name, comment)
10
+ execute "COMMENT ON TABLE #{table_name} IS '#{quote_string(comment)}'"
11
+ end
12
+
13
+ def clear_table_comment(table_name)
14
+ execute "COMMENT ON TABLE #{table_name} IS NULL"
15
+ end
16
+
17
+ def add_index(table_name, column_name, options = {})
18
+ column_names = Array(column_name)
19
+ index_name = index_name(table_name, :column => column_names)
20
+
21
+ if Hash === options # legacy support, since this param was a string
22
+ index_type = options[:unique] ? "UNIQUE" : ""
23
+ index_name = options[:name] || index_name
24
+ else
25
+ index_type = options
26
+ end
27
+
28
+ quoted_column_names = column_names.map { |e| options[:case_sensitive] == false && e.to_s !~ /_id$/ ? "LOWER(#{quote_column_name(e)})" : quote_column_name(e) }
29
+
30
+ execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} ON #{table_name} (#{quoted_column_names.join(", ")})"
31
+ end
32
+
33
+ def indexes_with_redhillonrails_core(table_name, name = nil)
34
+ indexes = indexes_without_redhillonrails_core(table_name, name)
35
+ result = query(<<-SQL, name)
36
+ SELECT c2.relname, i.indisunique, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true)
37
+ FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i
38
+ WHERE c.relname = '#{table_name}'
39
+ AND c.oid = i.indrelid AND i.indexrelid = c2.oid
40
+ AND i.indisprimary = 'f'
41
+ AND i.indexprs IS NOT NULL
42
+ ORDER BY 1
43
+ SQL
44
+
45
+ result.each do |row|
46
+ if row[2]=~ /\((.*LOWER\(.*::text\).*)\)$/i
47
+ indexes.delete_if { |index| index.name == row[0] }
48
+ column_names = $1.split(", ").map { |name| name =~ /^LOWER\((.*)::text\)$/i ? $1 : name }
49
+ index = ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, row[0], row[1] == "t", column_names)
50
+ index.case_sensitive = false
51
+ indexes << index
52
+ end
53
+ end
54
+
55
+ indexes
56
+ end
57
+
58
+ def foreign_keys(table_name, name = nil)
59
+ load_foreign_keys(<<-SQL, name)
60
+ SELECT f.conname, pg_get_constraintdef(f.oid), t.relname
61
+ FROM pg_class t, pg_constraint f
62
+ WHERE f.conrelid = t.oid
63
+ AND f.contype = 'f'
64
+ AND t.relname = '#{table_name}'
65
+ SQL
66
+ end
67
+
68
+ def reverse_foreign_keys(table_name, name = nil)
69
+ load_foreign_keys(<<-SQL, name)
70
+ SELECT f.conname, pg_get_constraintdef(f.oid), t2.relname
71
+ FROM pg_class t, pg_class t2, pg_constraint f
72
+ WHERE f.confrelid = t.oid
73
+ AND f.conrelid = t2.oid
74
+ AND f.contype = 'f'
75
+ AND t.relname = '#{table_name}'
76
+ SQL
77
+ end
78
+
79
+ private
80
+
81
+ def load_foreign_keys(sql, name = nil)
82
+ foreign_keys = []
83
+
84
+ query(sql, name).each do |row|
85
+ if row[1] =~ /^FOREIGN KEY \((.+?)\) REFERENCES (.+?)\((.+?)\)( ON UPDATE (.+?))?( ON DELETE (.+?))?( (DEFERRABLE|NOT DEFERRABLE))?$/
86
+ name = row[0]
87
+ from_table_name = row[2]
88
+ column_names = $1
89
+ references_table_name = $2
90
+ references_column_names = $3
91
+ on_update = $5
92
+ on_delete = $7
93
+ deferrable = $9 == "DEFERRABLE"
94
+ on_update = on_update.downcase.gsub(' ', '_').to_sym if on_update
95
+ on_delete = on_delete.downcase.gsub(' ', '_').to_sym if on_delete
96
+
97
+ foreign_keys << ForeignKeyDefinition.new(name,
98
+ from_table_name, column_names.split(', '),
99
+ references_table_name.sub(/^"(.*)"$/, '\1'), references_column_names.split(', '),
100
+ on_update, on_delete, deferrable)
101
+ end
102
+ end
103
+
104
+ foreign_keys
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,23 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module SchemaStatements
3
+ def self.included(base)
4
+ base.module_eval do
5
+ alias_method_chain :create_table, :redhillonrails_core
6
+ end
7
+ end
8
+
9
+ def create_table_with_redhillonrails_core(name, options = {}, &block)
10
+ if options.include?(:comment)
11
+ options = options.dup
12
+ comment = options.delete(:comment)
13
+ end
14
+
15
+ create_table_without_redhillonrails_core(name, options) do |table_defintion|
16
+ table_defintion.name = name
17
+ yield table_defintion
18
+ end
19
+
20
+ set_table_comment(name, comment) if comment
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,9 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module Sqlite3Adapter
3
+ def add_foreign_key(table_name, column_names, references_table_name, references_column_names, options = {})
4
+ end
5
+
6
+ def remove_foreign_key(table_name, foreign_key_name)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,27 @@
1
+ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
2
+ module TableDefinition
3
+ def self.included(base)
4
+ base.class_eval do
5
+ attr_accessor :name
6
+ alias_method_chain :initialize, :redhillonrails_core
7
+ alias_method_chain :to_sql, :redhillonrails_core
8
+ end
9
+ end
10
+
11
+ def initialize_with_redhillonrails_core(*args)
12
+ initialize_without_redhillonrails_core(*args)
13
+ @foreign_keys = []
14
+ end
15
+
16
+ def foreign_key(column_names, references_table_name, references_column_names, options = {})
17
+ @foreign_keys << ForeignKeyDefinition.new(options[:name], nil, column_names, ActiveRecord::Migrator.proper_table_name(references_table_name), references_column_names, options[:on_update], options[:on_delete], options[:deferrable])
18
+ self
19
+ end
20
+
21
+ def to_sql_with_redhillonrails_core
22
+ sql = to_sql_without_redhillonrails_core
23
+ sql << ', ' << @foreign_keys * ', ' unless @foreign_keys.empty? || ActiveRecord::Schema.defining?
24
+ sql
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,27 @@
1
+ module RedHillConsulting::Core::ActiveRecord
2
+ module Schema
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def self.extended(base)
9
+ class << base
10
+ attr_accessor :defining
11
+ alias :defining? :defining
12
+
13
+ alias_method_chain :define, :redhillonrails_core
14
+ end
15
+ end
16
+
17
+ def define_with_redhillonrails_core(info={}, &block)
18
+ begin
19
+ self.defining = true
20
+ define_without_redhillonrails_core(info, &block)
21
+ ensure
22
+ self.defining = false
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ module RedHillConsulting::Core::ActiveRecord
2
+ module SchemaDumper
3
+ def self.included(base)
4
+ base.class_eval do
5
+ private
6
+ alias_method_chain :tables, :redhillonrails_core
7
+ alias_method_chain :indexes, :redhillonrails_core
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def tables_with_redhillonrails_core(stream)
14
+ @foreign_keys = StringIO.new
15
+ begin
16
+ tables_without_redhillonrails_core(stream)
17
+ @foreign_keys.rewind
18
+ stream.print @foreign_keys.read
19
+ ensure
20
+ @foreign_keys = nil
21
+ end
22
+ end
23
+
24
+ def indexes_with_redhillonrails_core(table, stream)
25
+ indexes = @connection.indexes(table)
26
+ indexes.each do |index|
27
+ stream.print " add_index #{index.table.inspect}, #{index.columns.inspect}, :name => #{index.name.inspect}"
28
+ stream.print ", :unique => true" if index.unique
29
+ stream.print ", :case_sensitive => false" unless index.case_sensitive?
30
+ stream.puts
31
+ end
32
+ stream.puts unless indexes.empty?
33
+
34
+ foreign_keys(table, @foreign_keys)
35
+ end
36
+
37
+ def foreign_keys(table, stream)
38
+ foreign_keys = @connection.foreign_keys(table)
39
+ foreign_keys.each do |foreign_key|
40
+ stream.print " "
41
+ stream.print foreign_key.to_dump
42
+ stream.puts
43
+ end
44
+ stream.puts unless foreign_keys.empty?
45
+ end
46
+ end
47
+ end
metadata ADDED
@@ -0,0 +1,290 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: advertnet
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-10-18 00:00:00 +02:00
8
+ summary: A tool for managing multiple networks of advertising boards
9
+ require_paths:
10
+ - lib
11
+ email: ffarid@pragmatic-source.com
12
+ homepage:
13
+ rubyforge_project:
14
+ description: AdvertNet is a Rails application that manages a network of advertising boards. The boards are attached to urban furnitures and can belong to different networks. You must first run the 'advertnet-install' binary to deploy the Rails application, and then configure its database before using it.
15
+ autorequire:
16
+ default_executable: advertnet-install
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Farzad FARID
31
+ files:
32
+ - LICENSE
33
+ - bin
34
+ - log
35
+ - components
36
+ - lib
37
+ - doc
38
+ - test
39
+ - script
40
+ - Rakefile
41
+ - vendor
42
+ - public
43
+ - config
44
+ - README
45
+ - app
46
+ - tmp
47
+ - db
48
+ - bin/advertnet-install
49
+ - lib/advertnet.rb
50
+ - lib/second_life_validators.rb
51
+ - lib/tasks
52
+ - lib/tasks/documentation.rake
53
+ - lib/tasks/extract_fixtures.rake
54
+ - lib/tasks/load_exported_fixtures.rake
55
+ - doc/README_FOR_APP
56
+ - test/fixtures
57
+ - test/integration
58
+ - test/test_helper.rb
59
+ - test/mocks
60
+ - test/unit
61
+ - test/functional
62
+ - test/fixtures/furnitures.yml
63
+ - test/fixtures/containers.yml
64
+ - test/fixtures/objects_off_world_panels.yml
65
+ - test/fixtures/panels.yml
66
+ - test/fixtures/objects_off_world.yml
67
+ - test/fixtures/mailer
68
+ - test/fixtures/objects_in_world.yml
69
+ - test/fixtures/objects_in_world_panels.yml
70
+ - test/fixtures/panel_revisions.yml
71
+ - test/fixtures/networks.yml
72
+ - test/fixtures/mailer/avtouch
73
+ - test/mocks/test
74
+ - test/mocks/development
75
+ - test/unit/network_test.rb
76
+ - test/unit/panel_test.rb
77
+ - test/unit/object_off_world_test.rb
78
+ - test/unit/object_in_world_test.rb
79
+ - test/unit/container_test.rb
80
+ - test/unit/furniture_test.rb
81
+ - test/unit/panel_revision_test.rb
82
+ - test/unit/mailer_test.rb
83
+ - test/functional/container_controller_test.rb
84
+ - test/functional/panels_controller_test.rb
85
+ - test/functional/furnitures_controller_test.rb
86
+ - test/functional/objects_in_world_controller_test.rb
87
+ - test/functional/content_controller_test.rb
88
+ - test/functional/networks_controller_test.rb
89
+ - script/plugin
90
+ - script/about
91
+ - script/server
92
+ - script/generate
93
+ - script/process
94
+ - script/runner
95
+ - script/console
96
+ - script/destroy
97
+ - script/breakpointer
98
+ - script/performance
99
+ - script/process/inspector
100
+ - script/process/spawner
101
+ - script/process/reaper
102
+ - script/performance/benchmarker
103
+ - script/performance/profiler
104
+ - vendor/plugins
105
+ - vendor/plugins/redhillonrails_core
106
+ - vendor/plugins/annotate_models
107
+ - vendor/plugins/foreign_key_migrations
108
+ - vendor/plugins/redhillonrails_core/MIT-LICENSE
109
+ - vendor/plugins/redhillonrails_core/CHANGELOG
110
+ - vendor/plugins/redhillonrails_core/lib
111
+ - vendor/plugins/redhillonrails_core/README
112
+ - vendor/plugins/redhillonrails_core/init.rb
113
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting
114
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core
115
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record
116
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters
117
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb
118
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb
119
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb
120
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb
121
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb
122
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb
123
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb
124
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb
125
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb
126
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb
127
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb
128
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb
129
+ - vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb
130
+ - vendor/plugins/annotate_models/lib
131
+ - vendor/plugins/annotate_models/ChangeLog
132
+ - vendor/plugins/annotate_models/tasks
133
+ - vendor/plugins/annotate_models/README
134
+ - vendor/plugins/annotate_models/lib/annotate_models.rb
135
+ - vendor/plugins/annotate_models/tasks/annotate_models_tasks.rake
136
+ - vendor/plugins/foreign_key_migrations/MIT-LICENSE
137
+ - vendor/plugins/foreign_key_migrations/CHANGELOG
138
+ - vendor/plugins/foreign_key_migrations/install.rb
139
+ - vendor/plugins/foreign_key_migrations/lib
140
+ - vendor/plugins/foreign_key_migrations/README
141
+ - vendor/plugins/foreign_key_migrations/init.rb
142
+ - vendor/plugins/foreign_key_migrations/about.yml
143
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting
144
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations
145
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record
146
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters
147
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/base.rb
148
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb
149
+ - vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/abstract_adapter.rb
150
+ - public/robots.txt
151
+ - public/javascripts
152
+ - public/dispatch.cgi
153
+ - public/stylesheets
154
+ - public/500.html
155
+ - public/images
156
+ - public/404.html
157
+ - public/favicon.ico
158
+ - public/dispatch.rb
159
+ - public/dispatch.fcgi
160
+ - public/javascripts/dragdrop.js
161
+ - public/javascripts/controls.js
162
+ - public/javascripts/application.js
163
+ - public/javascripts/prototype.js
164
+ - public/javascripts/effects.js
165
+ - public/stylesheets/application.css
166
+ - public/stylesheets/scaffold.css
167
+ - public/images/rails.png
168
+ - config/boot.rb
169
+ - config/routes.rb
170
+ - config/environments
171
+ - config/database.yml.default
172
+ - config/environment.rb
173
+ - config/environments/development.rb
174
+ - config/environments/production.rb
175
+ - config/environments/test.rb
176
+ - app/helpers
177
+ - app/models
178
+ - app/controllers
179
+ - app/views
180
+ - app/helpers/network_helper.rb
181
+ - app/helpers/objects_in_world_helper.rb
182
+ - app/helpers/content_helper.rb
183
+ - app/helpers/application_helper.rb
184
+ - app/helpers/networks_helper.rb
185
+ - app/helpers/container_helper.rb
186
+ - app/helpers/furnitures_helper.rb
187
+ - app/helpers/panels_helper.rb
188
+ - app/models/network.rb
189
+ - app/models/mailer.rb
190
+ - app/models/panel.rb
191
+ - app/models/container.rb
192
+ - app/models/panel_revision.rb
193
+ - app/models/object_in_world.rb
194
+ - app/models/object_off_world.rb
195
+ - app/models/furniture.rb
196
+ - app/controllers/furnitures_controller.rb
197
+ - app/controllers/application.rb
198
+ - app/controllers/panels_controller.rb
199
+ - app/controllers/objects_in_world_controller.rb
200
+ - app/controllers/content_controller.rb
201
+ - app/controllers/networks_controller.rb
202
+ - app/controllers/container_controller.rb
203
+ - app/views/content
204
+ - app/views/furnitures
205
+ - app/views/mailer
206
+ - app/views/objects_in_world
207
+ - app/views/container
208
+ - app/views/networks
209
+ - app/views/layouts
210
+ - app/views/panels
211
+ - app/views/content/list.rhtml
212
+ - app/views/content/new.rhtml
213
+ - app/views/content/edit.rhtml
214
+ - app/views/content/_form.rhtml
215
+ - app/views/furnitures/list.rhtml
216
+ - app/views/furnitures/show.rhtml
217
+ - app/views/mailer/avtouch.rhtml
218
+ - app/views/objects_in_world/list.rhtml
219
+ - app/views/objects_in_world/show.rhtml
220
+ - app/views/container/list.rhtml
221
+ - app/views/container/show.rhtml
222
+ - app/views/networks/list.rhtml
223
+ - app/views/networks/_parameters_form.rhtml
224
+ - app/views/networks/new.rhtml
225
+ - app/views/networks/edit.rhtml
226
+ - app/views/networks/_form.rhtml
227
+ - app/views/networks/show_parameters_form.rjs
228
+ - app/views/networks/show.rhtml
229
+ - app/views/layouts/default.rhtml
230
+ - app/views/panels/list.rhtml
231
+ - app/views/panels/show.rhtml
232
+ - tmp/sockets
233
+ - tmp/pids
234
+ - tmp/cache
235
+ - tmp/sessions
236
+ - db/exported_fixtures
237
+ - db/migrate
238
+ - db/schema.rb
239
+ - db/migrate/006_create_panels.rb
240
+ - db/migrate/009_add_sessions.rb
241
+ - db/migrate/012_add_permanent_furniture_id.rb
242
+ - db/migrate/007_join_objects_in_world_panels.rb
243
+ - db/migrate/011_move_texture_to_object_in_world.rb
244
+ - db/migrate/003_create_containers.rb
245
+ - db/migrate/002_create_furnitures.rb
246
+ - db/migrate/013_create_panel_revisions.rb
247
+ - db/migrate/008_join_objects_off_world_panels.rb
248
+ - db/migrate/005_create_objects_off_world.rb
249
+ - db/migrate/004_create_objects_in_world.rb
250
+ - db/migrate/010_add_or_rename_fields.rb
251
+ - db/migrate/001_create_networks.rb
252
+ test_files: []
253
+
254
+ rdoc_options:
255
+ - --title
256
+ - Advertnet -- An advertising boards management tool
257
+ - --main
258
+ - README
259
+ - --charset
260
+ - utf-8
261
+ - --exclude
262
+ - lib
263
+ extra_rdoc_files:
264
+ - README
265
+ executables:
266
+ - advertnet-install
267
+ extensions: []
268
+
269
+ requirements:
270
+ - MySQL 5.0
271
+ - A Second Life environment
272
+ dependencies:
273
+ - !ruby/object:Gem::Dependency
274
+ name: rails
275
+ version_requirement:
276
+ version_requirements: !ruby/object:Gem::Version::Requirement
277
+ requirements:
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: 1.2.3
281
+ version:
282
+ - !ruby/object:Gem::Dependency
283
+ name: rake
284
+ version_requirement:
285
+ version_requirements: !ruby/object:Gem::Version::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: 0.7.3
290
+ version: