Skip to content

Commit

Permalink
added repo and service name to public url #85
Browse files Browse the repository at this point in the history
  • Loading branch information
sashazykov committed Jul 17, 2014
1 parent 8f0034e commit 481f0f1
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 18 deletions.
8 changes: 6 additions & 2 deletions app/controllers/application_controller.rb
Expand Up @@ -9,8 +9,12 @@ class ApplicationController < ActionController::Base

private

def load_project(id)
@project = Project.where(id: id).first
def load_project(project)
if project.is_a? Project
@project = project
else
@project = Project.where(id: project).first
end
unless @project
flash[:error] = 'Project not found.'
redirect_to projects_path
Expand Down
24 changes: 22 additions & 2 deletions app/controllers/projects_controller.rb
Expand Up @@ -13,6 +13,19 @@ def by_watchers
render "index"
end

# Redirect to pretty url for html format
include ProjectsHelper
before_filter only: [:show] do
if params[:id].present?
begin
respond_to do |format|
format.html { redirect_to pretty_project_path(@project) }
end
rescue ActionController::UnknownFormat
end
end
end

def show
if @project.bitcoin_address.nil?
uri = URI("https://blockchain.info/merchant/#{CONFIG["blockchain_info"]["guid"]}/new_address")
Expand Down Expand Up @@ -78,7 +91,7 @@ def create
repo = client.repo project_name
@project = Project.find_or_create_by host: "github", full_name: repo.full_name
@project.update_repository_info repo
redirect_to @project
redirect_to pretty_project_path(@project)
rescue Octokit::NotFound
redirect_to projects_path, alert: "Project not found"
end
Expand All @@ -87,7 +100,14 @@ def create
private

def load_project
super(params[:id])
if params[:id].present?
super(params[:id])
elsif params[:service].present? && params[:repo].present?
super(
Project.where(host: params[:service]).
where('lower(`full_name`) = ?', params[:repo].downcase).first
)
end
end

def project_params
Expand Down
12 changes: 12 additions & 0 deletions app/helpers/projects_helper.rb
Expand Up @@ -17,4 +17,16 @@ def shield_color project
'green'
end
end

def pretty_project_path project
"/#{project.host}/#{project.full_name}"
end

def pretty_project_url project
root_url.gsub(/\/$/,'') + pretty_project_path(project)
end

