OSDN Git Service

fix view
[pettanr/pettanr.git] / lib / content.rb
index 9f34832..45e0aaf 100644 (file)
@@ -2,50 +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 anyone
-    ''
-  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)
+  def self.content?
+    true
   end
   
-  def self.himlist anyone, operators, page = 1, page_size = self.default_page_size
-    where_str = if operators.admin?
-      self.list_where
+  def self.operator operators
+    case self.owner_type
+    when :author
+      operators.author
+    when :artist
+      operators.artist
     else
-      self.himlist_where(anyone)
+      nil
     end
-    self.where(where_str).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
   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)
-  end
-  
-  def self.himlist_paginate anyone, operators, page = 1, page_size = self.default_page_size
-    where_str = if operators.admin?
-      self.list_where
-    else
-      self.himlist_where(anyone)
-    end
-    Kaminari.paginate_array(
-      Array.new(self.where(where_str)
-    ).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
@@ -56,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