Skip to content

Commit

Permalink
implement features from mockup v2
Browse files Browse the repository at this point in the history
  • Loading branch information
digitaltom committed Mar 6, 2012
1 parent 74b3fd7 commit 75148c0
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 81 deletions.
2 changes: 1 addition & 1 deletion app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def load_distributions
doc.elements.each("distributions/distribution") { |element|
dist = Hash[:name => element.elements['name'].text, :project => element.elements['project'].text,
:reponame => element.elements['reponame'].text, :repository => element.elements['repository'].text,
:icon => element.elements['icon'].attributes["url"] ]
:icon => element.elements['icon'].attributes["url"], :dist_id => element.attributes['id'].sub(".", "") ]
@distributions << dist
logger.debug "Added Distribution: #{dist}"
}
Expand Down
4 changes: 4 additions & 0 deletions app/helpers/package_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ def human_arch arch
case arch
when "i586"
"32 Bit"
when "i386"
"32 Bit"
when "x86_64"
"64 Bit"
when "amd64"
"64 Bit"
when "src"
"Source"
when "nosrc"
Expand Down
29 changes: 29 additions & 0 deletions app/views/package/_download_rows.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<% packages.flatten.group_by(&:project).each do |result| %>
<li>
<% if result.first == distro[:project] %>
<% name = "release" %>
<% elsif result.first == "#{distro[:project]}:Update" %>
<% name = "update" %>
<% else %>
<% name = result.first %>
<% end -%>

<i><%= link_to name, "https://build.opensuse.org/package/show?project=#{result.first}&package=#{@pkgname}" %>: </i>
<%# only use the latest version, obs bug: outdated version still listed. %>
<% version_release = result.last.map{|r| "#{r.version}.#{r.release}" }.max %>
<% version = result.last.map{|r| r.version }.max %>
<% release = result.last.select{|r| r.version == version }.map{|v| v.release.sub(".", "").to_i}.max %>
<ul class="pkg-typ-options">
<li><%= version %></li>
<% result.last.select{|r| r.version == version && r.release.sub(".", "").to_i == release }.each do |bin| %>
<li><%= link_to human_arch( bin.arch ), "http://download.opensuse.org/repositories/" + bin.filepath %> </li>
<% end %>
</ul>
<% if distro[:project].match(/SUSE/) %>
<% url = url_for :controller => 'main', :action => 'ymp_without_arch_and_version',
:project => result.first, :repository => result.last.first.repository, :package => @pkgname, :base => result.last.first.baseproject %>
<a class="pkg-options-one-click" href="<%= url %>">1 Click Install</a>
<% end %>
</li>
<% end -%>
82 changes: 22 additions & 60 deletions app/views/package/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@
<% end %>
<% unless @default_package.blank? %>
<% url = url_for :controller => 'main', :action => 'ymp_without_arch_and_version',
:project => @default_package.project, :repository => @default_package.repository, :package => @pkgname, :base => @default_package.baseproject %>
<a id="one-click-button" href="<%= url %>">
<%= image_tag "download-arrow.png", :width => "36", :height => "36", :alt => "Download Arrow" %>
<strong>Direct Install</strong><br/>
<em><%= @distributions.select{|d| d[:project] == @default_package.project}.first[:name] %>,
Version <%= @default_package.version %>, <%= number_to_human_size @description_package.size %></em>
</a>
<% end -%>
<% url = url_for :controller => 'main', :action => 'ymp_without_arch_and_version',
:project => @default_package.project, :repository => @default_package.repository, :package => @pkgname, :base => @default_package.baseproject %>
<a id="one-click-button" href="<%= url %>">
<%= image_tag "download-arrow.png", :width => "36", :height => "36", :alt => "Download Arrow" %>
<strong>Direct Install</strong><br/>
<em><%= @distributions.select{|d| d[:project] == @default_package.project}.first[:name] %>,
Version <%= @default_package.version %>, <%= number_to_human_size @description_package.size %></em>
</a>
<% end -%>
</div>

