Skip to content

Commit

Permalink
Renders ember layout for the board
Browse files Browse the repository at this point in the history
  • Loading branch information
rauhryan committed Mar 2, 2015
1 parent 6fedecf commit a3b3328
Show file tree
Hide file tree
Showing 14 changed files with 226 additions and 7 deletions.
1 change: 1 addition & 0 deletions Gemfile
Expand Up @@ -25,6 +25,7 @@ gem 'addressable'
gem 'kgio'
gem 'carrierwave_direct'
gem 'memcachier'
gem 'solid_use_case'


group :development, :test do
Expand Down
4 changes: 4 additions & 0 deletions Gemfile.lock
Expand Up @@ -67,6 +67,7 @@ GEM
connection_pool (2.1.1)
dalli (2.7.2)
debug_inspector (0.0.2)
deterministic (0.6.0)
dotenv (1.0.2)
dotenv-rails (1.0.2)
dotenv (= 1.0.2)
Expand Down Expand Up @@ -262,6 +263,8 @@ GEM
json (~> 1.7, >= 1.7.7)
rdoc (~> 4.0)
slop (3.6.0)
solid_use_case (2.1.1)
deterministic (~> 0.6.0)
spring (1.2.0)
sprockets (2.12.3)
hike (~> 1.2)
Expand Down Expand Up @@ -321,6 +324,7 @@ DEPENDENCIES
rails (= 4.2.0)
sass-rails (~> 5.0)
sdoc (~> 0.4.0)
solid_use_case
spring
sqlite3
turbolinks
Expand Down
10 changes: 10 additions & 0 deletions app/controllers/board_controller.rb
@@ -0,0 +1,10 @@
class BoardController < ApplicationController
def index
UseCase::FetchBoard.new(huboard).run(params).match do
success do
@repo = gh.repos(params[:user],params[:repo])
render :index, layout: "ember"
end
end
end
end
8 changes: 3 additions & 5 deletions app/controllers/marketing_controller.rb
Expand Up @@ -6,15 +6,13 @@ class MarketingController < ActionController::Base
include ApplicationHelper

def index
if logged_in?
render :index
else
render template: "marketing/marketing", layout: "marketing"
end
render template: "marketing/marketing", layout: "marketing"
end

def integrations
render template: "marketing/integrations", layout: "marketing"
end

def pricing
render template: "marketing/pricing", layout: "marketing"
end
Expand Down
3 changes: 3 additions & 0 deletions app/helpers/application_helper.rb
Expand Up @@ -24,4 +24,7 @@ def huboard(token = nil)
def gh
huboard.connection
end
def emojis
@emojis ||= gh.connection.get('./emojis').body
end
end
62 changes: 62 additions & 0 deletions app/views/board/index.html.erb
@@ -0,0 +1,62 @@
<% content_for :title do %>
<%= @repo['full_name'] %>
<% end %>
<% content_for :javascripts do %>
<% unless ENV["SOCKET_BACKEND"].nil? %>
<script src='<%= ENV['SOCKET_BACKEND']%>/client.js'></script>
<% end %>
<%= javascript_include_tag 'board/application' %>
<%= javascript_include_tag 'bootstrap' %>
<%= javascript_include_tag 'vendor/jquery-ui' %>
<script>
(function($) {
var _mouseDrag = $.ui.sortable.prototype._mouseDrag;
$.ui.sortable.prototype._mouseDrag = function(event) {
var i, item, itemElement, intersection,
o = this.options,
scrolled = false;

//Do scrolling

if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) {
scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);
} else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {
scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);
}


if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {
$.ui.ddmanager.prepareOffsets(this, event);
}
return _mouseDrag.apply(this, arguments);
};

})(jQuery);
App.set("repo", Ember.Object.createWithMixins(App.Serializable,<%= @repo.to_hash.to_json.html_safe %>));
<% if logged_in? %>
App.set("loggedIn", true);
App.set("authLevel", "<%= @auth_level %>")
App.set("currentUser",<%= current_user.attribs.to_json.html_safe %>);
<% if Rails.application.config.sockets.socket_backend %>
App.set("socketBackend", "<%= Rails.application.config.sockets.socket_backend %>");
<% end %>
<% else %>
App.set("loggedIn", false);
<% end %>

if(window.analytics) {
App.Router.reopen({
notifySegmentIo: function(){
return window.analytics.page(this.get('url'),{
page: this.get('url'),
title: this.get('url')
})
}.on("didTransition")

});

}