def shield_url project
project_url project, format: :svg
end
end
4 changes: 2 additions & 2 deletions app/views/projects/index.html.haml
Expand Up @@ -20,7 +20,7 @@
- @projects.each do |project|
%tr
%td
%strong= link_to project.full_name, project
%strong= link_to project.full_name, pretty_project_path(project)
- if !project.source_full_name.blank?
%br
%nobr
Expand All @@ -30,5 +30,5 @@
%td= project.description
%td= project.watchers_count
%td= btc_human project.available_amount_cache
%td= link_to 'Support', project, class: 'btn btn-success'
%td= link_to 'Support', pretty_project_path(project), class: 'btn btn-success'
= paginate @projects
20 changes: 10 additions & 10 deletions app/views/projects/show.html.haml
Expand Up @@ -20,7 +20,7 @@
%h4.panel-title
Project Sponsors
.panel-body
%iframe{ src: "http://coingiving.com/project_sponsors?url=#{project_url @project.id}", scrolling: "no", style: 'width:100%; height:500px; border:0px; padding:0;overflow:hidden'}
%iframe{ src: "http://coingiving.com/project_sponsors?url=#{project_url @project}", scrolling: "no", style: 'width:100%; height:500px; border:0px; padding:0;overflow:hidden'}
.hidden
%span(data-coingiving="title")= "[tip4commit] " + @project.full_name
%span(data-coingiving="description")= @project.description
Expand Down Expand Up @@ -110,37 +110,37 @@
/ AddThis Button END
%h4 Embedding
%p= link_to image_tag(project_url(@project, format: :svg), alt: 'Tip4Commit'), project_url(@project)
%p= link_to image_tag(shield_url(@project), alt: 'Tip4Commit'), project_url(@project)
%form.form-horizontal
%div.form-group
%label.control-label.col-sm-2{for: 'image_url'} Image URL:
%div.col-sm-10
%input.form-control{id: 'image_url', type: 'text', value: "#{project_url(@project, format: :svg)}"}
%input.form-control{id: 'image_url', type: 'text', value: "#{shield_url(@project)}"}
%div.form-group
%label.control-label.col-sm-2{for: 'markdown_text'} Markdown:
%div.col-sm-10
%input.form-control{id: 'markdown_text', type: 'text', value: "[![tip for next commit](#{project_url(@project, format: :svg)})](#{project_url(@project)})"}
%input.form-control{id: 'markdown_text', type: 'text', value: "[![tip for next commit](#{shield_url(@project)})](#{project_url(@project)})"}
%div.form-group
%label.control-label.col-sm-2{for: 'textile_text'} Textile:
%div.col-sm-10
%input.form-control{id: 'textile_text', type: 'text', value: "!#{project_url(@project, format: :svg)}!:#{project_url(@project)}"}
%input.form-control{id: 'textile_text', type: 'text', value: "!#{shield_url(@project)}!:#{project_url(@project)}"}
%div.form-group
%label.control-label.col-sm-2{for: 'rdoc_text'} RDOC:
%div.col-sm-10
%input.form-control{id: 'rdoc_text', type: 'text', value: "{<img src=\"#{project_url(@project, format: :svg)}\" alt=\"tip for next commit\" />}[#{project_url(@project)}]"}
%input.form-control{id: 'rdoc_text', type: 'text', value: "{<img src=\"#{shield_url(@project)}\" alt=\"tip for next commit\" />}[#{project_url(@project)}]"}
%div.form-group
%label.control-label.col-sm-2{for: 'asciidoc_text'} AsciiDoc:
%div.col-sm-10
%input.form-control{id: 'asciidoc_text', type: 'text', value: "image:#{project_url(@project, format: :svg)}[\"tip for next commit\", link=\"#{project_url(@project)}\"]"}
%input.form-control{id: 'asciidoc_text', type: 'text', value: "image:#{shield_url(@project)}[\"tip for next commit\", link=\"#{project_url(@project)}\"]"}
%div.form-group
%label.control-label.col-sm-2{for: 'rst_text'} Rst:
%div.col-sm-10
%input.form-control{id: 'rst_text', type: 'text', value: ".. image:: #{project_url(@project, format: :svg)} :target: #{project_url(@project)}"}
%input.form-control{id: 'rst_text', type: 'text', value: ".. image:: #{shield_url(@project)} :target: #{project_url(@project)}"}
%div.form-group
%label.control-label.col-sm-2{for: 'pod_text'} POD:
%div.col-sm-10
%input.form-control{id: 'pod_text', type: 'text', value: "=for HTML <a href=\"#{project_url(@project)}\"><img src=\"#{project_url(@project, format: :svg)}\"></a>"}
%input.form-control{id: 'pod_text', type: 'text', value: "=for HTML <a href=\"#{project_url(@project)}\"><img src=\"#{shield_url(@project)}\"></a>"}
%div.form-group
%label.control-label.col-sm-2{for: 'bbcode_text'} BBCode:
%div.col-sm-10
%input.form-control{id: 'bbcode_text', type: 'text', value: "[url=#{project_url(@project)}][img]#{project_url(@project, format: :svg)}[/img][/url]"}
%input.form-control{id: 'bbcode_text', type: 'text', value: "[url=#{project_url(@project)}][img]#{shield_url(@project)}[/img][/url]"}
4 changes: 2 additions & 2 deletions app/views/tips/index.html.haml
@@ -1,6 +1,6 @@
%h1
- if @project
= link_to @project.full_name, @project
= link_to @project.full_name, pretty_project_path(@project)
tips
- elsif @user
= link_to @user.full_name, @user
Expand Down Expand Up @@ -50,6 +50,6 @@
= link_to tip.sendmany.txid, "https://blockchain.info/tx/#{tip.sendmany.txid}", target: :blank
- else
Waiting for withdrawal
- if tip.sendmany.created_at < 10.minutes.ago
- if tip.sendmany.is_error
(error sending transaction)
= paginate @tips
2 changes: 2 additions & 0 deletions config/routes.rb
Expand Up @@ -4,6 +4,8 @@

get '/blockchain_info_callback' => "home#blockchain_info_callback", :as => "blockchain_info_callback"

get '/:service/:repo' => 'projects#show', :constraints => {:service => /github/, :repo => /.+/}

devise_for :users,
:controllers => {
:omniauth_callbacks => "users/omniauth_callbacks"
Expand Down

0 comments on commit 481f0f1

Please sign in to comment.