summaryrefslogtreecommitdiff
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authormo <mo.khan@gmail.com>2017-09-02 22:46:07 +0000
committermo <mo.khan@gmail.com>2017-09-02 22:46:07 +0000
commit4d6fd17c8f1d7ee0ecb46e8323b61e4006bf39a4 (patch)
treee9d098503da331c6b50c339166d1dd8f4a7c3c5f /app/assets/javascripts
parent85b4e006052f51dfb7fb02ee1fe7d6914cb6b17c (diff)
parent6a6daa8c8d9223d6f3b29897bc23df386f28428b (diff)
Merge branch 'bootstrap' into 'master'
Bootstrap Closes #10 See merge request !2
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/application.js18
-rw-r--r--app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs24
-rw-r--r--app/assets/javascripts/backbone/templates/cakes/edit.jst.ejs56
-rw-r--r--app/assets/javascripts/backbone/templates/cakes/new.jst.ejs26
-rw-r--r--app/assets/javascripts/backbone/templates/cakes/show.jst.ejs50
-rw-r--r--app/assets/javascripts/backbone/templates/cakes/thumbnail.jst.ejs11
-rw-r--r--app/assets/javascripts/backbone/templates/photos/new-modal.jst.ejs18
-rw-r--r--app/assets/javascripts/backbone/templates/profiles/show.jst.ejs59
-rw-r--r--app/assets/javascripts/backbone/templates/tutorials/new.jst.ejs33
-rw-r--r--app/assets/javascripts/backbone/views/cakes/index_view.js.coffee8
-rw-r--r--app/assets/javascripts/backbone/views/cakes/no_cakes_view.js.coffee5
-rw-r--r--app/assets/javascripts/backbone/views/cakes/thumbnail_view.js.coffee13
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee9
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee5
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/show_view.js.coffee7
-rw-r--r--app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee10
-rw-r--r--app/assets/javascripts/cakeside.js.coffee (renamed from app/assets/javascripts/backbone/cakeside.js.coffee)14
-rw-r--r--app/assets/javascripts/controllers/my/cakes_controller.js.coffee (renamed from app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee)8
-rw-r--r--app/assets/javascripts/controllers/my/dashboard_controller.js.coffee (renamed from app/assets/javascripts/backbone/controllers/dashboard_controller.js.coffee)2
-rw-r--r--app/assets/javascripts/controllers/my/profile_controller.js.coffee (renamed from app/assets/javascripts/backbone/controllers/profile_controller.js.coffee)8
-rw-r--r--app/assets/javascripts/controllers/my/tutorials_controller.js.coffee (renamed from app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee)8
-rw-r--r--app/assets/javascripts/infrastructure/auto_view.js.coffee23
-rw-r--r--app/assets/javascripts/infrastructure/auto_view_setup.js.coffee8
-rw-r--r--app/assets/javascripts/infrastructure/behaviour.js.coffee12
-rw-r--r--app/assets/javascripts/infrastructure/infinite_scroll.js.coffee11
-rw-r--r--app/assets/javascripts/models/.gitkeep (renamed from app/assets/javascripts/backbone/models/.gitkeep)0
-rw-r--r--app/assets/javascripts/models/cake.js.coffee (renamed from app/assets/javascripts/backbone/models/cake.js.coffee)0
-rw-r--r--app/assets/javascripts/models/category.js.coffee (renamed from app/assets/javascripts/backbone/models/category.js.coffee)0
-rw-r--r--app/assets/javascripts/models/photo.js.coffee (renamed from app/assets/javascripts/backbone/models/photo.js.coffee)0
-rw-r--r--app/assets/javascripts/models/profile.js.coffee (renamed from app/assets/javascripts/backbone/models/profile.js.coffee)0
-rw-r--r--app/assets/javascripts/models/tutorials.js.coffee (renamed from app/assets/javascripts/backbone/models/tutorials.js.coffee)0
-rw-r--r--app/assets/javascripts/routers/.gitkeep (renamed from app/assets/javascripts/backbone/routers/.gitkeep)0
-rw-r--r--app/assets/javascripts/routers/cakes_router.js.coffee (renamed from app/assets/javascripts/backbone/routers/cakes_router.js.coffee)0
-rw-r--r--app/assets/javascripts/routers/dashboard_router.js.coffee (renamed from app/assets/javascripts/backbone/routers/dashboard_router.js.coffee)0
-rw-r--r--app/assets/javascripts/routers/profile_router.js.coffee (renamed from app/assets/javascripts/backbone/routers/profile_router.js.coffee)0
-rw-r--r--app/assets/javascripts/routers/tutorials_router.js.coffee (renamed from app/assets/javascripts/backbone/routers/tutorials_router.js.coffee)0
-rw-r--r--app/assets/javascripts/service/embedly_service.js.coffee2
-rw-r--r--app/assets/javascripts/templates/.gitkeep (renamed from app/assets/javascripts/backbone/templates/.gitkeep)0
-rw-r--r--app/assets/javascripts/templates/my/cakes/cake.jst.ejs (renamed from app/assets/javascripts/backbone/templates/cakes/cake.jst.ejs)0
-rw-r--r--app/assets/javascripts/templates/my/cakes/delete_modal.jst.ejs32
-rw-r--r--app/assets/javascripts/templates/my/cakes/edit.jst.ejs39
-rw-r--r--app/assets/javascripts/templates/my/cakes/new.jst.ejs18
-rw-r--r--app/assets/javascripts/templates/my/cakes/no_cakes.jst.ejs (renamed from app/assets/javascripts/backbone/templates/cakes/no_cakes.jst.ejs)0
-rw-r--r--app/assets/javascripts/templates/my/cakes/show.jst.ejs26
-rw-r--r--app/assets/javascripts/templates/my/cakes/thumbnail.jst.ejs8
-rw-r--r--app/assets/javascripts/templates/my/photos/new-modal.jst.ejs24
-rw-r--r--app/assets/javascripts/templates/my/profiles/show.jst.ejs45
-rw-r--r--app/assets/javascripts/templates/my/tutorials/new.jst.ejs23
-rw-r--r--app/assets/javascripts/templates/my/tutorials/no_tutorials.jst.ejs (renamed from app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs)0
-rw-r--r--app/assets/javascripts/templates/my/tutorials/show.jst.ejs (renamed from app/assets/javascripts/backbone/templates/tutorials/show.jst.ejs)4
-rw-r--r--app/assets/javascripts/templates/my/tutorials/tutorial.jst.ejs (renamed from app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs)2
-rw-r--r--app/assets/javascripts/views/.gitkeep (renamed from app/assets/javascripts/backbone/views/.gitkeep)0
-rw-r--r--app/assets/javascripts/views/cakes/show_page.js.coffee7
-rw-r--r--app/assets/javascripts/views/disqus_view.js.coffee (renamed from app/assets/javascripts/backbone/views/disqus_view.js.coffee)0
-rw-r--r--app/assets/javascripts/views/error_view.js.coffee (renamed from app/assets/javascripts/backbone/views/error_view.js.coffee)2
-rw-r--r--app/assets/javascripts/views/index.js.coffee9
-rw-r--r--app/assets/javascripts/views/my/cakes/cake_view.js.coffee (renamed from app/assets/javascripts/backbone/views/cakes/cake_view.js.coffee)6
-rw-r--r--app/assets/javascripts/views/my/cakes/delete_cake_modal_view.js.coffee (renamed from app/assets/javascripts/backbone/views/cakes/delete_cake_modal_view.js.coffee)6
-rw-r--r--app/assets/javascripts/views/my/cakes/edit_view.js.coffee (renamed from app/assets/javascripts/backbone/views/cakes/edit_view.js.coffee)11
-rw-r--r--app/assets/javascripts/views/my/cakes/index_view.js.coffee7
-rw-r--r--app/assets/javascripts/views/my/cakes/new_view.js.coffee (renamed from app/assets/javascripts/backbone/views/cakes/new_view.js.coffee)6
-rw-r--r--app/assets/javascripts/views/my/cakes/no_cakes_view.js.coffee3
-rw-r--r--app/assets/javascripts/views/my/cakes/show_view.js.coffee (renamed from app/assets/javascripts/backbone/views/cakes/show_view.js.coffee)11
-rw-r--r--app/assets/javascripts/views/my/cakes/thumbnail_view.js.coffee11
-rw-r--r--app/assets/javascripts/views/my/photos/new_modal_view.js.coffee (renamed from app/assets/javascripts/backbone/views/photos/new_modal_view.js.coffee)9
-rw-r--r--app/assets/javascripts/views/my/profiles/show_view.js.coffee (renamed from app/assets/javascripts/backbone/views/profiles/show_view.js.coffee)17
-rw-r--r--app/assets/javascripts/views/my/tutorials/index_view.js.coffee8
-rw-r--r--app/assets/javascripts/views/my/tutorials/new_view.js.coffee (renamed from app/assets/javascripts/backbone/views/tutorials/new_view.js.coffee)7
-rw-r--r--app/assets/javascripts/views/my/tutorials/no_tutorials_view.js.coffee3
-rw-r--r--app/assets/javascripts/views/my/tutorials/show_view.js.coffee5
-rw-r--r--app/assets/javascripts/views/my/tutorials/tutorial_view.js.coffee8
71 files changed, 388 insertions, 417 deletions
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 1f73af92..88e4080e 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -1,11 +1,10 @@
//= require jquery
-//= require jquery.turbolinks
//= require jquery_ujs
-//= require turbolinks
//= require jquery.ui.all
//= require jquery.validate
//= require jquery.embedly
//= require tag-it
+//= require popper
//= require bootstrap
//= require bootstrap-multiselect
//= require underscore
@@ -14,17 +13,8 @@
//= require backbone.marionette
//= require backbone_rails_sync
//= require backbone_datalink
-//= require backbone/cakeside
//= require backbone-model-file-upload
-//= require_tree .
+//= require cakeside
+//= require_self
-var initialize = function(){
- $('.tooltip-item').tooltip();
- $(window).scroll(function(){
- if ($(window).scrollTop() >= ($(document).height() - $(window).height())*0.8){
- $('.more-button').trigger('click');
- }
- });
-};
-$(document).ready(initialize);
-$(document).on("page:load", initialize);
+CakeSide.Behaviour.install();
diff --git a/app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs b/app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs
deleted file mode 100644
index 30d53f86..00000000
--- a/app/assets/javascripts/backbone/templates/cakes/delete_modal.jst.ejs
+++ /dev/null
@@ -1,24 +0,0 @@
-<div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h2>Are you ABSOLUTELY sure?</h2>
-</div>
-<div class="modal-body">
- <% if (hasError()) { %>
- <div class="alert">
- <button type="button" class="close" data-dismiss="alert">&times</button>
- <strong>Error!</strong> <%= errorMessage %>
- </div>
- <% } %>
- <p>
- This action <b>CANNOT</b> be undone.
- This will permanently delete <b><%= name %></b> photos, and comments.
- </p>
- <p>
- Please type in the name of the cake to confirm.
- <input id="confirmation-textbox" type="text" class="input-xxlarge" autofocus="" required="" aria-label="Type in the name of the cake to confirm that you want to delete this repository.">
- </p>
-</div>
-<div class="modal-footer">
- <a href="#" class="btn" data-dismiss="modal">Cancel</a>
- <button id="remove-button" type="submit" class="btn btn-danger" disabled="disabled">I understand the consequences, delete this cake</button>
-</div>
diff --git a/app/assets/javascripts/backbone/templates/cakes/edit.jst.ejs b/app/assets/javascripts/backbone/templates/cakes/edit.jst.ejs
deleted file mode 100644
index e589075f..00000000
--- a/app/assets/javascripts/backbone/templates/cakes/edit.jst.ejs
+++ /dev/null
@@ -1,56 +0,0 @@
-<div class="row-fluid">
- <div class="span12">
- <h1><small>Edit</small> <%= cake.name %></h1>
- <hr />
- <form id="edit-cake" name="cake" class="form-horizontal">
- <fieldset>
- <div class="control-group">
- <label class="control-label"></label>
- <div class="controls">
- <a class="btn btn-primary add-photo">Upload Photo...</a>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="cake_name">Name*</label>
- <div class="controls">
- <input class="input-xxlarge" id="cake_name" name="name" type="text" value="<%= cake.name %>" />
- </div>
- </div>
- <div class="control-group">
- <label class="control-label">Category</label>
- <div class="controls">
- <select id="cake_category_id" name="category_id">
- <% _.each(categories, function(category) { %>
- <option value="<%= category.id %>"><%= category.name %></option>
- <% }); %>
- </select>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="cake_story">Description</label>
- <div class="controls">
- <textarea class="input-xxlarge" id="cake_story" name="story" rows="3"><%= cake.story %></textarea>
- </div>
- </div>
- <div class="control-group">
- <label for="cake_tags" class="control-label">Tags</label>
- <div class="controls">
- <% if (typeof(cake.tags) === "string") { %>
- <% tags = _.map(cake.tags.split(','), function(x){ return x; }) %>
- <% } else { %>
- <% tags = _.map(cake.tags, function(x){ return x.name; }) %>
- <% } %>
- <input name="cake_tags" type="text" id="cake_tags" value="<%= tags %>" class="input-xxlarge" autocomplete="off" />
- </div>
- </div>
- <div class="form-actions">
- <button id='save-button' type="submit" class="btn btn-primary">Publish</button>
- <a href="#cakes/<%= cake.id %>" class="btn">Cancel</a>
- </div>
- </fieldset>
- </form>
- </div>
-</div>
-<div class="row-fluid">
- <ul class="thumbnails"></ul>
-</div>
diff --git a/app/assets/javascripts/backbone/templates/cakes/new.jst.ejs b/app/assets/javascripts/backbone/templates/cakes/new.jst.ejs
deleted file mode 100644
index ad14b2a8..00000000
--- a/app/assets/javascripts/backbone/templates/cakes/new.jst.ejs
+++ /dev/null
@@ -1,26 +0,0 @@
-<h1>Share cake</h1>
-<hr />
-<form id="new-cake" name="cake" class="form-horizontal">
- <fieldset>
- <div class="control-group">
- <label class="control-label" for="cake_name">Name*</label>
- <div class="controls">
- <input class="input-xxlarge" id="cake_name" name="name" type="text">
- </div>
- </div>
- <div class="control-group">
- <label class="control-label">Category</label>
- <div class="controls">
- <select id="cake_category_id" name="category_id">
- <% _.each(categories, function(category) { %>
- <option value="<%= category.id %>"><%= category.name %></option>
- <% }); %>
- </select>
- </div>
- </div>
- <div class="form-actions">
- <button id='save-button' type="submit" class="btn btn-primary">Create</button>
- <a href="#cakes" class="btn">Cancel</a>
- </div>
- </fieldset>
-</form>
diff --git a/app/assets/javascripts/backbone/templates/cakes/show.jst.ejs b/app/assets/javascripts/backbone/templates/cakes/show.jst.ejs
deleted file mode 100644
index 6a32afdf..00000000
--- a/app/assets/javascripts/backbone/templates/cakes/show.jst.ejs
+++ /dev/null
@@ -1,50 +0,0 @@
-<div class="row-fluid">
- <div class="span12">
- <p>
- <a href="#cakes/<%= id %>/edit" class="btn">
- <i class="icon-edit"></i> <strong>Edit</strong>
- </a>
- <a class="btn add-photo">
- <i class="icon-plus"></i><strong>Add Photo</strong>
- </a>
- <a href="<%= Routes.cake_favorites_path(id) %>" class="btn">
- <i class="icon-heart"></i> <strong>Fan Club</strong>
- </a>
- <a id="remove-cake-button" class="btn btn-danger pull-right">
- <i class="icon-white icon-remove"></i> <strong>Delete this cake</strong>
- </a>
- </p>
- </div>
-</div>
-<div class="row-fluid">
- <div class="span6">
- <% if (hasImage()) { %>
- <% photo = randomPhoto()%>
- <a href="#cakes/<%= id %>/photos/<%= photo.id %>">
- <img class="thumbnail" src="<%= photo.large_url %>" alt="<%= name %>" />
- </a>
- <% } %>
- </div>
- <div class="span6">
- <h1><a href="#cakes/<%= id %>"><%= name %></a></h1>
- <span> <i class="icon-tags"></i> </span>
- <% if (typeof(tags) === "string") { %>
- <% _.each(tags.split(','), function(tag){ %>
- <a href="<%= Routes.creation_tag_path(tag) %>">
- <span class="label"><%= tag %></span>
- </a>
- <% }); %>
- <% } else { %>
- <% _.each(tags, function(tag){ %>
- <a href="<%= Routes.creation_tag_path(tag.name) %>">
- <span class="label"><%= tag.name %></span>
- </a>
- <% }); %>
- <% } %>
- <hr />
- <p><%= story %></p>
- </div>
-</div>
-<div class="row-fluid">
- <ul class="thumbnails"></ul>
-</div>
diff --git a/app/assets/javascripts/backbone/templates/cakes/thumbnail.jst.ejs b/app/assets/javascripts/backbone/templates/cakes/thumbnail.jst.ejs
deleted file mode 100644
index 66533081..00000000
--- a/app/assets/javascripts/backbone/templates/cakes/thumbnail.jst.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="thumbnail">
- <% if (uploading()) { %>
- <div class="progress progress-striped active">
- <div class="bar" style="width: <%= percentComplete %>%;"></div>
- </div>
- <% } else { %>
- <a href="#cakes/<%= cake_id %>/photos/<%= id %>">
- <img src="<%= thumb_url %>" />
- </a>
- <% } %>
-</div>
diff --git a/app/assets/javascripts/backbone/templates/photos/new-modal.jst.ejs b/app/assets/javascripts/backbone/templates/photos/new-modal.jst.ejs
deleted file mode 100644
index 7f7a7dfb..00000000
--- a/app/assets/javascripts/backbone/templates/photos/new-modal.jst.ejs
+++ /dev/null
@@ -1,18 +0,0 @@
-<div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
- <h4>Upload Photo</h4>
-</div>
-<div class="modal-body">
- <span class="btn btn-default btn-file">
- + Browse... <input id="photo-attachment" name="attachment" type="file" accept="image/*">
- </span>
- <p class='pull-right'>
- <input id="watermark" name="watermark" maxlength="30" size="30" type="text" placeholder="watermark" /> on CakeSide.com
- <a class="tooltip-item" data-placement="right" rel="tooltip" href="#" data-original-title="Watermark your name or company on each uploaded image" data-animation="true"><i class="icon-question-sign"></i></a>
- </p>
- <img id="preview-image" src="#" alt="your image" class="hide hidden-phone" />
-</div>
-<div class="modal-footer">
- <a href="#" class="btn" data-dismiss="modal">Cancel</a>
- <button id="upload-photo-button" type="submit" class="btn btn-primary">Upload Photo</button>
-</div>
diff --git a/app/assets/javascripts/backbone/templates/profiles/show.jst.ejs b/app/assets/javascripts/backbone/templates/profiles/show.jst.ejs
deleted file mode 100644
index 5a9903f2..00000000
--- a/app/assets/javascripts/backbone/templates/profiles/show.jst.ejs
+++ /dev/null
@@ -1,59 +0,0 @@
-<h1>Public Profile</h1>
-<hr />
-<div id="status-message" class="alert alert-error hidden">
- <a class="close" data-dismiss="alert" href="#">×</a>
-</div>
-<form id="profile-form" class="form-horizontal">
- <fieldset>
- <div class="control-group">
- <label class="control-label" for="user_name">Name</label>
- <div class="controls">
- <input class="input-xlarge" id="user_name" name="user[name]" type="text" value="<%= name %>">
- <span class="help-inline"></span>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="user_email">Email</label>
- <div class="controls">
- <input class="input-xlarge" id="user_email" name="user[email]" type="email" value="<%= email %>">
- <span class="help-inline"></span>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="user_website">URL</label>
- <div class="controls">
- <input class="input-xlarge url" id="user_website" name="user[website]" placeholder="https://www.cakeside.com" type="url" value="<%= website %>">
- <span class="help-inline"></span>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="user_city">Location</label>
- <div class="controls">
- <input class="input-xlarge" id="user_city" name="user[city]" type="text" value="<%= city %>">
- <span class="help-inline"></span>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="user_twitter">Twitter username</label>
- <div class="controls">
- <div class="input-prepend">
- <span class="add-on">@</span>
- <input class="input-xlarge" id="user_twitter" maxlength="15" name="user[twitter]" placeholder="without the @ sign" size="255" type="text" value="<%= twitter %>">
- </div>
- <span class="help-inline"></span>
- </div>
- </div>
- <div class="control-group">
- <label class="control-label" for="user_facebook">Facebook</label>
- <div class="controls">
- <input class="input-xlarge" id="user_facebook" maxlength="255" name="user[facebook]" placeholder="http://www.facebook.com/your_profile" size="255" type="text" value="<%= facebook %>">
- <span class="help-inline"></span>
- </div>
- </div>
- <div class="form-actions">
- <input id="save-button" type="submit" class="btn btn-primary" value="Update profile">
- <button id="cancel-button" type="reset" class="btn">Cancel</button>
- </div>
- </fieldset>
-</form>
-
diff --git a/app/assets/javascripts/backbone/templates/tutorials/new.jst.ejs b/app/assets/javascripts/backbone/templates/tutorials/new.jst.ejs
deleted file mode 100644
index 16bc5fed..00000000
--- a/app/assets/javascripts/backbone/templates/tutorials/new.jst.ejs
+++ /dev/null
@@ -1,33 +0,0 @@
-<h1>Share a tutorial link</h1>
-<hr />
-<form id="new-tutorial" name='tutorial' class='form-horizontal'>
- <fieldset>
- <div id="url-group" class="control-group">
- <label class="control-label" for="tutorial_url">Tutorial URL</label>
- <div class="controls">
- <input class="input-xxlarge" id="tutorial_url" name="url" type="text" value="<%= url %>" placeholder="http://www.cakeside.com/" autofocus>
- </div>
- </div>
- <div class="control-group">
- <label for="tags" class="control-label">Tags</label>
- <div class="controls">
- <input type="text" id="tutorial_tags" name="tags" value="" class="input-xxlarge" autocomplete="off" />
- <p class="help-block">
- Note: help people find this tutorial by adding some keyword tags
- </p>
- </div>
- </div>
- <div class="form-actions">
- <button id='save-button' type="submit" class="btn btn-primary">Save</button>
- <a href="#tutorials" class="btn">Cancel</a>
- </div>
- </fieldset>
-</form>
-<div id="preview-panel" class="thumbnail">
- <img class="embed-thumb" src="<%= image_url %>" />
- <div class="caption">
- <h3 class="tutorial-heading"><%= heading %></h3>
- <p id="tag-list"></p>
- <p class="tutorial-description"><%= description %></p>
- </div>
-</div>
diff --git a/app/assets/javascripts/backbone/views/cakes/index_view.js.coffee b/app/assets/javascripts/backbone/views/cakes/index_view.js.coffee
deleted file mode 100644
index 6d6d2f9a..00000000
--- a/app/assets/javascripts/backbone/views/cakes/index_view.js.coffee
+++ /dev/null
@@ -1,8 +0,0 @@
-#= require backbone/views/cakes/no_cakes_view
-CakeSide.Views.Cakes ||= {}
-
-class CakeSide.Views.Cakes.IndexView extends Marionette.CollectionView
- childView: CakeSide.Views.Cakes.CakeView
- emptyView: CakeSide.Views.Cakes.NoCakesView
- className: ''
- tagName: 'div'
diff --git a/app/assets/javascripts/backbone/views/cakes/no_cakes_view.js.coffee b/app/assets/javascripts/backbone/views/cakes/no_cakes_view.js.coffee
deleted file mode 100644
index 278d7d37..00000000
--- a/app/assets/javascripts/backbone/views/cakes/no_cakes_view.js.coffee
+++ /dev/null
@@ -1,5 +0,0 @@
-CakeSide.Views.Cakes ||= {}
-
-class CakeSide.Views.Cakes.NoCakesView extends Marionette.ItemView
- template: JST["backbone/templates/cakes/no_cakes"]
- tagName: 'li'
diff --git a/app/assets/javascripts/backbone/views/cakes/thumbnail_view.js.coffee b/app/assets/javascripts/backbone/views/cakes/thumbnail_view.js.coffee
deleted file mode 100644
index 5e772232..00000000
--- a/app/assets/javascripts/backbone/views/cakes/thumbnail_view.js.coffee
+++ /dev/null
@@ -1,13 +0,0 @@
-CakeSide.Views.Cakes ||= {}
-
-class CakeSide.Views.Cakes.ThumbnailView extends Marionette.ItemView
- template: JST['backbone/templates/cakes/thumbnail']
- tagName: 'li'
- className: 'span2'
- modelEvents:
- 'sync': 'render'
- 'change:percentComplete': 'render'
-
- templateHelpers:
- uploading: ->
- typeof(@percentComplete) != "undefined" && @percentComplete != 100
diff --git a/app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee
deleted file mode 100644
index 6cdce8db..00000000
--- a/app/assets/javascripts/backbone/views/tutorials/index_view.js.coffee
+++ /dev/null
@@ -1,9 +0,0 @@
-#= require backbone/views/tutorials/no_tutorials_view
-#= require backbone/views/tutorials/tutorial_view
-CakeSide.Views.Tutorials ||= {}
-
-class CakeSide.Views.Tutorials.IndexView extends Marionette.CollectionView
- childView: CakeSide.Views.Tutorials.TutorialView
- emptyView: CakeSide.Views.Tutorials.NoTutorialsView
- className: ''
- tagName: 'div'
diff --git a/app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee
deleted file mode 100644
index 77b2e71c..00000000
--- a/app/assets/javascripts/backbone/views/tutorials/no_tutorials_view.js.coffee
+++ /dev/null
@@ -1,5 +0,0 @@
-CakeSide.Views.Tutorials ||= {}
-
-class CakeSide.Views.Tutorials.NoTutorialsView extends Marionette.ItemView
- template: JST['backbone/templates/tutorials/no_tutorials']
- tagName: 'li'
diff --git a/app/assets/javascripts/backbone/views/tutorials/show_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/show_view.js.coffee
deleted file mode 100644
index 9f6ef782..00000000
--- a/app/assets/javascripts/backbone/views/tutorials/show_view.js.coffee
+++ /dev/null
@@ -1,7 +0,0 @@
-CakeSide.Views.Tutorials ||= {}
-
-class CakeSide.Views.Tutorials.ShowView extends Marionette.ItemView
- template: JST["backbone/templates/tutorials/show"]
- templateHelpers:
- displayDate: (date) ->
- date
diff --git a/app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee b/app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee
deleted file mode 100644
index 2766b53e..00000000
--- a/app/assets/javascripts/backbone/views/tutorials/tutorial_view.js.coffee
+++ /dev/null
@@ -1,10 +0,0 @@
-CakeSide.Views.Tutorials ||= {}
-
-class CakeSide.Views.Tutorials.TutorialView extends Marionette.ItemView
- template: JST['backbone/templates/tutorials/tutorial']
- tagName: 'div'
- className: 'media'
-
- templateHelpers:
- displayDate: (date) ->
- new Date(date).toLocaleDateString()
diff --git a/app/assets/javascripts/backbone/cakeside.js.coffee b/app/assets/javascripts/cakeside.js.coffee
index 6f468e52..f49ccd22 100644
--- a/app/assets/javascripts/backbone/cakeside.js.coffee
+++ b/app/assets/javascripts/cakeside.js.coffee
@@ -1,16 +1,18 @@
#= require_self
+#= require_tree ./infrastructure
#= require_tree ./templates
#= require_tree ./models
-#= require_tree ./views
+#= require ./views
#= require_tree ./controllers
#= require_tree ./routers
+#= require_tree ./service
window.CakeSide =
Models: {}
Collections: {}
Routers: {}
Views: {}
- Controllers: {}
+ Controllers: { My: {} }
initialize: (data) ->
$(document).ajaxSend (event, xhr) ->
if data.access_token
@@ -23,13 +25,13 @@ window.CakeSide =
CakeSide.Application.addInitializer (options) ->
new CakeSide.Routers.CakesRouter
- controller: new CakeSide.Controllers.CakesController()
+ controller: new CakeSide.Controllers.My.CakesController()
new CakeSide.Routers.TutorialsRouter
- controller: new CakeSide.Controllers.TutorialsController()
+ controller: new CakeSide.Controllers.My.TutorialsController()
new CakeSide.Routers.DashboardRouter
- controller: new CakeSide.Controllers.DashboardController()
+ controller: new CakeSide.Controllers.My.DashboardController()
new CakeSide.Routers.ProfileRouter
- controller: new CakeSide.Controllers.ProfileController()
+ controller: new CakeSide.Controllers.My.ProfileController()
CakeSide.Application.on 'start', ->
if Backbone.history
diff --git a/app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee b/app/assets/javascripts/controllers/my/cakes_controller.js.coffee
index 70d99253..6a56d6bc 100644
--- a/app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee
+++ b/app/assets/javascripts/controllers/my/cakes_controller.js.coffee
@@ -1,5 +1,5 @@
-class CakeSide.Controllers.CakesController extends Marionette.Controller
- views: CakeSide.Views.Cakes
+class CakeSide.Controllers.My.CakesController extends Marionette.Controller
+ views: CakeSide.Views.My.Cakes
initialize: (options) ->
@content_region = CakeSide.Application.content_region
@cakes = CakeSide.Application.request('CakesRepository')
@@ -30,5 +30,5 @@ class CakeSide.Controllers.CakesController extends Marionette.Controller
#@comment_view.hide()
selectTab: ->
- $('.nav-list').children().removeClass('active')
- $('#cakes-tab').addClass('active')
+ $('.nav-link').removeClass('active')
+ $('a[href="/my#cakes/new"]').addClass('active')
diff --git a/app/assets/javascripts/backbone/controllers/dashboard_controller.js.coffee b/app/assets/javascripts/controllers/my/dashboard_controller.js.coffee
index 23169914..734aedc9 100644
--- a/app/assets/javascripts/backbone/controllers/dashboard_controller.js.coffee
+++ b/app/assets/javascripts/controllers/my/dashboard_controller.js.coffee
@@ -1,4 +1,4 @@
-class CakeSide.Controllers.DashboardController extends Marionette.Controller
+class CakeSide.Controllers.My.DashboardController extends Marionette.Controller
initialize: (options) ->
#@comment_view = CakeSide.Application.request('CommentView')
diff --git a/app/assets/javascripts/backbone/controllers/profile_controller.js.coffee b/app/assets/javascripts/controllers/my/profile_controller.js.coffee
index 984cf4d7..c429c035 100644
--- a/app/assets/javascripts/backbone/controllers/profile_controller.js.coffee
+++ b/app/assets/javascripts/controllers/my/profile_controller.js.coffee
@@ -1,5 +1,5 @@
-class CakeSide.Controllers.ProfileController extends Marionette.Controller
- views: CakeSide.Views.Profiles
+class CakeSide.Controllers.My.ProfileController extends Marionette.Controller
+ views: CakeSide.Views.My.Profiles
initialize: (options) ->
@content_region = CakeSide.Application.content_region
#@comment_view = CakeSide.Application.request('CommentView')
@@ -14,5 +14,5 @@ class CakeSide.Controllers.ProfileController extends Marionette.Controller
@content_region.show(new @views.ShowView(model: profile))
selectTab: ->
- $('.nav-list').children().removeClass('active')
- $('#profile-tab').addClass('active')
+ $('.nav-link').removeClass('active')
+ $('a[href="/my#profile/me"]').addClass('active')
diff --git a/app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee b/app/assets/javascripts/controllers/my/tutorials_controller.js.coffee
index 5f1997c4..dcee92d5 100644
--- a/app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee
+++ b/app/assets/javascripts/controllers/my/tutorials_controller.js.coffee
@@ -1,5 +1,5 @@
-class CakeSide.Controllers.TutorialsController extends Marionette.Controller
- views: CakeSide.Views.Tutorials
+class CakeSide.Controllers.My.TutorialsController extends Marionette.Controller
+ views: CakeSide.Views.My.Tutorials
initialize: (options) ->
@content_region = CakeSide.Application.content_region
@tutorials = CakeSide.Application.request('TutorialsRepository')
@@ -25,5 +25,5 @@ class CakeSide.Controllers.TutorialsController extends Marionette.Controller
#url: tutorial.get('url')
selectTab: ->
- $('.nav-list').children().removeClass('active')
- $('#tutorial-tab').addClass('active')
+ $('.nav-link').removeClass('active')
+ $('a[href="/my#tutorials/new"]').addClass('active')
diff --git a/app/assets/javascripts/infrastructure/auto_view.js.coffee b/app/assets/javascripts/infrastructure/auto_view.js.coffee
new file mode 100644
index 00000000..4966221a
--- /dev/null
+++ b/app/assets/javascripts/infrastructure/auto_view.js.coffee
@@ -0,0 +1,23 @@
+class CakeSide.AutoView extends Backbone.View
+ @views: {}
+ @constructors: {}
+
+ @viewName: (name) ->
+ @constructors[name] = this
+ @::name = name
+
+ @install: (element) ->
+ name = $(element).data('autoview')
+ constructor = @constructors[name]
+ if constructor == undefined
+ console.error("Could not find autoview for #{name}")
+ return
+
+ view = new constructor
+ el: element
+ $el: $(element)
+ view.render()
+ @views[name] ?= []
+ @views[name].push(view)
+
+ render: -> { }
diff --git a/app/assets/javascripts/infrastructure/auto_view_setup.js.coffee b/app/assets/javascripts/infrastructure/auto_view_setup.js.coffee
new file mode 100644
index 00000000..c0d71fe2
--- /dev/null
+++ b/app/assets/javascripts/infrastructure/auto_view_setup.js.coffee
@@ -0,0 +1,8 @@
+#= require ./behaviour
+
+class CakeSide.AutoViewSetup extends CakeSide.Behaviour
+ @on "load"
+
+ execute: ->
+ for element in $('[data-autoview]')
+ CakeSide.AutoView.install(element)
diff --git a/app/assets/javascripts/infrastructure/behaviour.js.coffee b/app/assets/javascripts/infrastructure/behaviour.js.coffee
new file mode 100644
index 00000000..a5354e25
--- /dev/null
+++ b/app/assets/javascripts/infrastructure/behaviour.js.coffee
@@ -0,0 +1,12 @@
+class CakeSide.Behaviour
+ @events: {}
+
+ @on: (event) ->
+ @events[event] ?= []
+ @events[event].push(@)
+
+ @install: ->
+ for event of @events
+ window.addEventListener event, () =>
+ for behaviour in @events[event]
+ new behaviour().execute()
diff --git a/app/assets/javascripts/infrastructure/infinite_scroll.js.coffee b/app/assets/javascripts/infrastructure/infinite_scroll.js.coffee
new file mode 100644
index 00000000..ab7d2b61
--- /dev/null
+++ b/app/assets/javascripts/infrastructure/infinite_scroll.js.coffee
@@ -0,0 +1,11 @@
+#= require ./behaviour
+
+class CakeSide.InfiniteScroll extends CakeSide.Behaviour
+ @on "scroll"
+
+ execute: ->
+ $moreButton = $('[data-infinite-scroll]')
+ return if $moreButton.length == 0
+
+ if $(window).scrollTop() >= ($(document).height() - $(window).height())*0.8
+ $moreButton.trigger('click')
diff --git a/app/assets/javascripts/backbone/models/.gitkeep b/app/assets/javascripts/models/.gitkeep
index e69de29b..e69de29b 100644
--- a/app/assets/javascripts/backbone/models/.gitkeep
+++ b/app/assets/javascripts/models/.gitkeep
diff --git a/app/assets/javascripts/backbone/models/cake.js.coffee b/app/assets/javascripts/models/cake.js.coffee
index 7f925394..7f925394 100644
--- a/app/assets/javascripts/backbone/models/cake.js.coffee
+++ b/app/assets/javascripts/models/cake.js.coffee
diff --git a/app/assets/javascripts/backbone/models/category.js.coffee b/app/assets/javascripts/models/category.js.coffee
index 98437966..98437966 100644
--- a/app/assets/javascripts/backbone/models/category.js.coffee
+++ b/app/assets/javascripts/models/category.js.coffee
diff --git a/app/assets/javascripts/backbone/models/photo.js.coffee b/app/assets/javascripts/models/photo.js.coffee
index eb1cff76..eb1cff76 100644
--- a/app/assets/javascripts/backbone/models/photo.js.coffee
+++ b/app/assets/javascripts/models/photo.js.coffee
diff --git a/app/assets/javascripts/backbone/models/profile.js.coffee b/app/assets/javascripts/models/profile.js.coffee
index 189d83e4..189d83e4 100644
--- a/app/assets/javascripts/backbone/models/profile.js.coffee
+++ b/app/assets/javascripts/models/profile.js.coffee
diff --git a/app/assets/javascripts/backbone/models/tutorials.js.coffee b/app/assets/javascripts/models/tutorials.js.coffee
index 9e2e8a1f..9e2e8a1f 100644
--- a/app/assets/javascripts/backbone/models/tutorials.js.coffee
+++ b/app/assets/javascripts/models/tutorials.js.coffee
diff --git a/app/assets/javascripts/backbone/routers/.gitkeep b/app/assets/javascripts/routers/.gitkeep
index e69de29b..e69de29b 100644
--- a/app/assets/javascripts/backbone/routers/.gitkeep
+++ b/app/assets/javascripts/routers/.gitkeep
diff --git a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee b/app/assets/javascripts/routers/cakes_router.js.coffee
index 5a0922ae..5a0922ae 100644
--- a/app/assets/javascripts/backbone/routers/cakes_router.js.coffee
+++ b/app/assets/javascripts/routers/cakes_router.js.coffee
diff --git a/app/assets/javascripts/backbone/routers/dashboard_router.js.coffee b/app/assets/javascripts/routers/dashboard_router.js.coffee
index 513b2f04..513b2f04 100644
--- a/app/assets/javascripts/backbone/routers/dashboard_router.js.coffee
+++ b/app/assets/javascripts/routers/dashboard_router.js.coffee
diff --git a/app/assets/javascripts/backbone/routers/profile_router.js.coffee b/app/assets/javascripts/routers/profile_router.js.coffee
index cf83d4ae..cf83d4ae 100644
--- a/app/assets/javascripts/backbone/routers/profile_router.js.coffee
+++ b/app/assets/javascripts/routers/profile_router.js.coffee
diff --git a/app/assets/javascripts/backbone/routers/tutorials_router.js.coffee b/app/assets/javascripts/routers/tutorials_router.js.coffee
index 9c942e88..9c942e88 100644
--- a/app/assets/javascripts/backbone/routers/tutorials_router.js.coffee
+++ b/app/assets/javascripts/routers/tutorials_router.js.coffee
diff --git a/app/assets/javascripts/service/embedly_service.js.coffee b/app/assets/javascripts/service/embedly_service.js.coffee
index 634bc4d0..d447267c 100644
--- a/app/assets/javascripts/service/embedly_service.js.coffee
+++ b/app/assets/javascripts/service/embedly_service.js.coffee
@@ -1,3 +1,3 @@
-class window.EmbedlyService
+class CakeSide.EmbedlyService
retrieve_info_on: (url, callback) ->
$.embedly.extract(url, {}).progress(callback)
diff --git a/app/assets/javascripts/backbone/templates/.gitkeep b/app/assets/javascripts/templates/.gitkeep
index e69de29b..e69de29b 100644
--- a/app/assets/javascripts/backbone/templates/.gitkeep
+++ b/app/assets/javascripts/templates/.gitkeep
diff --git a/app/assets/javascripts/backbone/templates/cakes/cake.jst.ejs b/app/assets/javascripts/templates/my/cakes/cake.jst.ejs
index e9800ad5..e9800ad5 100644
--- a/app/assets/javascripts/backbone/templates/cakes/cake.jst.ejs
+++ b/app/assets/javascripts/templates/my/cakes/cake.jst.ejs
diff --git a/app/assets/javascripts/templates/my/cakes/delete_modal.jst.ejs b/app/assets/javascripts/templates/my/cakes/delete_modal.jst.ejs
new file mode 100644
index 00000000..370109d5
--- /dev/null
+++ b/app/assets/javascripts/templates/my/cakes/delete_modal.jst.ejs
@@ -0,0 +1,32 @@
+<div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title">Are you ABSOLUTELY sure?</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <% if (hasError()) { %>
+ <div class="alert alert-dismissible fade show alert-danger" role="alert">
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ <strong>Error!</strong> <%= errorMessage %>
+ </div>
+ <% } %>
+ <p>
+ This action <b>CANNOT</b> be undone.
+ This will permanently delete <em><%= name %></em> photos, and comments.
+ </p>
+ <p>
+ Please type in the name of the cake to confirm.
+ <input id="confirmation-textbox" type="text" class="form-control" autofocus="" required="" aria-label="Type in the name of the cake to confirm that you want to delete this repository.">
+ </p>
+ </div>
+ <div class="modal-footer">
+ <button id="remove-button" type="button" class="btn btn-danger" disabled="disabled">I understand the consequences, delete this cake</button>
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ </div>
+ </div>
+</div>
diff --git a/app/assets/javascripts/templates/my/cakes/edit.jst.ejs b/app/assets/javascripts/templates/my/cakes/edit.jst.ejs
new file mode 100644
index 00000000..cab7fc92
--- /dev/null
+++ b/app/assets/javascripts/templates/my/cakes/edit.jst.ejs
@@ -0,0 +1,39 @@
+<div class="row">
+ <div class="col">
+ <h1><small>Edit</small> <%= cake.name %></h1>
+ <hr />
+ <form id="edit-cake" name="cake" class="form-horizontal">
+ <div class="form-group">
+ <a class="btn btn-primary add-photo">Upload Photo...</a>
+ </div>
+ <div class="form-group">
+ <label class="" for="cake_name">Name</label>
+ <input class="form-control" id="cake_name" name="name" type="text" value="<%= cake.name %>" required="required" />
+ </div>
+ <div class="form-group">
+ <label for="category_id">Category</label>
+ <select id="cake_category_id" name="category_id" class="form-control">
+ <% _.each(categories, function(category) { %>
+ <option value="<%= category.id %>"><%= category.name %></option>
+ <% }); %>
+ </select>
+ </div>
+ <div class="form-group">
+ <label class="" for="cake_story">Description</label>
+ <textarea class="form-control" id="cake_story" name="story" rows="3"><%= cake.story %></textarea>
+ </div>
+ <div class="form-group">
+ <label for="cake_tags" class="">Tags</label>
+ <% if (typeof(cake.tags) === "string") { %>
+ <% tags = _.map(cake.tags.split(','), function(x){ return x; }) %>
+ <% } else { %>
+ <% tags = _.map(cake.tags, function(x){ return x.name; }) %>
+ <% } %>
+ <input name="cake_tags" type="text" id="cake_tags" value="<%= tags %>" class="form-control" autocomplete="off" />
+ </div>
+ <button id='save-button' type="submit" class="btn btn-primary">Publish</button>
+ <a href="#cakes/<%= cake.id %>" class="btn btn-secondary">Cancel</a>
+ </form>
+ </div>
+</div>
+<div class="card-columns"></div>
diff --git a/app/assets/javascripts/templates/my/cakes/new.jst.ejs b/app/assets/javascripts/templates/my/cakes/new.jst.ejs
new file mode 100644
index 00000000..cc26c43b
--- /dev/null
+++ b/app/assets/javascripts/templates/my/cakes/new.jst.ejs
@@ -0,0 +1,18 @@
+<h1>Share cake</h1>
+<hr />
+<form id="new-cake" name="cake" class="form-horizontal">
+ <div class="form-group">
+ <label for="cake_name">Name</label>
+ <input class="form-control" id="cake_name" name="name" type="text" required="required">
+ </div>
+ <div class="form-group">
+ <label for="category_id">Category</label>
+ <select id="cake_category_id" name="category_id" class="form-control" required="required">
+ <% _.each(categories, function(category) { %>
+ <option value="<%= category.id %>"><%= category.name %></option>
+ <% }); %>
+ </select>
+ </div>
+ <button id='save-button' type="submit" class="btn btn-primary">Create</button>
+ <a href="#cakes" class="btn btn-secondary">Cancel</a>
+</form>
diff --git a/app/assets/javascripts/backbone/templates/cakes/no_cakes.jst.ejs b/app/assets/javascripts/templates/my/cakes/no_cakes.jst.ejs
index 9d8787ba..9d8787ba 100644
--- a/app/assets/javascripts/backbone/templates/cakes/no_cakes.jst.ejs
+++ b/app/assets/javascripts/templates/my/cakes/no_cakes.jst.ejs
diff --git a/app/assets/javascripts/templates/my/cakes/show.jst.ejs b/app/assets/javascripts/templates/my/cakes/show.jst.ejs
new file mode 100644
index 00000000..45fb0cd8
--- /dev/null
+++ b/app/assets/javascripts/templates/my/cakes/show.jst.ejs
@@ -0,0 +1,26 @@
+<div class="row">
+ <div class="col">
+ <h1><a href="#cakes/<%= id %>"><%= name %></a></h1>
+ <hr />
+ <% if (typeof(tags) === "string") { %>
+ <% _.each(tags.split(','), function(tag){ %>
+ <a href="<%= Routes.creation_tag_path(tag) %>">
+ <span class="badge badge-info"><%= tag %></span>
+ </a>
+ <% }); %>
+ <% } else { %>
+ <% _.each(tags, function(tag){ %>
+ <a href="<%= Routes.creation_tag_path(tag.name) %>">
+ <span class="badge badge-info"><%= tag.name %></span>
+ </a>
+ <% }); %>
+ <% } %>
+ <div class="float-right">
+ <a href="#cakes/<%= id %>/edit" class="btn btn-primary">Edit</a>
+ <a class="add-photo btn btn-secondary">Add Photo</a>
+ <a id="remove-cake-button" class="btn btn-danger">Delete this cake</a>
+ </div>
+ <p><%= story %></p>
+ </div>
+</div>
+<div class="card-columns"></div>
diff --git a/app/assets/javascripts/templates/my/cakes/thumbnail.jst.ejs b/app/assets/javascripts/templates/my/cakes/thumbnail.jst.ejs
new file mode 100644
index 00000000..7ae1bef3
--- /dev/null
+++ b/app/assets/javascripts/templates/my/cakes/thumbnail.jst.ejs
@@ -0,0 +1,8 @@
+<% if (uploading()) { %>
+ <div class="progress">
+ <div class="progress-bar progress-bar-striped progress-bar-animated bg-success" role="progressbar" style="width: <%= percentComplete %>%" aria-valuenow="<%= percentComplete %>" aria-valuemin="<%= percentComplete %>" aria-valuemax="100"><%= percentComplete %>%</div>
+ </div>
+<% } %>
+<a href="#cakes/<%= cake_id %>/photos/<%= id %>">
+ <img src="<%= thumb_url %>" class="card-img-top" />
+</a>
diff --git a/app/assets/javascripts/templates/my/photos/new-modal.jst.ejs b/app/assets/javascripts/templates/my/photos/new-modal.jst.ejs
new file mode 100644
index 00000000..c138b423
--- /dev/null
+++ b/app/assets/javascripts/templates/my/photos/new-modal.jst.ejs
@@ -0,0 +1,24 @@
+<div class="modal-dialog" role="document">
+ <div class="modal-content">
+ <div class="modal-header">
+ <h5 class="modal-title">Upload Photo</h5>
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+ </div>
+ <div class="modal-body">
+ <form class="form-horizontal">
+ <span class="btn btn-default btn-file">
+ <input id="photo-attachment" name="attachment" type="file" accept="image/*">
+ </span>
+ <input id="watermark" name="watermark" maxlength="30" size="30" type="text" placeholder="watermark" class="form-control" />
+ <small class="form-text muted"> on CakeSide.com</small>
+ </form>
+ <img id="preview-image" src="#" alt="your image" class="hide" />
+ </div>
+ <div class="modal-footer">
+ <button id="upload-photo-button" type="button" class="btn btn-primary">Save changes</button>
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+ </div>
+ </div>
+</div>
diff --git a/app/assets/javascripts/templates/my/profiles/show.jst.ejs b/app/assets/javascripts/templates/my/profiles/show.jst.ejs
new file mode 100644
index 00000000..7e861e11
--- /dev/null
+++ b/app/assets/javascripts/templates/my/profiles/show.jst.ejs
@@ -0,0 +1,45 @@
+<h1>Public Profile</h1>
+<hr />
+<div id="status-message" class="alert alert-dismissible alert-danger hide" role="alert">
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
+ <span aria-hidden="true">&times;</span>
+ </button>
+</div>
+
+<form id="profile-form" class="form-horizontal">
+ <div class="form-group">
+ <label class="" for="user_name">Name</label>
+ <input class="form-control" id="user_name" name="user[name]" type="text" value="<%= name %>" required="required">
+ <span class="help-inline"></span>
+ </div>
+ <div class="form-group">
+ <label class="" for="user_email">Email</label>
+ <input class="form-control" id="user_email" name="user[email]" type="email" value="<%= email %>" required="required">
+ <span class="help-inline"></span>
+ </div>
+ <div class="form-group">
+ <label class="" for="user_website">URL</label>
+ <input class="form-control url" id="user_website" name="user[website]" placeholder="https://www.cakeside.com" type="url" value="<%= website %>">
+ <span class="help-inline"></span>
+ </div>
+ <div class="form-group">
+ <label class="" for="user_city">Location</label>
+ <input class="form-control" id="user_city" name="user[city]" type="text" value="<%= city %>">
+ <span class="help-inline"></span>
+ </div>
+ <div class="form-group">
+ <label class="" for="user_twitter">Twitter username</label>
+ <div class="input-group">
+ <span class="input-group-addon">@</span>
+ <input class="form-control" id="user_twitter" maxlength="15" name="user[twitter]" placeholder="" size="255" type="text" value="<%= twitter %>">
+ </div>
+ <span class="help-inline"></span>
+ </div>
+ <div class="form-group">
+ <label class="" for="user_facebook">Facebook</label>
+ <input class="form-control" id="user_facebook" maxlength="255" name="user[facebook]" placeholder="https://www.facebook.com/your_profile" size="255" type="text" value="<%= facebook %>">
+ <span class="help-inline"></span>
+ </div>
+ <input id="save-button" type="submit" class="btn btn-primary" value="Update profile">
+ <button id="cancel-button" type="reset" class="btn">Cancel</button>
+</form>
diff --git a/app/assets/javascripts/templates/my/tutorials/new.jst.ejs b/app/assets/javascripts/templates/my/tutorials/new.jst.ejs
new file mode 100644
index 00000000..965a62f1
--- /dev/null
+++ b/app/assets/javascripts/templates/my/tutorials/new.jst.ejs
@@ -0,0 +1,23 @@
+<h1>Share a tutorial link</h1>
+<hr />
+<form id="new-tutorial" name='tutorial' class='form-horizontal'>
+ <div id="url-group" class="form-group">
+ <label for="tutorial_url">Tutorial URL</label>
+ <input class="form-control" id="tutorial_url" name="url" type="text" value="<%= url %>" placeholder="http://www.cakeside.com/" autofocus>
+ </div>
+ <div class="form-group">
+ <label for="tags">Tags</label>
+ <input type="text" id="tutorial_tags" name="tags" value="" class="form-control" autocomplete="off" />
+ <p class="help-block"> Note: help people find this tutorial by adding some keyword tags </p>
+ </div>
+ <button id='save-button' type="submit" class="btn btn-primary">Save</button>
+ <a href="#tutorials" class="btn btn-secondary">Cancel</a>
+</form>
+<div id="preview-panel" class="thumbnail">
+ <img class="embed-thumb" src="<%= image_url %>" />
+ <div class="caption">
+ <h3 class="tutorial-heading"><%= heading %></h3>
+ <p id="tag-list"></p>
+ <p class="tutorial-description"><%= description %></p>
+ </div>
+</div>
diff --git a/app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs b/app/assets/javascripts/templates/my/tutorials/no_tutorials.jst.ejs
index ab9705b1..ab9705b1 100644
--- a/app/assets/javascripts/backbone/templates/tutorials/no_tutorials.jst.ejs
+++ b/app/assets/javascripts/templates/my/tutorials/no_tutorials.jst.ejs
diff --git a/app/assets/javascripts/backbone/templates/tutorials/show.jst.ejs b/app/assets/javascripts/templates/my/tutorials/show.jst.ejs
index a0ebe2b9..7dcbea00 100644
--- a/app/assets/javascripts/backbone/templates/tutorials/show.jst.ejs
+++ b/app/assets/javascripts/templates/my/tutorials/show.jst.ejs
@@ -1,5 +1,5 @@
-<div class="row-fluid">
- <div class="span12">
+<div class="row">
+ <div class="col">
<h3><a href="#tutorials/<%= id %>"><%= heading %></a> <small><%= displayDate(created_at) %></small></h3>
<a href="#tutorials/<%= id %>">
<img src="<%= image_url %>" />
diff --git a/app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs b/app/assets/javascripts/templates/my/tutorials/tutorial.jst.ejs
index 431f24b6..255344d7 100644
--- a/app/assets/javascripts/backbone/templates/tutorials/tutorial.jst.ejs
+++ b/app/assets/javascripts/templates/my/tutorials/tutorial.jst.ejs
@@ -1,4 +1,4 @@
-<a href="#tutorials/<%= id %>" class="pull-left">
+<a href="#tutorials/<%= id %>" class="float-left">
<img class="media-object" data-src="<%= image_url %>" alt="64x64" style="width: 64px; height: 64px;" src="<%= image_url %>">
</a>
<div class="media-body">
diff --git a/app/assets/javascripts/backbone/views/.gitkeep b/app/assets/javascripts/views/.gitkeep
index e69de29b..e69de29b 100644
--- a/app/assets/javascripts/backbone/views/.gitkeep
+++ b/app/assets/javascripts/views/.gitkeep
diff --git a/app/assets/javascripts/views/cakes/show_page.js.coffee b/app/assets/javascripts/views/cakes/show_page.js.coffee
new file mode 100644
index 00000000..c83a3c45
--- /dev/null
+++ b/app/assets/javascripts/views/cakes/show_page.js.coffee
@@ -0,0 +1,7 @@
+#= require infrastructure/auto_view
+
+class CakeSide.Views.Cakes.ShowPage extends CakeSide.AutoView
+ @viewName "cakes#show"
+
+ render: ->
+ console.log(@name)
diff --git a/app/assets/javascripts/backbone/views/disqus_view.js.coffee b/app/assets/javascripts/views/disqus_view.js.coffee
index 1379691a..1379691a 100644
--- a/app/assets/javascripts/backbone/views/disqus_view.js.coffee
+++ b/app/assets/javascripts/views/disqus_view.js.coffee
diff --git a/app/assets/javascripts/backbone/views/error_view.js.coffee b/app/assets/javascripts/views/error_view.js.coffee
index 86f907e0..0d232fca 100644
--- a/app/assets/javascripts/backbone/views/error_view.js.coffee
+++ b/app/assets/javascripts/views/error_view.js.coffee
@@ -1,5 +1,3 @@
-CakeSide.Views.Cakes ||= {}
-
class CakeSide.Views.ErrorView extends Backbone.View
initialize: (options) ->
@attributesWithErrors = options.attributesWithErrors
diff --git a/app/assets/javascripts/views/index.js.coffee b/app/assets/javascripts/views/index.js.coffee
new file mode 100644
index 00000000..2ca99abd
--- /dev/null
+++ b/app/assets/javascripts/views/index.js.coffee
@@ -0,0 +1,9 @@
+#= require_self
+#= require_tree .
+
+CakeSide.Views.Cakes ||= {}
+CakeSide.Views.My ||= {}
+CakeSide.Views.My.Cakes ||= {}
+CakeSide.Views.My.Photos ||= {}
+CakeSide.Views.My.Profiles ||= {}
+CakeSide.Views.My.Tutorials ||= {}
diff --git a/app/assets/javascripts/backbone/views/cakes/cake_view.js.coffee b/app/assets/javascripts/views/my/cakes/cake_view.js.coffee
index f0faf97e..86c83a1e 100644
--- a/app/assets/javascripts/backbone/views/cakes/cake_view.js.coffee
+++ b/app/assets/javascripts/views/my/cakes/cake_view.js.coffee
@@ -1,7 +1,5 @@
-CakeSide.Views.Cakes ||= {}
-
-class CakeSide.Views.Cakes.CakeView extends Marionette.ItemView
- template: JST["backbone/templates/cakes/cake"]
+class CakeSide.Views.My.Cakes.CakeView extends Marionette.ItemView
+ template: JST["templates/my/cakes/cake"]
tagName: 'div'
className: 'media'
templateHelpers:
diff --git a/app/assets/javascripts/backbone/views/cakes/delete_cake_modal_view.js.coffee b/app/assets/javascripts/views/my/cakes/delete_cake_modal_view.js.coffee
index 85253924..447932ac 100644
--- a/app/assets/javascripts/backbone/views/cakes/delete_cake_modal_view.js.coffee
+++ b/app/assets/javascripts/views/my/cakes/delete_cake_modal_view.js.coffee
@@ -1,7 +1,5 @@
-CakeSide.Views.Cakes ||= {}
-
-class CakeSide.Views.Cakes.DeleteCakeModalView extends Marionette.ItemView
- template: JST["backbone/templates/cakes/delete_modal"]
+class CakeSide.Views.My.Cakes.DeleteCakeModalView extends Marionette.ItemView
+ template: JST["templates/my/cakes/delete_modal"]
ui:
remove_button: "#remove-button"
confirmation_textbox: '#confirmation-textbox'
diff --git a/app/assets/javascripts/backbone/views/cakes/edit_view.js.coffee b/app/assets/javascripts/views/my/cakes/edit_view.js.coffee
index c568ca95..f3957598 100644
--- a/app/assets/javascripts/backbone/views/cakes/edit_view.js.coffee
+++ b/app/assets/javascripts/views/my/cakes/edit_view.js.coffee
@@ -1,10 +1,9 @@
-#= require backbone/views/cakes/thumbnail_view
-CakeSide.Views.Cakes ||= {}
+#= require views/my/cakes/thumbnail_view
-class CakeSide.Views.Cakes.EditView extends Marionette.CompositeView
- template : JST["backbone/templates/cakes/edit"]
- childView: CakeSide.Views.Cakes.ThumbnailView
- childViewContainer: '.thumbnails'
+class CakeSide.Views.My.Cakes.EditView extends Marionette.CompositeView
+ template : JST["templates/my/cakes/edit"]
+ childView: CakeSide.Views.My.Cakes.ThumbnailView
+ childViewContainer: '.card-columns'
ui:
name: "#cake_name"
description: "#cake_story"
diff --git a/app/assets/javascripts/views/my/cakes/index_view.js.coffee b/app/assets/javascripts/views/my/cakes/index_view.js.coffee
new file mode 100644
index 00000000..45805332
--- /dev/null
+++ b/app/assets/javascripts/views/my/cakes/index_view.js.coffee
@@ -0,0 +1,7 @@
+#= require views/my/cakes/no_cakes_view
+
+class CakeSide.Views.My.Cakes.IndexView extends Marionette.CollectionView
+ childView: CakeSide.Views.My.Cakes.CakeView
+ emptyView: CakeSide.Views.My.Cakes.NoCakesView
+ className: ''
+ tagName: 'div'
diff --git a/app/assets/javascripts/backbone/views/cakes/new_view.js.coffee b/app/assets/javascripts/views/my/cakes/new_view.js.coffee
index 321be655..6988af8a 100644
--- a/app/assets/javascripts/backbone/views/cakes/new_view.js.coffee
+++ b/app/assets/javascripts/views/my/cakes/new_view.js.coffee
@@ -1,7 +1,5 @@
-CakeSide.Views.Cakes ||= {}
-
-class CakeSide.Views.Cakes.NewView extends Marionette.ItemView
- template: JST["backbone/templates/cakes/new"]
+class CakeSide.Views.My.Cakes.NewView extends Marionette.ItemView
+ template: JST["templates/my/cakes/new"]
ui:
name: "#cake_name"
category: "#cake_category_id"
diff --git a/app/assets/javascripts/views/my/cakes/no_cakes_view.js.coffee b/app/assets/javascripts/views/my/cakes/no_cakes_view.js.coffee
new file mode 100644
index 00000000..17f190cc
--- /dev/null
+++ b/app/assets/javascripts/views/my/cakes/no_cakes_view.js.coffee
@@ -0,0 +1,3 @@
+class CakeSide.Views.My.Cakes.NoCakesView extends Marionette.ItemView
+ template: JST["templates/my/cakes/no_cakes"]
+ tagName: 'li'
diff --git a/app/assets/javascripts/backbone/views/cakes/show_view.js.coffee b/app/assets/javascripts/views/my/cakes/show_view.js.coffee
index d180b80a..6050a9e6 100644
--- a/app/assets/javascripts/backbone/views/cakes/show_view.js.coffee
+++ b/app/assets/javascripts/views/my/cakes/show_view.js.coffee
@@ -1,10 +1,9 @@
-#= require backbone/views/cakes/thumbnail_view
-CakeSide.Views.Cakes ||= {}
+#= require views/my/cakes/thumbnail_view
-class CakeSide.Views.Cakes.ShowView extends Marionette.CompositeView
- template: JST["backbone/templates/cakes/show"]
- childView: CakeSide.Views.Cakes.ThumbnailView
- childViewContainer: '.thumbnails'
+class CakeSide.Views.My.Cakes.ShowView extends Marionette.CompositeView
+ template: JST["templates/my/cakes/show"]
+ childView: CakeSide.Views.My.Cakes.ThumbnailView
+ childViewContainer: '.card-columns'
events:
"click .add-photo": "launchAddPhoto"
diff --git a/app/assets/javascripts/views/my/cakes/thumbnail_view.js.coffee b/app/assets/javascripts/views/my/cakes/thumbnail_view.js.coffee
new file mode 100644
index 00000000..fda5ea13
--- /dev/null
+++ b/app/assets/javascripts/views/my/cakes/thumbnail_view.js.coffee
@@ -0,0 +1,11 @@
+class CakeSide.Views.My.Cakes.ThumbnailView extends Marionette.ItemView
+ template: JST['templates/my/cakes/thumbnail']
+ tagName: 'div'
+ className: 'card'
+ modelEvents:
+ 'sync': 'render'
+ 'change:percentComplete': 'render'
+
+ templateHelpers:
+ uploading: ->
+ typeof(@percentComplete) != "undefined" && @percentComplete != 100
diff --git a/app/assets/javascripts/backbone/views/photos/new_modal_view.js.coffee b/app/assets/javascripts/views/my/photos/new_modal_view.js.coffee
index 0972bc52..b2c868c5 100644
--- a/app/assets/javascripts/backbone/views/photos/new_modal_view.js.coffee
+++ b/app/assets/javascripts/views/my/photos/new_modal_view.js.coffee
@@ -1,7 +1,5 @@
-CakeSide.Views.Photos ||= {}
-
-class CakeSide.Views.Photos.NewModalView extends Marionette.ItemView
- template: JST["backbone/templates/photos/new-modal"]
+class CakeSide.Views.My.Photos.NewModalView extends Marionette.ItemView
+ template: JST["templates/my/photos/new-modal"]
ui:
watermark: '#watermark'
upload_button: "#upload-photo-button"
@@ -17,9 +15,6 @@ class CakeSide.Views.Photos.NewModalView extends Marionette.ItemView
@cake = options.cake
@model = new @collection.model(cake_id: @cake.id)
- onRender: ->
- @$('.tooltip-item').tooltip()
-
save: (e) ->
e.preventDefault()
e.stopPropagation()
diff --git a/app/assets/javascripts/backbone/views/profiles/show_view.js.coffee b/app/assets/javascripts/views/my/profiles/show_view.js.coffee
index ef694f4b..91076e5e 100644
--- a/app/assets/javascripts/backbone/views/profiles/show_view.js.coffee
+++ b/app/assets/javascripts/views/my/profiles/show_view.js.coffee
@@ -1,7 +1,5 @@
-CakeSide.Views.Profiles ||= {}
-
-class CakeSide.Views.Profiles.ShowView extends Marionette.ItemView
- template: JST["backbone/templates/profiles/show"]
+class CakeSide.Views.My.Profiles.ShowView extends Marionette.ItemView
+ template: JST["templates/my/profiles/show"]
ui:
name: '#user_name'
email: '#user_email'
@@ -37,8 +35,8 @@ class CakeSide.Views.Profiles.ShowView extends Marionette.ItemView
savedSuccessfully: (profile) =>
@disableSaveButton()
- @ui.status.removeClass('hidden')
- @ui.status.removeClass('alert-error')
+ @ui.status.removeClass('hide')
+ @ui.status.removeClass('alert-danger')
@ui.status.html("Saved!")
couldNotSave: =>
@@ -52,12 +50,12 @@ class CakeSide.Views.Profiles.ShowView extends Marionette.ItemView
displayError: ->
@disableSaveButton()
- @ui.status.addClass('alert-error')
- @ui.status.removeClass('hidden')
+ @ui.status.addClass('alert-danger')
+ @ui.status.removeClass('hide')
@ui.status.html(@model.validationError)
refreshStatus: ->
- @ui.status.addClass('hidden')
+ @ui.status.addClass('hide')
@enableSaveButton()
@model.set('name', @ui.name.val())
@model.set('email', @ui.email.val())
@@ -69,4 +67,3 @@ class CakeSide.Views.Profiles.ShowView extends Marionette.ItemView
cancel: ->
@enableSaveButton()
-
diff --git a/app/assets/javascripts/views/my/tutorials/index_view.js.coffee b/app/assets/javascripts/views/my/tutorials/index_view.js.coffee
new file mode 100644
index 00000000..83692962
--- /dev/null
+++ b/app/assets/javascripts/views/my/tutorials/index_view.js.coffee
@@ -0,0 +1,8 @@
+#= require views/my/tutorials/no_tutorials_view
+#= require views/my/tutorials/tutorial_view
+
+class CakeSide.Views.My.Tutorials.IndexView extends Marionette.CollectionView
+ childView: CakeSide.Views.My.Tutorials.TutorialView
+ emptyView: CakeSide.Views.My.Tutorials.NoTutorialsView
+ className: ''
+ tagName: 'div'
diff --git a/app/assets/javascripts/backbone/views/tutorials/new_view.js.coffee b/app/assets/javascripts/views/my/tutorials/new_view.js.coffee
index e8ba976f..4c915fc7 100644
--- a/app/assets/javascripts/backbone/views/tutorials/new_view.js.coffee
+++ b/app/assets/javascripts/views/my/tutorials/new_view.js.coffee
@@ -1,6 +1,7 @@
#= require service/embedly_service
-class CakeSide.Views.Tutorials.NewView extends Marionette.ItemView
- template: JST['backbone/templates/tutorials/new']
+
+class CakeSide.Views.My.Tutorials.NewView extends Marionette.ItemView
+ template: JST['templates/my/tutorials/new']
ui:
url: '#tutorial_url'
url_group: '#url-group'
@@ -18,7 +19,7 @@ class CakeSide.Views.Tutorials.NewView extends Marionette.ItemView
initialize: ->
@model = new @collection.model()
- @service = new EmbedlyService()
+ @service = new CakeSide.EmbedlyService()
loadUrl: ->
if @model.isValidUrl(@ui.url.val())
diff --git a/app/assets/javascripts/views/my/tutorials/no_tutorials_view.js.coffee b/app/assets/javascripts/views/my/tutorials/no_tutorials_view.js.coffee
new file mode 100644
index 00000000..9b2cf3c5
--- /dev/null
+++ b/app/assets/javascripts/views/my/tutorials/no_tutorials_view.js.coffee
@@ -0,0 +1,3 @@
+class CakeSide.Views.My.Tutorials.NoTutorialsView extends Marionette.ItemView
+ template: JST['templates/my/tutorials/no_tutorials']
+ tagName: 'li'
diff --git a/app/assets/javascripts/views/my/tutorials/show_view.js.coffee b/app/assets/javascripts/views/my/tutorials/show_view.js.coffee
new file mode 100644
index 00000000..8ea4a484
--- /dev/null
+++ b/app/assets/javascripts/views/my/tutorials/show_view.js.coffee
@@ -0,0 +1,5 @@
+class CakeSide.Views.My.Tutorials.ShowView extends Marionette.ItemView
+ template: JST["templates/my/tutorials/show"]
+ templateHelpers:
+ displayDate: (date) ->
+ date
diff --git a/app/assets/javascripts/views/my/tutorials/tutorial_view.js.coffee b/app/assets/javascripts/views/my/tutorials/tutorial_view.js.coffee
new file mode 100644
index 00000000..99631ba2
--- /dev/null
+++ b/app/assets/javascripts/views/my/tutorials/tutorial_view.js.coffee
@@ -0,0 +1,8 @@
+class CakeSide.Views.My.Tutorials.TutorialView extends Marionette.ItemView
+ template: JST['templates/my/tutorials/tutorial']
+ tagName: 'div'
+ className: 'media'
+
+ templateHelpers:
+ displayDate: (date) ->
+ new Date(date).toLocaleDateString()