OSDN Git Service

fix js filer
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / operator.js.coffee
diff --git a/app/assets/javascripts/pettanr/operator.js.coffee b/app/assets/javascripts/pettanr/operator.js.coffee
new file mode 100644 (file)
index 0000000..e0d8ee8
--- /dev/null
@@ -0,0 +1,71 @@
+class Pettanr.Operator\r
+  \r
+  initialize: (operators) ->\r
+    @operators = operators\r
+  \r
+  #InstanceMethods\r
+  find_user: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator if operator instanceof Pettanr.User\r
+      return operator.user if operator instanceof Pettanr.Author\r
+      return operator.user if operator instanceof Pettanr.Artist\r
+    nil\r
+  \r
+  find_author: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator if operator instanceof Pettanr.Author\r
+      return operator.author if operator instanceof Pettanr.User\r
+      return operator.user.author if (operator instanceof Pettanr.Artist) and operator.user.author\r
+    nil\r
+  \r
+  find_artist: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator.user.artist if (operator instanceof Pettanr.Author) and operator.user.artist\r
+      return operator.artist if operator instanceof Pettanr.User\r
+      return operator if operator instanceof Pettanr.Artist\r
+    nil\r
+  \r
+  find_admin: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator if operator instanceof Pettanr.Admin\r
+    nil\r
+  \r
+  user: () ->\r
+    return @user if @user\r
+    @user = @find_user()\r
+  \r
+  author: () ->\r
+    return @author if @author\r
+    @author = @find_author()\r
+  \r
+  artist: () ->\r
+    return @artist if @artist\r
+    @artist = @find_artist()\r
+  \r
+  admin: () ->\r
+    return @admin if @admin\r
+    @admin = @find_admin()\r
+  \r
+  is_guest: () ->\r
+    true\r
+  \r
+  is_reader: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if (operator instanceof Pettanr.Author) or (operator instanceof Pettanr.Artist) or (operator instanceof Pettanr.Admin) or (operator instanceof Pettanr.User)\r
+    false\r
+  \r
+  is_user: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if (operator instanceof Pettanr.Author) or (operator instanceof Pettanr.Artist) or (operator instanceof Pettanr.User)\r
+    false\r
+  \r
+  is_resource_reader: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if (operator instanceof Pettanr.Author) or (operator instanceof Artist) or (operator instanceof Pettanr.Admin) or (operator instanceof Pettanr.User) or (operator instanceof Pettanr.DemandUser)\r
+    false\r
+  \r
+  is_admin: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if operator instanceof Pettanr.Admin\r
+    false\r
+  \r