Commit 3809550d

mo khan <mo@mokhan.ca>
2014-11-02 16:02:53
try to improve the backbone stuff.
1 parent adefba9
app/assets/javascripts/backbone/controllers/cakes_controller.js.coffee
@@ -3,11 +3,11 @@ class CakeSide.Controllers.CakesController extends Marionette.Controller
   initialize: (options) ->
     @content_region = CakeSide.Application.content_region
     @cakes = CakeSide.Application.request('CakesRepository')
-    @comment_view = CakeSide.Application.request('CommentView')
+    #@comment_view = CakeSide.Application.request('CommentView')
 
   index: ->
     @selectTab()
-    @comment_view.hide()
+    #@comment_view.hide()
     @content_region.show(new @views.IndexView(collection: @cakes))
 
   show: (id, photo_id) ->
@@ -21,13 +21,13 @@ class CakeSide.Controllers.CakesController extends Marionette.Controller
 
   newCake: ->
     @selectTab()
-    @comment_view.hide()
+    #@comment_view.hide()
     @content_region.show(new @views.NewView(collection: @cakes))
 
   edit: (id) ->
     @selectTab()
     @content_region.show(new @views.EditView(model: @cakes.get(id)))
-    @comment_view.hide()
+    #@comment_view.hide()
 
   selectTab: ->
     $('.nav-list').children().removeClass('active')
app/assets/javascripts/backbone/controllers/dashboard_controller.js.coffee
@@ -1,6 +1,6 @@
 class CakeSide.Controllers.DashboardController extends Marionette.Controller
   initialize: (options) ->
-    @comment_view = CakeSide.Application.request('CommentView')
+    #@comment_view = CakeSide.Application.request('CommentView')
 
   index: ->
-    @comment_view.hide()
+    #@comment_view.hide()
app/assets/javascripts/backbone/controllers/profile_controller.js.coffee
@@ -2,11 +2,11 @@ class CakeSide.Controllers.ProfileController extends Marionette.Controller
   views: CakeSide.Views.Profiles
   initialize: (options) ->
     @content_region = CakeSide.Application.content_region
-    @comment_view = CakeSide.Application.request('CommentView')
+    #@comment_view = CakeSide.Application.request('CommentView')
 
   show: (id) ->
     @selectTab()
-    @comment_view.hide()
+    #@comment_view.hide()
     profile = new CakeSide.Models.Profile
       id: id
     profile.fetch
app/assets/javascripts/backbone/controllers/tutorials_controller.js.coffee
@@ -3,26 +3,26 @@ class CakeSide.Controllers.TutorialsController extends Marionette.Controller
   initialize: (options) ->
     @content_region = CakeSide.Application.content_region
     @tutorials = CakeSide.Application.request('TutorialsRepository')
-    @comment_view = CakeSide.Application.request('CommentView')
+    #@comment_view = CakeSide.Application.request('CommentView')
 
   index: ->
     @selectTab()
-    @comment_view.hide()
+    #@comment_view.hide()
     @content_region.show(new @views.IndexView(collection: @tutorials))
 
   new: ->
     @selectTab()
-    @comment_view.hide()
+    #@comment_view.hide()
     @content_region.show(new @views.NewView(collection: @tutorials))
 
   show: (id) ->
     @selectTab()
     tutorial = @tutorials.get(id)
     @content_region.show(new @views.ShowView(model: tutorial))
-    @comment_view.render
-      identifier: "t-#{tutorial.id}"
-      title: tutorial.get('heading')
-      url: tutorial.get('url')
+    #@comment_view.render
+      #identifier: "t-#{tutorial.id}"
+      #title: tutorial.get('heading')
+      #url: tutorial.get('url')
 
   selectTab: ->
     $('.nav-list').children().removeClass('active')
app/assets/javascripts/backbone/templates/cakes/cake.jst.ejs
@@ -5,11 +5,9 @@
   </a>
 <% } %>
 <div class="media-body">
-  <h4 class="media-heading"><%= name %></h4>
-  <%= story %>
+  <h4 class="media-heading"><a href="#cakes/<%= id %>"><%= name %></a></h4>
   <p>
     <a href="#cakes/<%= id %>/edit"><i class="fa fa-edit"></i>edit</a>
     <a href="<%= Routes.cake_favorites_path(id) %>"><i class="fa fa-heart"></i>fanclub</a>
-    <span class="badge badge-warning"><i class="fa fa-comment"></i><a href="/creations/<%= id %>#disqus_thread" data-disqus-identifier="c-<%= id %>"></a></span>
   </p>
 </div>
app/assets/javascripts/backbone/templates/cakes/edit.jst.ejs
@@ -43,17 +43,6 @@
           <input name="cake_tags" type="text" id="cake_tags" value="<%= tags %>" class="input-xxlarge" autocomplete="off" />
           </div>
         </div>
