dm-drupal 0.0.1 → 0.1.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.
data/README ADDED
@@ -0,0 +1,19 @@
1
+ == DM Drupal ==
2
+
3
+ Its a Datamapper wrapper for a drupal+cck database.
4
+
5
+ lots of eval right now. sorry.
6
+
7
+ == Using Hooks ==
8
+
9
+ this is for associating with dynamic cck fields that don't exist when the app loads.
10
+
11
+ class BlogPost
12
+ include DataMapper::Resource
13
+ post_drupal do
14
+ has 1, :drupal_blog_post,
15
+ :repository => repository(:drupal),
16
+ :class_name => 'Drupal::BlogPost',
17
+ :child_key => ['legacy_blog_post_id']
18
+ end
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm-drupal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - quinn shanahan
@@ -22,12 +22,7 @@ extensions: []
22
22
  extra_rdoc_files: []
23
23
 
24
24
  files:
25
- - lib/drupal/cck/builder.rb
26
- - lib/drupal/cck/fields.rb
27
- - lib/drupal/cck.rb
28
- - lib/drupal/node.rb
29
- - lib/drupal/user.rb
30
- - lib/drupal.rb
25
+ - README
31
26
  has_rdoc: true
32
27
  homepage:
33
28
  licenses: []
@@ -1,77 +0,0 @@
1
- module Drupal
2
- module CCK
3
- class Builder
4
- def self.code
5
- types.
6
- map{|t| table = Table.new t}.
7
- select{|t| t.valid?}.
8
- join("\n")
9
- end
10
-
11
- def self.types
12
- @types ||= Drupal::Repository.adapter.query('select type from node').uniq
13
- end
14
-
15
- def self.fields
16
- @fields ||= Drupal::Repository.adapter.query('show tables').select{|t| t.match(/^content_field/)}
17
- end
18
- end
19
-
20
- class Table
21
- attr_accessor :type
22
-
23
- def initialize type
24
- self.type = type
25
- end
26
-
27
- def table
28
- "content_type_#{type}"
29
- end
30
-
31
- def fields
32
- Drupal::CCK::ContentNodeFieldInstance.all :type_name => type
33
- end
34
-
35
- def columns
36
- @columns ||= fields
37
- end
38
-
39
- def ignore_columns
40
- %w{nid vid}
41
- end
42
-
43
- def to_s
44
- "
45
- class #{type.camel_case}
46
- #{Drupal.common}
47
- storage_names[:drupal] = '#{table}'
48
- property :nid, Serial
49
- property :vid, Integer
50
- belongs_to :node,
51
- :child_key => [:nid]
52
- #{columns.map{|c| c.to_s}.join "\n"}
53
- def self.type; :#{type}; end
54
- extend CCK::FieldMethods
55
- end
56
- "
57
- end
58
-
59
- def valid?
60
- columns
61
- true
62
- rescue MysqlError
63
- false
64
- end
65
- end
66
- end
67
-
68
- def self.generate
69
- Drupal.class_eval do
70
- eval( CCK::Builder.fields.map do |field|
71
- CCK::ThroughField.new field
72
- end.join("\n") )
73
-
74
- eval CCK::Builder.code
75
- end
76
- end
77
- end
@@ -1,51 +0,0 @@
1
- module Drupal
2
- module CCK
3
- module FieldMethods
4
- def fields
5
- Drupal::CCK::ContentNodeFieldInstance.all :type_name => type
6
- end
7
- end
8
-
9
- class ThroughField
10
- attr_accessor :field_name, :table
11
-
12
- def initialize field
13
- self.table = field
14
- self.field_name = field.match(/^content_field_(.*)/)[1]
15
- end
16
-
17
- def field
18
- @field ||= ContentNodeField.first :field_name => "field_#{field_name}"
19
- end
20
-
21
- def valid?
22
- !field.nil?
23
- end
24
-
25
- def field_type
26
- case field.type
27
- when 'userreference'
28
- "belongs_to :user,
29
- :class_name => 'Drupal::User',
30
- :child_key => [:#{field.field_name}_uid]"
31
- end
32
- end
33
-
34
- def to_s
35
- return "" unless valid?
36
- "
37
- class #{field_name.camel_case}
38
- #{Drupal.common}
39
- storage_names[:drupal] = '#{table}'
40
-
41
- belongs_to :node,
42
- :class_name => 'Drupal::Node',
43
- :child_key => [:nid]
44
- Drupal::User
45
- #{field_type}
46
- end
47
- "
48
- end
49
- end
50
- end
51
- end
data/lib/drupal/cck.rb DELETED
@@ -1,78 +0,0 @@
1
- module Drupal
2
- module CCK
3
- module NodeMethods
4
- def cck_class
5
- @cck_class ||= eval("Drupal::#{type.camel_case}")
6
- end
7
-
8
- def cck
9
- @cck ||= cck_class.first(:nid => nid)
10
- end
11
-
12
- def find_or_create_cck
13
- return cck if cck
14
- @cck = cck_class.create! :vid => vid, :nid => nid
15
- end
16
- end
17
-
18
- class ContentNodeFieldInstance
19
- eval Drupal.common
20
- storage_names[:drupal] = 'content_node_field_instance'
21
-
22
- property :field_name, String,
23
- :length => 32, :key => true
24
- property :type_name, String,
25
- :length => 32, :key => true
26
-
27
- def field
28
- @field ||= ContentNodeField.first :field_name => field_name
29
- end
30
-
31
- def field_type
32
- @field_type ||= field.type
33
- end
34
-
35
- def to_s
36
- f = field_name.match(/^field_(.*)/)[1]
37
- case field_type
38
- when 'userreference'
39
- if through?
40
- r = "has 1, :#{f},
41
- :class_name => Drupal::#{f.camel_case},
42
- :child_key => [:#{field_name}_uid]"
43
- else
44
- r = "belongs_to :#{field_name},
45
- :class_name => 'Drupal::User'"
46
- end
47
- # when 'nodereference'
48
- # r = "belongs_to :#{field_name},
49
- # :class_name => 'Drupal::Node',
50
- # :child_key => [:#{field_name}_nid]"
51
- # else
52
- # r = "property :#{field_name}, #{type}"
53
- # r += ", :field => '#{field_name}_value'"
54
- end
55
- r
56
- end
57
-
58
- def through?
59
- false
60
- end
61
- end
62
-
63
- class ContentNodeField
64
- eval Drupal.common
65
- storage_names[:drupal] = 'content_node_field'
66
-
67
- property :type, String,
68
- :length => 127
69
- property :field_name, String,
70
- :length => 32
71
- end
72
- end
73
-
74
- Node.send :include, CCK::NodeMethods
75
- end
76
-
77
- require 'drupal/cck/fields.rb'
78
- require 'drupal/cck/builder.rb'
data/lib/drupal/node.rb DELETED
@@ -1,49 +0,0 @@
1
- module Drupal
2
- class Node
3
- eval Drupal.common
4
- storage_names[:drupal] = 'node'
5
-
6
- property :nid, Serial
7
- property :vid, Integer
8
- property :uid, Integer
9
- property :type, String
10
- property :title, String
11
-
12
- after :save, :write_node_revision
13
-
14
- def write_node_revision
15
- find_or_init_node_revision.attributes = {
16
- :nid => nid,
17
- :vid => vid,
18
- :uid => uid,
19
- :title => title,
20
- :body => '',
21
- :teaser => '',
22
- :log => ''
23
- }
24
- node_revision.save!
25
- end
26
-
27
- def find_or_init_node_revision
28
- return node_revision if node_revision
29
- @node_revision = Drupal::NodeRevision.new
30
- end
31
-
32
- def node_revision
33
- @node_revision ||= Drupal::NodeRevision.get nid
34
- end
35
- end
36
-
37
- class NodeRevision
38
- eval Drupal.common
39
- storage_names[:drupal] = 'node_revisions'
40
-
41
- property :nid, Serial
42
- property :vid, Integer
43
- property :uid, Integer
44
- property :title, String
45
- property :body, Text
46
- property :teaser, Text
47
- property :log, Text
48
- end
49
- end
data/lib/drupal/user.rb DELETED
@@ -1,18 +0,0 @@
1
- module Drupal
2
- class User
3
- eval Drupal.common
4
- storage_names[:drupal] = 'users'
5
-
6
- property :uid, Serial
7
- property :name, String,
8
- :length => 60,
9
- :nullable => false
10
- has n, :nodes,
11
- :child_key => [:uid],
12
- :repository => Drupal::Repository
13
-
14
- def profile
15
- Drupal::Node.first :type => 'profile', :uid => uid
16
- end
17
- end
18
- end
data/lib/drupal.rb DELETED
@@ -1,19 +0,0 @@
1
- module Drupal
2
- RepositoryName = :drupal
3
- Repository = repository(Drupal::RepositoryName)
4
-
5
- def self.common
6
- "
7
- include DataMapper::Resource
8
-
9
- def self.default_repository_name
10
- Drupal::RepositoryName
11
- end
12
- "
13
- end
14
- end
15
-
16
- $:<< File.expand_path(Pathname.new(__FILE__).dirname)
17
- require 'drupal/user'
18
- require 'drupal/node'
19
- require 'drupal/cck'