lportal 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.
- data/README +16 -0
- data/install.rb +1 -0
- data/lib/account.rb +16 -0
- data/lib/address.rb +25 -0
- data/lib/announcement.rb +5 -0
- data/lib/blog_post.rb +32 -0
- data/lib/bookmark.rb +10 -0
- data/lib/company.rb +43 -0
- data/lib/contact.rb +52 -0
- data/lib/counter.rb +4 -0
- data/lib/dl_file.rb +24 -0
- data/lib/dl_folder.rb +25 -0
- data/lib/emailaddress.rb +18 -0
- data/lib/group.rb +100 -0
- data/lib/ig/folder.rb +12 -0
- data/lib/ig/image.rb +35 -0
- data/lib/image.rb +11 -0
- data/lib/journal/article.rb +43 -0
- data/lib/journal/article_image.rb +4 -0
- data/lib/journal/article_resource.rb +23 -0
- data/lib/mb/category.rb +47 -0
- data/lib/mb/discussion.rb +16 -0
- data/lib/mb/message.rb +45 -0
- data/lib/mb/thread.rb +20 -0
- data/lib/organization.rb +26 -0
- data/lib/permission.rb +32 -0
- data/lib/phone.rb +33 -0
- data/lib/resource.rb +58 -0
- data/lib/resource_code.rb +13 -0
- data/lib/role.rb +19 -0
- data/lib/tag/asset.rb +34 -0
- data/lib/tag/entry.rb +46 -0
- data/lib/tag/property.rb +28 -0
- data/lib/user.rb +248 -0
- data/lib/usergroup.rb +23 -0
- data/lib/web/layout.rb +67 -0
- data/lib/web/layout_set.rb +37 -0
- data/lib/web/portlet.rb +43 -0
- data/lib/web/portlet_name.rb +6 -0
- data/lib/web/portlet_preferences.rb +42 -0
- data/lib/wiki/node.rb +21 -0
- data/lib/wiki/page.rb +29 -0
- data/lib/wiki/pageresource.rb +20 -0
- data/lportal.rb +9 -0
- data/test/unit/account_test.rb +20 -0
- data/test/unit/address_test.rb +8 -0
- data/test/unit/announcement_test.rb +8 -0
- data/test/unit/asset_test.rb +29 -0
- data/test/unit/bookmark_test.rb +8 -0
- data/test/unit/company_test.rb +60 -0
- data/test/unit/contact_test.rb +23 -0
- data/test/unit/dl_file_test.rb +8 -0
- data/test/unit/dl_folder_test.rb +8 -0
- data/test/unit/group_test.rb +76 -0
- data/test/unit/ig/folder_test.rb +8 -0
- data/test/unit/ig/image_test.rb +20 -0
- data/test/unit/image_test.rb +34 -0
- data/test/unit/journal/article_image_test.rb +8 -0
- data/test/unit/journal/article_resource_test.rb +20 -0
- data/test/unit/journal/article_test.rb +39 -0
- data/test/unit/mb/category_test.rb +35 -0
- data/test/unit/mb/discussion_test.rb +14 -0
- data/test/unit/mb/message_test.rb +46 -0
- data/test/unit/mb/thread_test.rb +21 -0
- data/test/unit/organization_test.rb +57 -0
- data/test/unit/permission_test.rb +33 -0
- data/test/unit/resource_code_test.rb +29 -0
- data/test/unit/resource_test.rb +49 -0
- data/test/unit/role_test.rb +22 -0
- data/test/unit/tag/entry_test.rb +35 -0
- data/test/unit/tag/property_test.rb +27 -0
- data/test/unit/user_group_test.rb +8 -0
- data/test/unit/user_test.rb +103 -0
- data/test/unit/usergroup_test.rb +33 -0
- data/test/unit/web/layout_set_test.rb +88 -0
- data/test/unit/web/layout_test.rb +91 -0
- data/test/unit/web/portlet_preferences_test.rb +47 -0
- data/test/unit/web/portlet_test.rb +33 -0
- data/test/unit/wiki/node_test.rb +8 -0
- data/test/unit/wiki/page_test.rb +8 -0
- metadata +146 -0
data/lib/permission.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
class Permission < ActiveRecord::Base
|
2
|
+
set_table_name :permission_
|
3
|
+
set_primary_key :permissionid
|
4
|
+
|
5
|
+
belongs_to :company,
|
6
|
+
:foreign_key => 'companyid'
|
7
|
+
|
8
|
+
belongs_to :resource,
|
9
|
+
:foreign_key => 'resourceid'
|
10
|
+
|
11
|
+
# association to users
|
12
|
+
has_and_belongs_to_many :users,
|
13
|
+
:join_table => 'users_permissions',
|
14
|
+
:foreign_key => 'permissionid',
|
15
|
+
:association_foreign_key => 'userid'
|
16
|
+
|
17
|
+
has_and_belongs_to_many :roles,
|
18
|
+
:join_table => 'roles_permissions',
|
19
|
+
:foreign_key => 'permissionid',
|
20
|
+
:association_foreign_key => 'roleid'
|
21
|
+
|
22
|
+
has_and_belongs_to_many :groups,
|
23
|
+
:join_table => 'groups_permissions',
|
24
|
+
:foreign_key => 'permissionid',
|
25
|
+
:association_foreign_key => 'groupid'
|
26
|
+
|
27
|
+
def holders
|
28
|
+
self.users + self.roles + self.groups
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
end
|
data/lib/phone.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
class Phone < ActiveRecord::Base
|
2
|
+
set_table_name :phone
|
3
|
+
set_primary_key :phoneid
|
4
|
+
|
5
|
+
belongs_to :company,
|
6
|
+
:foreign_key => 'companyid'
|
7
|
+
|
8
|
+
belongs_to :user,
|
9
|
+
:foreign_key => 'userid'
|
10
|
+
|
11
|
+
def initialize(params)
|
12
|
+
super(params)
|
13
|
+
self.classnameid = 10005
|
14
|
+
self.createdate = Time.now
|
15
|
+
unless self.companyid
|
16
|
+
u = User.find self.userid
|
17
|
+
self.companyid = u.companyid
|
18
|
+
end
|
19
|
+
unless self.username
|
20
|
+
u = User.find self.userid
|
21
|
+
self.username = u.fullname
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def number
|
26
|
+
self.number_
|
27
|
+
end
|
28
|
+
|
29
|
+
def number=(val)
|
30
|
+
self.number_ = val
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
data/lib/resource.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
class Resource < ActiveRecord::Base
|
2
|
+
set_table_name :resource_
|
3
|
+
set_primary_key :resourceid
|
4
|
+
|
5
|
+
public
|
6
|
+
|
7
|
+
belongs_to :resourcecode,
|
8
|
+
:class_name => 'ResourceCode',
|
9
|
+
:foreign_key => 'codeid'
|
10
|
+
alias :code :resourcecode
|
11
|
+
|
12
|
+
has_many :permissions,
|
13
|
+
:foreign_key => 'resourceid'
|
14
|
+
|
15
|
+
belongs_to :articleresource,
|
16
|
+
:class_name => 'Journal::ArticleResource',
|
17
|
+
:foreign_key => 'primkey'
|
18
|
+
|
19
|
+
belongs_to :layout,
|
20
|
+
:class_name => 'Web::Layout',
|
21
|
+
:foreign_key => 'primkey'
|
22
|
+
|
23
|
+
def plid
|
24
|
+
self.primkey[/([0-9]*)_LAYOUT_(.*)/,1]
|
25
|
+
end
|
26
|
+
|
27
|
+
def portletid
|
28
|
+
self.primkey[/([0-9]*)_LAYOUT_(.*)/,2]
|
29
|
+
end
|
30
|
+
|
31
|
+
# finds content for primkey
|
32
|
+
def content
|
33
|
+
key = self.primkey
|
34
|
+
|
35
|
+
case self.code.name
|
36
|
+
when 'com.liferay.portlet.journal.model.JournalArticle'
|
37
|
+
Journal::ArticleResource.find key
|
38
|
+
when 'com.liferay.portal.model.Layout'
|
39
|
+
Web::Layout.find key
|
40
|
+
|
41
|
+
# when "56" #journal_content
|
42
|
+
# when "58" #login
|
43
|
+
# when "101" #tagged_content
|
44
|
+
# when "103" #tags_compiler
|
45
|
+
|
46
|
+
else
|
47
|
+
if key[/LAYOUT/]
|
48
|
+
Web::PortletPreferences.find(:first, :conditions => "plid=#{self.plid} AND portletid='#{self.portletid}'" )
|
49
|
+
else
|
50
|
+
# unless groups_ids.include? key
|
51
|
+
STDERR.puts "fixme: #{x.code.name} (#{key})"
|
52
|
+
# end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
data/lib/role.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
class Role < ActiveRecord::Base
|
2
|
+
set_table_name :role_
|
3
|
+
set_primary_key :roleid
|
4
|
+
|
5
|
+
belongs_to :company,
|
6
|
+
:foreign_key => "companyid"
|
7
|
+
|
8
|
+
has_and_belongs_to_many :permissions,
|
9
|
+
:join_table => "roles_permissions",
|
10
|
+
:foreign_key => "roleid",
|
11
|
+
:association_foreign_key => "permissionid"
|
12
|
+
|
13
|
+
# association to users
|
14
|
+
has_and_belongs_to_many :users,
|
15
|
+
:join_table => "users_roles",
|
16
|
+
:foreign_key => "roleid",
|
17
|
+
:association_foreign_key => "userid"
|
18
|
+
|
19
|
+
end
|
data/lib/tag/asset.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
module Tag
|
2
|
+
# Represents the table tagsasset
|
3
|
+
class Asset < ActiveRecord::Base
|
4
|
+
set_table_name :tagsasset
|
5
|
+
set_primary_key :assetid
|
6
|
+
|
7
|
+
# com.liferay.portlet.tags.model.TagsAsset
|
8
|
+
def liferay_class
|
9
|
+
'com.liferay.portlet.tags.model.TagsAsset'
|
10
|
+
end
|
11
|
+
|
12
|
+
belongs_to :company,
|
13
|
+
:foreign_key => 'companyid'
|
14
|
+
|
15
|
+
# association to user
|
16
|
+
belongs_to :user,
|
17
|
+
:foreign_key => 'userid'
|
18
|
+
alias :owner :user
|
19
|
+
|
20
|
+
# association to groups (communities)
|
21
|
+
belongs_to :group,
|
22
|
+
:foreign_key => 'groupid'
|
23
|
+
alias :community :group
|
24
|
+
|
25
|
+
# association to tags
|
26
|
+
has_and_belongs_to_many :tags,
|
27
|
+
:class_name => 'Tag::Entry',
|
28
|
+
:join_table => 'tagsassets_tagsentries',
|
29
|
+
:foreign_key => 'assetid',
|
30
|
+
:association_foreign_key => 'entryid'
|
31
|
+
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
data/lib/tag/entry.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Tag
|
2
|
+
class Entry < ActiveRecord::Base
|
3
|
+
set_table_name :tagsentry
|
4
|
+
set_primary_key :entryid
|
5
|
+
|
6
|
+
# com.liferay.portlet.tags.model.TagsEntry
|
7
|
+
def liferay_class
|
8
|
+
'com.liferay.portlet.tags.model.TagsEntry'
|
9
|
+
end
|
10
|
+
|
11
|
+
# association to user
|
12
|
+
belongs_to :user,
|
13
|
+
:foreign_key => 'userid'
|
14
|
+
alias :owner :user
|
15
|
+
|
16
|
+
belongs_to :company,
|
17
|
+
:foreign_key => 'companyid'
|
18
|
+
|
19
|
+
has_many :properties,
|
20
|
+
:class_name => 'Tag::Property',
|
21
|
+
:foreign_key => 'entryid'
|
22
|
+
|
23
|
+
# association to assets
|
24
|
+
has_and_belongs_to_many :assets,
|
25
|
+
:join_table => 'tagsassets_tagsentries',
|
26
|
+
:foreign_key => 'entryid',
|
27
|
+
:association_foreign_key => 'assetid'
|
28
|
+
|
29
|
+
def categories
|
30
|
+
self.properties.map{|p| p.category}.compact.uniq
|
31
|
+
end
|
32
|
+
|
33
|
+
# def categories<<(category)
|
34
|
+
# return false if self.categories.include? category
|
35
|
+
# Tag::Property.create(
|
36
|
+
# :entryid => self.id,
|
37
|
+
# :key_ => 'category',
|
38
|
+
# :value => category,
|
39
|
+
# :companyid => self.company.id,
|
40
|
+
# :createdate => Time.now,
|
41
|
+
# :modifieddate => Time.now
|
42
|
+
# )
|
43
|
+
# end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
data/lib/tag/property.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Tag
|
2
|
+
class Property < ActiveRecord::Base
|
3
|
+
set_table_name :tagsproperty
|
4
|
+
set_primary_key :propertyid
|
5
|
+
|
6
|
+
# com.liferay.portlet.tags.model.TagsProperty
|
7
|
+
def liferay_class
|
8
|
+
'com.liferay.portlet.tags.model.TagsProperty'
|
9
|
+
end
|
10
|
+
|
11
|
+
# association to user
|
12
|
+
belongs_to :user,
|
13
|
+
:foreign_key => 'userid'
|
14
|
+
alias :owner :user
|
15
|
+
|
16
|
+
belongs_to :company,
|
17
|
+
:foreign_key => 'companyid'
|
18
|
+
|
19
|
+
belongs_to :tag,
|
20
|
+
:class_name => 'Tag::Entry',
|
21
|
+
:foreign_key => 'entryid'
|
22
|
+
|
23
|
+
def category
|
24
|
+
(self.key_=='category' ? self.value : nil)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/user.rb
ADDED
@@ -0,0 +1,248 @@
|
|
1
|
+
# Liferay users.
|
2
|
+
class User < ActiveRecord::Base
|
3
|
+
set_table_name :user_
|
4
|
+
set_primary_key :userid
|
5
|
+
|
6
|
+
public
|
7
|
+
|
8
|
+
def liferay_class
|
9
|
+
'com.liferay.portal.model.User'
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(params)
|
13
|
+
super(params)
|
14
|
+
unless self.uuid_
|
15
|
+
require 'rubygems'
|
16
|
+
require 'uuidtools'
|
17
|
+
self.uuid_ = UUID.random_create.to_s
|
18
|
+
end
|
19
|
+
self.createdate = Time.now
|
20
|
+
self.modifieddate = Time.now
|
21
|
+
self.defaultuser = false
|
22
|
+
self.gracelogincount = 0
|
23
|
+
self.portraitid ||= 0
|
24
|
+
self.timezoneid ||= 'Europe/Istanbul'
|
25
|
+
self.failedloginattempts = 0
|
26
|
+
self.lockout = false
|
27
|
+
self.agreedtotermsofuse = true
|
28
|
+
self.active_ = true
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
has_one :account,
|
33
|
+
:foreign_key => 'userid'
|
34
|
+
|
35
|
+
has_many :phones,
|
36
|
+
:class_name => 'Phone',
|
37
|
+
:foreign_key => 'userid'
|
38
|
+
|
39
|
+
belongs_to :contact,
|
40
|
+
:foreign_key => 'contactid'
|
41
|
+
|
42
|
+
belongs_to :company,
|
43
|
+
:foreign_key => 'companyid'
|
44
|
+
|
45
|
+
# association to organizations
|
46
|
+
has_and_belongs_to_many :organizations,
|
47
|
+
:join_table => 'users_orgs',
|
48
|
+
:foreign_key => 'userid',
|
49
|
+
:association_foreign_key => 'organizationid'
|
50
|
+
alias :orgs :organizations
|
51
|
+
|
52
|
+
# association to groups
|
53
|
+
has_and_belongs_to_many :groups,
|
54
|
+
:join_table => 'users_groups',
|
55
|
+
:foreign_key => 'userid',
|
56
|
+
:association_foreign_key => 'groupid'
|
57
|
+
alias :communities :groups
|
58
|
+
|
59
|
+
# association to roles
|
60
|
+
has_and_belongs_to_many :roles,
|
61
|
+
:join_table => 'users_roles',
|
62
|
+
:foreign_key => 'userid',
|
63
|
+
:association_foreign_key => 'roleid'
|
64
|
+
|
65
|
+
# association to direct user permissions.
|
66
|
+
has_and_belongs_to_many :user_permissions,
|
67
|
+
:class_name => 'Permission',
|
68
|
+
:join_table => 'users_permissions',
|
69
|
+
:foreign_key => 'userid',
|
70
|
+
:association_foreign_key => 'permissionid'
|
71
|
+
|
72
|
+
def group_permissions
|
73
|
+
self.groups.map{|g| g.permissions }.flatten
|
74
|
+
end
|
75
|
+
|
76
|
+
def role_permissions
|
77
|
+
self.roles.map{|g| g.permissions }.flatten
|
78
|
+
end
|
79
|
+
|
80
|
+
# permissions are summed up from user, group and role permissions
|
81
|
+
def permissions
|
82
|
+
user_permissions + group_permissions + role_permissions
|
83
|
+
end
|
84
|
+
|
85
|
+
def fullname
|
86
|
+
self.contact ?
|
87
|
+
self.contact.fullname : nil
|
88
|
+
end
|
89
|
+
def firstname
|
90
|
+
self.contact.firstname
|
91
|
+
end
|
92
|
+
def firstname=(v)
|
93
|
+
if self.contact
|
94
|
+
c = self.contact
|
95
|
+
c.firstname = v
|
96
|
+
c.save
|
97
|
+
else
|
98
|
+
c = Contact.create(
|
99
|
+
:userid => self.userid,
|
100
|
+
:firstname => v )
|
101
|
+
self.contact = c
|
102
|
+
self.save
|
103
|
+
end
|
104
|
+
end
|
105
|
+
def lastname
|
106
|
+
self.contact.lastname
|
107
|
+
end
|
108
|
+
def lastname=(v)
|
109
|
+
if self.contact
|
110
|
+
c = self.contact
|
111
|
+
c.lastname = v
|
112
|
+
c.save
|
113
|
+
else
|
114
|
+
c = Contact.create(
|
115
|
+
:userid => self.userid,
|
116
|
+
:lastname => v )
|
117
|
+
self.contact = c
|
118
|
+
self.save
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# 1=female, 2=male
|
123
|
+
def sex=(v)
|
124
|
+
male = (v==2 ? true : false)
|
125
|
+
if self.contact
|
126
|
+
c = self.contact
|
127
|
+
c.male=male
|
128
|
+
c.save
|
129
|
+
else
|
130
|
+
c = Contact.create(
|
131
|
+
:userid => self.userid,
|
132
|
+
:male => male )
|
133
|
+
self.contact = c
|
134
|
+
self.save
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
# User's own group
|
139
|
+
has_one :hive,
|
140
|
+
:class_name => 'Group',
|
141
|
+
:foreign_key => 'classpk'
|
142
|
+
|
143
|
+
# association to usergroups
|
144
|
+
# has_and_belongs_to_many :usergroups,
|
145
|
+
# :class_name => 'Usergroup',
|
146
|
+
# :join_table => 'users_usergroups',
|
147
|
+
# :foreign_key => 'userid',
|
148
|
+
# :association_foreign_key => 'usergroupid'
|
149
|
+
|
150
|
+
# association to tags
|
151
|
+
has_many :tags,
|
152
|
+
:class_name => 'Tag::Entry',
|
153
|
+
:foreign_key => 'userid'
|
154
|
+
|
155
|
+
# association to assets
|
156
|
+
has_many :assets,
|
157
|
+
:foreign_key => 'userid'
|
158
|
+
|
159
|
+
# association to wiki pages
|
160
|
+
has_many :wikipages,
|
161
|
+
:class_name => 'Wiki::Page',
|
162
|
+
:foreign_key => 'userid'
|
163
|
+
alias :articles :wikipages
|
164
|
+
|
165
|
+
# association to MessageBoardMessages
|
166
|
+
has_many :messages,
|
167
|
+
:class_name => 'MB::Message',
|
168
|
+
:foreign_key => 'userid'
|
169
|
+
|
170
|
+
|
171
|
+
# def address
|
172
|
+
# self.address || Address.new(:user=>self, :company=>self.company)
|
173
|
+
# end
|
174
|
+
|
175
|
+
def address
|
176
|
+
return @address if @address
|
177
|
+
@address = Address.find_by_userid self.id
|
178
|
+
if @address.nil?
|
179
|
+
@address = Address.new(
|
180
|
+
:user => self,
|
181
|
+
:createdate => Time.now,
|
182
|
+
:company => self.company)
|
183
|
+
end
|
184
|
+
return @address
|
185
|
+
end
|
186
|
+
|
187
|
+
def lang
|
188
|
+
self.languageid
|
189
|
+
end
|
190
|
+
def lang=(value)
|
191
|
+
self.languageid=value
|
192
|
+
end
|
193
|
+
|
194
|
+
def gsm
|
195
|
+
self.phones.any? ? self.phones.first.number : nil
|
196
|
+
end
|
197
|
+
def gsm=(number)
|
198
|
+
if self.phones.any?
|
199
|
+
phone = self.phones.first
|
200
|
+
phone.number=number
|
201
|
+
phone.save
|
202
|
+
else
|
203
|
+
Phone.create(
|
204
|
+
:userid => self.id,
|
205
|
+
:number => number,
|
206
|
+
:primary_ => true
|
207
|
+
)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
def birthday
|
212
|
+
self.contact.birthday
|
213
|
+
end
|
214
|
+
|
215
|
+
def streetaddress
|
216
|
+
self.address.street1
|
217
|
+
end
|
218
|
+
def streetaddress=(val)
|
219
|
+
self.address.street1 = val
|
220
|
+
self.address.save
|
221
|
+
end
|
222
|
+
|
223
|
+
def zipcode
|
224
|
+
self.address.zip
|
225
|
+
end
|
226
|
+
def zipcode=(val)
|
227
|
+
self.address.zip = val
|
228
|
+
self.address.save
|
229
|
+
end
|
230
|
+
|
231
|
+
def city
|
232
|
+
self.address.city
|
233
|
+
end
|
234
|
+
def city=(val)
|
235
|
+
self.address.city = val
|
236
|
+
self.address.save
|
237
|
+
end
|
238
|
+
|
239
|
+
def is_active?
|
240
|
+
self.active_
|
241
|
+
end
|
242
|
+
|
243
|
+
def is_default?
|
244
|
+
self.defaultuser
|
245
|
+
end
|
246
|
+
|
247
|
+
|
248
|
+
end
|
data/lib/usergroup.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
class Usergroup < ActiveRecord::Base
|
2
|
+
set_table_name :usergroup
|
3
|
+
set_primary_key :usergroupid
|
4
|
+
|
5
|
+
# com.liferay.portal.model.UserGroup
|
6
|
+
def liferay_class
|
7
|
+
'com.liferay.portal.model.UserGroup'
|
8
|
+
end
|
9
|
+
|
10
|
+
belongs_to :company,
|
11
|
+
:foreign_key => 'companyid'
|
12
|
+
|
13
|
+
# association to direct groups
|
14
|
+
has_and_belongs_to_many :groups,
|
15
|
+
:join_table => 'groups_usergroups',
|
16
|
+
:foreign_key => 'usergroupid',
|
17
|
+
:association_foreign_key => 'groupid'
|
18
|
+
|
19
|
+
has_one :parent,
|
20
|
+
:class_name => 'Usergroup',
|
21
|
+
:foreign_key => 'parentusergroupid'
|
22
|
+
|
23
|
+
end
|
data/lib/web/layout.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
module Web
|
2
|
+
# Page layouts. These are individual layouts for items in the navigation bar.
|
3
|
+
# Layouts have portlets, these are modeled by parsing (by regexp) the typesettings xml. Layouts belong to a certain LayoutSet.
|
4
|
+
class Layout < ActiveRecord::Base
|
5
|
+
set_table_name :layout
|
6
|
+
set_primary_key :plid
|
7
|
+
|
8
|
+
# com.liferay.portal.model.Layout
|
9
|
+
def liferay_class
|
10
|
+
'com.liferay.portal.model.Layout'
|
11
|
+
end
|
12
|
+
|
13
|
+
public
|
14
|
+
|
15
|
+
belongs_to :group,
|
16
|
+
:foreign_key => 'groupid'
|
17
|
+
|
18
|
+
belongs_to :company,
|
19
|
+
:foreign_key => 'companyid'
|
20
|
+
|
21
|
+
has_many :resources,
|
22
|
+
:foreign_key => 'primkey'
|
23
|
+
|
24
|
+
def portletids
|
25
|
+
begin
|
26
|
+
ts = self.typesettings
|
27
|
+
c1= ts[/column-1=(.*)/,1] || ""
|
28
|
+
c2= ts[/column-2=(.*)/,1] || ""
|
29
|
+
c3= ts[/column-3=(.*)/,1] || ""
|
30
|
+
(c1+c2+c3).split(",").uniq
|
31
|
+
rescue
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# def instanceids
|
36
|
+
# self.portletids.map{|p| p if p[/INSTANCE/]}.compact.uniq
|
37
|
+
# end
|
38
|
+
|
39
|
+
#
|
40
|
+
def portlets
|
41
|
+
portlets = []
|
42
|
+
return portlets unless self.portletids
|
43
|
+
self.portletids.each do |id|
|
44
|
+
portlets << (Web::Portlet.find_by_portletid(id) or Web::PortletPreferences.find_by_portletid(id))
|
45
|
+
end
|
46
|
+
return portlets.compact
|
47
|
+
end
|
48
|
+
|
49
|
+
# Portlet instances on the Layout.
|
50
|
+
def instances
|
51
|
+
Web::PortletPreferences.find(:all, :conditions => "plid=#{self.plid} AND portletid LIKE '%INSTANCE%'")
|
52
|
+
end
|
53
|
+
|
54
|
+
def is_public?
|
55
|
+
!self.privatelayout
|
56
|
+
end
|
57
|
+
|
58
|
+
def is_private?
|
59
|
+
self.privatelayout
|
60
|
+
end
|
61
|
+
|
62
|
+
def is_hidden?
|
63
|
+
self.hidden_
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Web
|
2
|
+
# LayoutSets contain individual Layout s. They are either private or public.
|
3
|
+
class LayoutSet < ActiveRecord::Base
|
4
|
+
set_table_name :layoutset
|
5
|
+
set_primary_key :layoutsetid
|
6
|
+
|
7
|
+
# com.liferay.portal.model.LayoutSet
|
8
|
+
def liferay_class
|
9
|
+
'com.liferay.portal.model.LayoutSet'
|
10
|
+
end
|
11
|
+
|
12
|
+
public
|
13
|
+
|
14
|
+
belongs_to :group,
|
15
|
+
:foreign_key => 'groupid'
|
16
|
+
|
17
|
+
belongs_to :company,
|
18
|
+
:foreign_key => 'companyid'
|
19
|
+
|
20
|
+
def is_public?
|
21
|
+
!self.privatelayout
|
22
|
+
end
|
23
|
+
|
24
|
+
def is_private?
|
25
|
+
self.privatelayout
|
26
|
+
end
|
27
|
+
|
28
|
+
def has_logo?
|
29
|
+
self.logo
|
30
|
+
end
|
31
|
+
|
32
|
+
#?
|
33
|
+
# has_one :resource,
|
34
|
+
# :foreign_key => 'primkey'
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
data/lib/web/portlet.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
module Web
|
2
|
+
# Not all portlets are necessarily saved in the database.
|
3
|
+
class Portlet < ActiveRecord::Base
|
4
|
+
set_table_name :portlet
|
5
|
+
set_primary_key :id_
|
6
|
+
|
7
|
+
public
|
8
|
+
|
9
|
+
belongs_to :company,
|
10
|
+
:foreign_key => "companyid"
|
11
|
+
|
12
|
+
# primkey in resource_ table
|
13
|
+
def primkey(plid)
|
14
|
+
"#{plid}_LAYOUT_#{self.portletid}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def resource(plid)
|
18
|
+
Resource.find_by_primkey(self.primkey(plid))
|
19
|
+
end
|
20
|
+
|
21
|
+
# all instances
|
22
|
+
def resources
|
23
|
+
# Resource.find_by_primkey(self.primkey)
|
24
|
+
# Resource.find(:all, :conditions => "primkey='#{self.primkey}'")
|
25
|
+
resources = []
|
26
|
+
ResourceCode.find(:all, :conditions => "name='#{portletid}'").each do |rc|
|
27
|
+
resources << Resource.find(:all, :conditions => "codeid='#{rc.id}'")
|
28
|
+
end
|
29
|
+
|
30
|
+
return resources.flatten
|
31
|
+
end
|
32
|
+
|
33
|
+
def is_active?
|
34
|
+
self.active_
|
35
|
+
end
|
36
|
+
|
37
|
+
# comply API with Web::Portlet.resource
|
38
|
+
def preferences_
|
39
|
+
""
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|