-        <div class="control-group">
-          <label for="cake_tools" class="control-label">Tools</label>
-          <div class="controls">
-          <% if (typeof(cake.tools) === "string") { %>
-            <% tools = _.map(cake.tools.split(','), function(x){ return x; }) %>
-          <% } else { %>
-            <% tools = _.map(cake.tools, function(x){ return x.name; }) %>
-          <% } %>
-          <input name="cake_tools" type="text" id="cake_tools" value="<%= tools %>" 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>
app/assets/javascripts/backbone/views/cakes/edit_view.js.coffee
@@ -10,7 +10,6 @@ class CakeSide.Views.Cakes.EditView extends Marionette.CompositeView
     description: "#cake_story"
     category: "#cake_category_id"
     tags: "#cake_tags"
-    tools: "#cake_tools"
     save_button: '#save-button'
 
   modelEvents:
@@ -38,7 +37,6 @@ class CakeSide.Views.Cakes.EditView extends Marionette.CompositeView
   onRender: ->
     @$("#cake_category_id").val(@model.category_id())
     @ui.tags.tagit({ availableTags: ALL_TAGS })
-    @ui.tools.tagit({ availableTags: ALL_TOOLS })
     @disableSaveButton()
 
   savedSuccessfully: (cake) =>
@@ -57,7 +55,6 @@ class CakeSide.Views.Cakes.EditView extends Marionette.CompositeView
     @model.set('story', @ui.description.val())
     @model.set('category_id', @ui.category.val())
     @model.set('tags', @ui.tags.val())
-    @model.set('tools', @ui.tools.val())
     @model.isValid()
 
   displayError: (model, error) ->
app/assets/javascripts/backbone/cakeside.js.coffee
@@ -41,10 +41,10 @@ window.CakeSide =
     @tutorials = new CakeSide.Collections.TutorialsCollection()
     @tutorials.fetch(reset: true)
 
-    @disqus_view = new CakeSide.Views.DisqusView
-      disqus_shortname: data.disqus_shortname
-    CakeSide.Application.reqres.setHandler 'CommentView', =>
-      @disqus_view
+    #@disqus_view = new CakeSide.Views.DisqusView
+      #disqus_shortname: data.disqus_shortname
+    #CakeSide.Application.reqres.setHandler 'CommentView', =>
+      #@disqus_view
     CakeSide.Application.reqres.setHandler 'CakesRepository', =>
       @cakes
     CakeSide.Application.reqres.setHandler 'CategoriesRepository', =>
app/assets/javascripts/application.js
@@ -11,6 +11,7 @@
 // about supported directives.
 //
 //= require jquery
+//= require jquery.turbolinks
 //= require jquery-migrate
 //= require jquery_ujs
 //= require turbolinks
app/controllers/my/kitchens_controller.rb
@@ -0,0 +1,7 @@
+module My
+  class KitchensController < BaseController
+    def show
+      @tags = Tag.unique_tags
+    end
+  end
+end
app/helpers/my/dashboard_helper.rb
@@ -1,11 +1,4 @@
 module My
   module DashboardHelper
-    def unique_tags
-      Tag.unique_tags
-    end
-
-    def unique_tools
-      Tag.unique_tools
-    end
   end
 end
app/models/creation.rb
@@ -7,7 +7,6 @@ class Creation < ActiveRecord::Base
   has_many :favorites, :dependent => :destroy
   has_many :comments, dependent: :destroy
   acts_as_taggable_on :tags
-  acts_as_taggable_on :tools
   alias_method :author, :user
 
   default_scope -> { order(created_at: :desc) }
app/models/tag.rb
@@ -4,18 +4,6 @@ class Tag
       .joins(:taggings)
       .where(taggings: { context: 'tags' })
       .order(:name)
-      .pluck(:name)
       .uniq
   end
-
-  def self.unique_tools
-    #ActsAsTaggableOn::Tag
-      #.joins(:taggings)
-      #.where(taggings: { context: 'tools' })
-      #.where(taggings: { taggable_type: Creation.name })
-      #.order(:name)
-      #.pluck(:name)
-      #.uniq
-    Tool.all
-  end
 end
app/views/layouts/_header.html.erb
@@ -21,7 +21,7 @@
         <% if user_signed_in? %>
         <ul class="nav pull-right" data-no-turbolink>
           <li>
-            <%= link_to my_root_path do %>
+            <%= link_to my_dashboard_path do %>
               <%= avatar_for(current_user, size: 24) %> <%= current_user.name %>
             <% end %>
           </li>
@@ -43,7 +43,7 @@
             </ul>
           </li>
           <li>
-            <%= link_to my_root_path do %>
+            <%= link_to my_dashboard_path do %>
               <i class="fa fa-inbox"></i>
             <% end %>
           </li>
app/views/my/dashboard/index.html.erb
@@ -1,35 +1,9 @@
 <% provide(:title, "Dashboard") -%>
