OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / lib / content.rb
index 83f00ac..45e0aaf 100644 (file)
@@ -2,40 +2,31 @@ class Pettanr::Content < Pettanr::Item
   self.abstract_class = true
   # ClassMethods
   
-  def self.mylist_where me
-    ''
+  def self.owner_model
+    nil
   end
   
-  def self.mylist_order
-    ''
+  def self.owner_type
+    :author
   end
   
-  def self.himlist_where anybody
-    ''
-  end
-  
-  def self.himlist_order
-    ''
-  end
-  
-  def self.mylist me, page = 1, page_size = self.default_page_size
-    self.where(self.mylist_where(me)).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
-  end
-  
-  def self.himlist anybody, page = 1, page_size = self.default_page_size
-    self.where(self.himlist_where(anybody)).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
+  def self.content?
+    true
   end
   
-  def self.mylist_paginate me, page = 1, page_size = self.default_page_size
-    Kaminari.paginate_array(
-      Array.new(self.where(self.mylist_where(me)
-    ).includes(self.list_opt).count, nil)).page(page).per(page_size)
+  def self.operator operators
+    case self.owner_type
+    when :author
+      operators.author
+    when :artist
+      operators.artist
+    else
+      nil
+    end
   end
   
-  def self.himlist_paginate anybody, page = 1, page_size = self.default_page_size
-    Kaminari.paginate_array(
-      Array.new(self.where(self.himlist_where(anybody)
-    ).includes(self.list_opt).count, nil)).page(page).per(page_size)
+  def self.owner_column
+    self.owner_type.to_s + '_id'
   end
   
   def self.edit content_id, operators
@@ -46,15 +37,20 @@ class Pettanr::Content < Pettanr::Item
   
   #InstanceMethods
   
+  def owner_model
+    self.class.owner_model ? self.__send__(self.class.owner_model.item_name) : self
+  end
+  
   def visible? operators
     super
-    return true if self.own?(operators)
+    return true if owner_model.own?(operators)
     true
   end
   
   def own? operators
-    return false unless operators.author
-    self.author_id == operators.author.id
+    operator = self.class.operator operators
+    return false unless operator
+    owner_model.attributes[self.class.owner_column] == operator.id
   end
   
 end