<div id="pkg-options">
Expand All @@ -65,68 +65,30 @@
<% if @packages.select{|s| s.baseproject == distro[:project]}.size > 0 %>

<li>
<a href="#"><%= distro[:name] %></a>

<ul>

<a href="#" onclick="$('#dist_<%= distro[:dist_id] %>').toggle(); return false;" class="<%= distro[:project] == @default_package.project ? "active" : "inactive" %>"><%= distro[:name] %></a>
<ul class="pkg-options-details <%= "hidden" if distro[:project] != @default_package.project %>" id="dist_<%= distro[:dist_id] %>" >

<% official = @packages.select{|s| s.project == distro[:project]} %>
<% official.flatten.group_by(&:version).each do |version| -%>
<% version.last.group_by(&:project).each do |result| %>
<li>release: <i><%= link_to result.first, "https://build.opensuse.org/package/show?project=#{result.first}&package=#{@pkgname}" %>: </i>
<%= version.first %>
<% result.last.each do |bin| %>
<i><%= link_to human_arch( bin.arch ), "http://download.opensuse.org/repositories/" + bin.filepath %> </i>
<% end %>
</li>
<% end -%>
<% end -%>
<%= render :partial => 'download_rows', :locals => {:packages => official, :distro => distro} %>
<% update = @packages.select{|s| s.project == "#{distro[:project]}:Update"} %>
<% update.flatten.group_by(&:version).each do |version| -%>
<% version.last.group_by(&:project).each do |result| %>
<li>update: <i><%= link_to result.first, "https://build.opensuse.org/package/show?project=#{result.first}&package=#{@pkgname}" %>: </i>
<%= version.first %>
<% result.last.each do |bin| %>
<i><%= link_to human_arch( bin.arch ), "http://download.opensuse.org/repositories/" + bin.filepath %> </i>
<% end %>
</li>
<% end -%>
<% end -%>
<%= render :partial => 'download_rows', :locals => {:packages => update, :distro => distro} %>
<% official_projects = @distributions.map{|d| d[:project]} %>
<% devel = @packages.select{|s| s.baseproject == distro[:project] } %>
<% devel = devel.reject{|s| official_projects.include?( s.project ) || s.project.match( /^home\:/ ) } %>
<% devel.flatten.group_by(&:project).each do |result| %>
<li><i><%= link_to result.first, "https://build.opensuse.org/package/show?project=#{result.first}&package=#{@pkgname}" %>: </i>
<%# only use the latest version, obs bug: outdated version still listed. %>
<% version = result.last.map{|r| r.version }.max %>
<%= version %>
<% result.last.select{|r| r.version == version}.each do |bin| %>
<i><%= link_to human_arch( bin.arch ), "http://download.opensuse.org/repositories/" + bin.filepath %> </i>
<% end %>
</li>
<% end -%>
<% devel = devel.reject{|s| official_projects.include?( s.project ) || s.project.match( /^home\:/ ) || s.project.match( /#{distro[:project]}\:Update/ ) } %>
<%= render :partial => 'download_rows', :locals => {:packages => devel, :distro => distro} %>
<% home = @packages.select{|s| s.baseproject == distro[:project] } %>
<% home = home.select{|s| s.project.match( /^home\:/ )} %>
<% home.flatten.group_by(&:project).each do |result| %>
<li><i><%= link_to result.first, "https://build.opensuse.org/package/show?project=#{result.first}&package=#{@pkgname}" %>: </i>
<%# only use the latest version, obs bug: outdated version still listed. %>
<% version = result.last.map{|r| r.version }.max %>
<%= version %>
<% result.last.select{|r| r.version == version}.each do |bin| %>
<i><%= link_to human_arch( bin.arch ), "http://download.opensuse.org/repositories/" + bin.filepath %> </i>
<% end %>
</li>
<% end -%>


</ul>

<% unless home.blank? %>
<li><a href="#" onclick="$('#dist_home_<%= distro[:dist_id] %>').toggle(); return false;">... show user packages</a></li>
<% end -%>
</ul>
<ul class="pkg-options-details hidden" id="dist_home_<%= distro[:dist_id] %>" >
<%= render :partial => 'download_rows', :locals => {:packages => home, :distro => distro} %>
</ul>

</li>

Expand Down
1 change: 1 addition & 0 deletions app/views/search/_search_box.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<% form_tag( {:controller => 'search'}, :method => :get ) do %>
<%= text_field_tag 'q', @query, :size => 40 %> (<a href="#" class="options_link" id="search_option_toggle"><%= _('Search options') %></a>)
<div class="form_control">
<% @distributions ||= Array.new %>
<%= select_tag 'baseproject', options_for_select((@distributions.map{|d| [d[:name], d[:project]]} || ["ALL"]), (@baseproject or default_baseproject)) %>
<%= hidden_field_tag 'lang', @lang %>
<%= submit_tag _('Search'), :name => nil %>
Expand Down
118 changes: 98 additions & 20 deletions public/css/software.css
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,26 @@ body {
}

.pkg-aside {}

#pkg-info {

}
#pkg-info li {
margin-bottom: 1.5em;
margin-left: 1em;
}
#pkg-info strong {
color: #999;
display: block;
font-size: 0.9em;
font-weight: normal;
letter-spacing: 0.1em;
line-height: 2em;
}
#pkg-info span {

}