-<%= content_for :javascript do -%>
-  <%= javascript_tag do %>
-    var ALL_TAGS = <%= raw unique_tags %>;
-    var ALL_TOOLS = <%= raw unique_tools %>;
-    var disqus_shortname = '<%= ENV['DISQUS_SHORTNAME'] %>';
-    var disqus_identifier = 'u-<%= current_user.id %>';
-    var disqus_config = function(){
-      this.page.remote_auth_s3 = '<%= disqus_auth %>';
-      this.page.api_key = '<%= ENV['DISQUS_API_KEY'] %>';
-    };
-    $(document).ready(function(){
-      CakeSide.initialize({
-        access_token: '<%= current_user.authentication_token %>',
-        disqus_shortname: disqus_shortname,
-      });
-    });
-    $(document).on('page:load', function(){
-      Backbone.history.stop();
-      CakeSide.initialize({
-        access_token: '<%= current_user.authentication_token %>',
-        disqus_shortname: disqus_shortname,
-      });
-    });
-  <% end %>
-<% end -%>
-
 <div class="row">
   <div class="span2">
     <%= render partial: "my/shared/my_nav" %>
   </div>
-  <div id="backbone-content" class="span10">
+  <div class="span10">
     <div class="row">
       <div class="span5">
         <h5>My Cakes</h5>
@@ -58,5 +32,3 @@
     </div>
   </div>
 </div>
-<div id="disqus_thread" class="row-fluid"></div>
-<div id="modal" class="modal hide fade"></div>
app/views/my/kitchens/show.html.erb
@@ -0,0 +1,25 @@
+<% provide(:title, "Kitchen") -%>
+<%= content_for :javascript do -%>
+  <%= javascript_tag do %>
+    var ALL_TAGS = <%= raw @tags.pluck(:name) %>;
+    var disqus_shortname = '<%= ENV['DISQUS_SHORTNAME'] %>';
+    var disqus_identifier = 'u-<%= current_user.id %>';
+    var disqus_config = function(){
+      this.page.remote_auth_s3 = '<%= disqus_auth %>';
+      this.page.api_key = '<%= ENV['DISQUS_API_KEY'] %>';
+    };
+    CakeSide.initialize({
+      access_token: '<%= current_user.authentication_token %>',
+      disqus_shortname: disqus_shortname
+    });
+  <% end %>
+<% end %>
+
+<div class="row">
+  <div class="span2">
+    <%= render partial: "my/shared/my_nav" %>
+  </div>
+  <div id="backbone-content" class="span10"></div>
+</div>
+<div id="disqus_thread" class="row-fluid"></div>
+<div id="modal" class="modal hide fade"></div>
app/views/my/shared/_my_nav.html.erb
@@ -4,7 +4,7 @@
   <% end %>
   <ul class="nav nav-list">
     <li class="nav-header"><%= current_user.name %></li>
-    <li class="<%= "active" if controller?("dashboard") %>"><%= link_to "<i class='fa fa-tachometer'></i>Dashboard".html_safe, my_root_path %></li>
+    <li class="<%= "active" if controller?("dashboard") %>"><%= link_to "<i class='fa fa-tachometer'></i>Dashboard".html_safe, my_dashboard_path %></li>
     <li id='profile-tab' data-no-turbolink><%= link_to "<i class='fa fa-cog'></i>Profile".html_safe, my_root_path(anchor: 'profile/me') %></li>
     <li class="<%= 'active' if controller?('passwords') %>"><%= link_to "<i class='fa fa-eye'></i>Account".html_safe, my_passwords_path %></li>
     <li class="<%= "active" if controller?("favorites") %>"><%= link_to "<i class='fa fa-star'></i>Favorites".html_safe, my_favorites_path %></li>
config/routes.rb
@@ -89,6 +89,7 @@ Cake::Application.routes.draw do
     resources :settings, only: [:index, :update]
     resources :passwords, only: [:index, :update]
     resources :avatars, only: [:new, :create]
-    root to: "dashboard#index"
+    resource :kitchen, only: [:show]
+    root to: "kitchens#show"
   end
 end
Gemfile
@@ -17,6 +17,7 @@ end
 gem 'acts-as-taggable-on'
 
 gem 'jquery-ui-rails', '~> 4.0.0'
+gem 'jquery-turbolinks'
 gem 'mini_magick'
 gem "kaminari"
 gem 'bootstrap-sass', '~> 2.3.0'
Gemfile.lock
@@ -197,6 +197,9 @@ GEM
     jquery-rails (3.1.2)
       railties (>= 3.0, < 5.0)
       thor (>= 0.14, < 2.0)
+    jquery-turbolinks (2.1.0)
+      railties (>= 3.1.0)
+      turbolinks
     jquery-ui-rails (4.0.5)
       railties (>= 3.1.0)
     js-routes (0.9.9)
@@ -402,6 +405,7 @@ DEPENDENCIES
   groupdate
   jbuilder
   jquery-rails
+  jquery-turbolinks
   jquery-ui-rails (~> 4.0.0)
   js-routes
   kaminari