App.advanceReadiness();
</script>
<% end %>
32 changes: 32 additions & 0 deletions app/views/layouts/ember.html.erb
@@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<title><%= content_for :title %>HuBoard</title>
<meta name="description" content="Instant project management for GitHub issues">
<link rel="shortcut icon" href="/favicon.ico?v=3" />
<meta name="viewport" content="width=device-width, initial-scale=1">

<%= stylesheet_link_tag 'bootstrap' %>
<%= stylesheet_link_tag 'flex_layout' %>


</head>
<body class="flex-body">
<div id="application">
</div>
<%= content_for :overlay %>
<%= render partial: "shared/analytics" %>
<script>
window.EMOJIS = <%= emojis.to_json.html_safe %>;
window.HUBOARD_ENV = <%= Rails.application.config.client_environment.to_json.html_safe %>;
</script>
<%= content_for :javascripts %>
<%= render partial: "shared/fontdeck" %>


</body>
</html>



2 changes: 1 addition & 1 deletion config/initializers/assets.rb
Expand Up @@ -8,4 +8,4 @@

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w( marketing.js marketing/main.css vendor/jquery.js bootstrap.css bootstrap.js )
Rails.application.config.assets.precompile += %w( flex_layout.css marketing.js marketing/main.css vendor/jquery.js bootstrap.css bootstrap.js board/application.js vendor/jquery-ui.js )
1 change: 1 addition & 0 deletions config/initializers/features.rb
@@ -0,0 +1 @@
Rails.application.config.client_environment = JSON.parse(File.read("#{Rails.root}/features.json"))
4 changes: 4 additions & 0 deletions config/initializers/socket_backend.rb
@@ -0,0 +1,4 @@
Rails.application.config.sockets = OpenStruct.new(
socket_backend: ENV["SOCKET_BACKEND"],
)

3 changes: 2 additions & 1 deletion config/routes.rb
Expand Up @@ -13,7 +13,8 @@

get '/repositories/public/:user' => 'dashboard#public', as: 'repositories_public'

get '/:user' => 'dashboard#user', as: 'user'
get '/:user' => 'dashboard#user', as: 'user'
get '/:user/:repo' => 'board#index', as: 'board'

# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
Expand Down
5 changes: 5 additions & 0 deletions features.json
@@ -0,0 +1,5 @@
{
"FEATURES" : {
"IMAGE_UPLOADS": true
}
}
41 changes: 41 additions & 0 deletions lib/use_case/fetch_board.rb
@@ -0,0 +1,41 @@
module UseCase
class FetchBoard
include SolidUseCase

attr_accessor :client

def initialize(client)
@client = client
end

steps :repo_exists?, :board_exists?, :issues_enabled?

def repo_exists? params
board = client.board params[:user], params[:repo]
if board.repo_exists?
continue board
else
fail :not_found
end

end

def board_exists?(board)
if board.has_board?
continue board
else
fail :no_board
end
end

def issues_enabled?(board)
if board.issues_enabled?
continue board
else
fail :no_issues
end

end

end
end
57 changes: 57 additions & 0 deletions lib/use_case/private_repo.rb
@@ -0,0 +1,57 @@
require "app/account_helpers"

module UseCase
class PrivateRepo
include HuBoard::AccountHelpers
include SolidUseCase

attr_accessor :couch, :gh
def initialize(gh, couch)
@gh = gh
@couch = couch
end

steps :an_account_exists?, :a_trial_available?, :has_subscription?

def an_account_exists?(params)
@repo_owner ||= @gh.users(params[:user])

plan_doc = QueryHandler.run do |q|
q << Queries::CouchCustomer.get(@repo_owner["id"], @couch)
q << Queries::PassThrough.go
end
return fail(:pass_through) if plan_doc[:pass_through]

@customer = account_exists?(plan_doc) ? plan_doc[:rows].first.value : false
continue(params)
end

def a_trial_available?(params)
if trial_available?(@customer) && user_is_owner(params)
params[:trial_available] = true
continue(params)
else
continue(params)
end
end

def has_subscription?(params)
return continue(params) if params[:trial_available] || trial_active?(@customer)
if @customer && subscription_active?(@customer)
return continue(params)
end
return fail :unauthorized
end

:private
def user_is_owner(params)
if @repo_owner["type"] == "Organization"
@u ||= @gh.orgs(@repo_owner["login"]).memberships(@gh.user["login"]) do |req|
req.headers["Accept"] = "application/vnd.github.moondragon+json"
end
return @u["role"] == "admin"
end
@repo_owner['login'] == @gh.user['login']
end
end
end

0 comments on commit a3b3328

Please sign in to comment.