summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/models/tutorials.js.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/models/tutorials.js.coffee')
-rw-r--r--app/assets/javascripts/models/tutorials.js.coffee24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/assets/javascripts/models/tutorials.js.coffee b/app/assets/javascripts/models/tutorials.js.coffee
new file mode 100644
index 00000000..9e2e8a1f
--- /dev/null
+++ b/app/assets/javascripts/models/tutorials.js.coffee
@@ -0,0 +1,24 @@
+class CakeSide.Models.Tutorial extends Backbone.Model
+ paramRoot: 'tutorial'
+
+ defaults:
+ id: null
+ url: null
+ image_url: null
+ heading: null
+ description: null
+
+ validate: (attributes, options) ->
+ return "Invalid Url." unless @isValidUrl(attributes.url || '')
+ return "This tutorial has no photos." unless @hasImage(attributes.image_url)
+
+ isValidUrl: (url) ->
+ expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
+ url.match(new RegExp(expression))
+
+ hasImage: (image_url) ->
+ image_url
+
+class CakeSide.Collections.TutorialsCollection extends Backbone.Collection
+ model: CakeSide.Models.Tutorial
+ url: '/api/v1/tutorials'