.pkg-content {}
#pkg-description {}

Expand Down Expand Up @@ -212,25 +232,83 @@ body {
#pkg-options {
margin-top: 3em;
}
#pkg-options ul {
width: 95%;
}
#pkg-options > ul > li > a {
display: block;
width: 100%;
background: transparent url('toggle-arrow.png') no-repeat scroll 90% -14px;
#pkg-options > ul {
width: 95%;
}
#pkg-options > ul > li {
border-bottom: 1px solid #ccc;
padding-bottom: 5px;
}
#pkg-options a:hover {
text-decoration: none;
}
#pkg-options > ul > li > a {
display: block;
width: 100%;
background: transparent url('images/toggle-arrow.png') no-repeat scroll 99% -14px;
}
#pkg-options > ul > li > a:hover,
#pkg-options > ul > li > a:focus,
#pkg-options > ul > li > a.active {
background-position: 99% 0;
}
#pkg-options > ul > li > a.active {
border-bottom: 1px solid #eee;
}
#pkg-options .pkg-options-details {
overflow: hidden;
padding: 0;
}
#pkg-options .pkg-options-details ul * {
margin: 0;
}
#pkg-options .pkg-options-details > li {
overflow: hidden;
clear: both;
border-top: 1px solid #eee;
padding: 5px 0 0px;
}
#pkg-options .pkg-options-details > li:first-child {
border-top: 0;
}

#pkg-options .pkg-options-details li * {
float: left;
}
#pkg-options .pkg-options-details a {
color: #666;
padding: 1px 0;
}
#pkg-options .pkg-options-details a:hover,
#pkg-options .pkg-options-details a:focus {
color: #690;
}
.hidden {
display: hidden;
}
#pkg-options li a.pkg-options-one-click {
float: right;
font-weight: bold;
color: #690;
}
#pkg-options li a.pkg-options-one-click:hover,
#pkg-options li a.pkg-options-one-click:focus {
color: #069;
}
#pkg-options .pkg-options-details > li > a:first-child {
display: block;
width: 15em;
}
#pkg-options .pkg-typ-options li {
margin-right: 1em;
}
#pkg-options > ul > li > a:hover,
#pkg-options > ul > li > a:focus,
#pkg-options > ul > li > a.active {
background-position: 90% 0;
}
#pkg-options > ul > li > a.active {
border-bottom: 1px solid #eee;
padding-bottom: 2px;
}
#pkg-options > ul > li {
border-bottom: 1px solid #ccc;
padding-bottom: 5px;
#pkg-options .pkg-typ-options a {
padding: 1px 6px 1px 5px;
}

#pkg-options .pkg-typ-options a.selected {
background-color: #ddd;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;

}

0 comments on commit 75148c0

Please sign in to comment.