[69407] branches/gsoc10-mpwa/mpwa
jrozner at macports.org
jrozner at macports.org
Sat Jul 3 18:28:16 PDT 2010
Revision: 69407
http://trac.macports.org/changeset/69407
Author: jrozner at macports.org
Date: 2010-07-03 18:28:12 -0700 (Sat, 03 Jul 2010)
Log Message:
-----------
finished implementing views and reached feature parity with in place site
Modified Paths:
--------------
branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb
branches/gsoc10-mpwa/mpwa/app/helpers/ports_helper.rb
branches/gsoc10-mpwa/mpwa/app/models/port.rb
branches/gsoc10-mpwa/mpwa/app/views/pages/index.html.erb
branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb
branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb
branches/gsoc10-mpwa/mpwa/config/routes.rb
branches/gsoc10-mpwa/mpwa/db/schema.rb
branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml
Added Paths:
-----------
branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb
branches/gsoc10-mpwa/mpwa/app/helpers/categories_helper.rb
branches/gsoc10-mpwa/mpwa/app/views/categories/
branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb
branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb
branches/gsoc10-mpwa/mpwa/db/migrate/20100702075455_rework_categories.rb
branches/gsoc10-mpwa/mpwa/test/functional/categories_controller_test.rb
branches/gsoc10-mpwa/mpwa/test/unit/helpers/categories_helper_test.rb
Added: branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/app/controllers/categories_controller.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,6 @@
+class CategoriesController < ApplicationController
+ def index
+ @categories = Category.all(:order => 'name ASC')
+ @updated = Port.all(:order => 'updated_at DESC', :limit => 1).first.updated_at
+ end
+end
Modified: branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/app/controllers/ports_controller.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -1,7 +1,12 @@
class PortsController < ApplicationController
def index
- @ports = Port.paginate :page => params[:page], :order => 'name ASC', :per_page => 50
+ unless params[:category_id].nil?
+ @ports = Category.find(params[:category_id]).ports.paginate :page => params[:page], :order => 'name ASC', :per_page => 50
+ else
+ @ports = Port.paginate :page => params[:page], :order => 'name ASC', :per_page => 50
+ end
@updated = Port.all(:order => 'updated_at DESC', :limit => 1).first.updated_at
+ @page = params[:page] || 1
respond_to do |format|
format.html
@@ -9,11 +14,25 @@
end
def show
- @port = Port.find(params[:id])
+ @port = Category.find(params[:category_id]).ports.find(params[:id])
@comment = @port.comments.build
respond_to do |format|
format.html
end
end
+
+ def search
+ @ports = Port.search(params[:criteria], params[:val], params[:page])
+ @updated = Port.all(:order => 'updated_at DESC', :limit => 1).first.updated_at
+ @page = params[:page] || 1
+
+ respond_to do |format|
+ format.html { render :action => :index }
+ end
+ end
+
+ def search_generate
+ redirect_to "/ports/search/#{params[:criteria]}/#{params[:val]}"
+ end
end
Added: branches/gsoc10-mpwa/mpwa/app/helpers/categories_helper.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/helpers/categories_helper.rb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/app/helpers/categories_helper.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,2 @@
+module CategoriesHelper
+end
Modified: branches/gsoc10-mpwa/mpwa/app/helpers/ports_helper.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/helpers/ports_helper.rb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/app/helpers/ports_helper.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -1,2 +1,14 @@
module PortsHelper
+ def print_search_links(port, member)
+ links = String.new
+ vals = port[member.to_sym]
+ unless vals.nil?
+ vals.split(" ").each do |val|
+ links += "#{link_to val, search_path(member, val)} "
+ end
+ return links
+ else
+ return nil
+ end
+ end
end
Modified: branches/gsoc10-mpwa/mpwa/app/models/port.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/models/port.rb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/app/models/port.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -3,6 +3,9 @@
has_many :dependencies, :through => :port_dependencies
has_many :comments
has_one :category
- has_many :supplemental_categories
belongs_to :category
+
+ def self.search(criteria, val, page)
+ paginate :per_page => 50, :page => page, :conditions => ["#{self.columns_hash[criteria].name} like ?", "%#{val}%"], :order => 'name ASC'
+ end
end
Added: branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/app/views/categories/index.html.erb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,13 @@
+<div id="content">
+
+ <%= render :partial => '/partials/port_search' %>
+
+ <h3>Port Categories</h3>
+ <div id="categories">
+ <ul>
+ <% @categories.each do |category| %>
+ <li><%= link_to category.name, category_ports_path(category.id) %></li>
+ <% end %>
+ </ul>
+ </div>
+</div>
\ No newline at end of file
Modified: branches/gsoc10-mpwa/mpwa/app/views/pages/index.html.erb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/views/pages/index.html.erb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/app/views/pages/index.html.erb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -4,7 +4,7 @@
<p>The MacPorts Project is an open-source community initiative to design an easy-to-use system for compiling, installing, and upgrading either command-line, X11 or Aqua based open-source software on the <%= link_to 'Mac OS X', 'http://www.apple.com/macosx/' %> operating system. To that end we provide the command-line driven MacPorts software package under a <%= link_to 'BSD License', 'http://opensource.org/licenses/bsd-license.php' %>, and through it easy access to thousands of ports that <%= link_to 'greatly simplify', "#{$guide_url}#introduction" %> the task of <%= link_to 'compiling and installing', "#{$guide_url}#using" %> open-source software on your Mac.</p>
- <p>We provide a single software tree that attempts to track the latest release of every software title (port) we distribute, without splitting them into “stable” Vs. “unstable” branches, targetting mainly the current Mac OS X release (10.6, A.K.A Snow Leopard) and the immediately previous one (10.5, A.K.A. Leopard). There are currently <%= link_to "<b>#{Port.count}</b> ports" %> in our tree, distributed among <%= Category.count %> different categories, and more are being added on a regular basis.</p>
+ <p>We provide a single software tree that attempts to track the latest release of every software title (port) we distribute, without splitting them into “stable” Vs. “unstable” branches, targetting mainly the current Mac OS X release (10.6, A.K.A Snow Leopard) and the immediately previous one (10.5, A.K.A. Leopard). There are currently <%= link_to "<b>#{Port.count}</b> ports", categories_path %> in our tree, distributed among <%= Category.count %> different categories, and more are being added on a regular basis.</p>
<h3 class="subhdr">Getting started</h3>
Added: branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/app/views/partials/_port_search.html.erb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,16 @@
+<h2 class="hdr">MacPorts Portfiles</h2>
+
+<p>The MacPorts Project currently distributes <b><%= Port.count %></b> ports, organized across 92 different categories and available below for viewing. This form allows you to search the MacPorts software index, last updated on <b><%= @updated.strftime("%Y-%m-%d") %></b> at <b><%= @updated.strftime("%H:%M:%S %Z") %></b>.</p>
+
+<br />
+
+<p>
+ <% form_tag(search_generate_path, {:method => :get}) do %>
+ <%= select_tag :criteria, options_for_select({"Software Title" => "name", "Category" => "categories", "Maintainer" => "maintainers", "variant" => "variants", "Platform" => "platforms"}) %>
+ <%= text_field_tag :val, "", {:size => 40} %>
+ <%= submit_tag "Search" %>
+ <% end %>
+</p>
+
+<p>Or view the complete <%= link_to "ports list (#{Port.count} ports)", ports_path %>.</p>
+<br />
\ No newline at end of file
Modified: branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/app/views/ports/index.html.erb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -3,18 +3,49 @@
<h3>Query Results</h3>
- <%= will_paginate @ports %>
+ <p>
+ <%= ((@page.to_i - 1) * 50) + 1 %> - <%= @page.to_i * 50 %> of <%= Port.count %> Portfiles Selected
+ </p>
+ <p>
+ <%= will_paginate @ports %>
+ </p>
<% @ports.each do |port| %>
<dl>
- <dt><b><%= link_to port.name, category_ports_path(port.category, port) %></b> <%= port.version %></dt>
- <dd><%= port.description %><br />
- <i>Maintained by:</i> <b><span class="email"><%= port.maintainers %></span></b><br>
- <i>Categories:</i> <%= port.category.name %><br />
- <i>Platforms:</i> <%= port.platforms %><br />
- <i>Variants:</li> <%= port.variants %></dd>
+ <dt><b><%= link_to port.name, category_port_path(port.category, port) %></b> <%= port.version %></dt>
+ <dd>
+ <% unless port.description.nil? %>
+ <%= port.description %><br />
+ <% end %>
+
+ <% unless port.maintainers.nil? %>
+ <i>Maintained by:</i> <b><span class="email"><%= port.maintainers %></span></b><br>
+ <% end %>
+
+ <% unless port.categories.nil? %>
+ <i>Categories:</i> <%= print_search_links(port, "categories") %><br />
+ <% end %>
+
+ <% unless port.platforms.nil? %>
+ <i>Platforms:</i> <%= print_search_links(port, "platforms") %><br />
+ <% end %>
+
+ <% unless port.dependencies.empty? %>
+ <i>Dependencies: </i>
+ <% port.dependencies.each do |dep| %>
+ <%= link_to dep.name, category_port_path(dep.category, dep) %>
+ <% end%>
+ <br />
+ <% end %>
+
+ <% unless port.variants.nil? %>
+ <i>Variants:</i> <%= print_search_links(port, "variants") %>
+ <% end %>
+ </dd>
</dl>
<% end %>
- <%= will_paginate @ports %>
+ <p>
+ <%= will_paginate @ports %>
+ </p>
</div>
\ No newline at end of file
Modified: branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb
===================================================================
--- branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/app/views/ports/show.html.erb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -7,43 +7,48 @@
<strong>Current Version:</strong> <%=h @port.version %>
</p>
- <p>
- <strong>Licenses:</strong> <%=h @port.licenses %>
- </p>
+ <% unless @port.description.nil? %>
+ <p>
+ <strong>Description:</strong> <%=h @port.description %>
+ </p>
+ <% end %>
+ <% unless @port.licenses.nil? %>
+ <p>
+ <strong>Licenses:</strong> <%=h @port.licenses %>
+ </p>
+ <% end %>
+
<p>
<strong>Categories</strong>
- <%=h @port.category.name %>
- <% @port.supplemental_categories.each do |category| %>
- <%=h category.name %>
- <% end %>
+ <%=h @port.categories %>
</p>
- <p>
- <strong>Variants:</strong> <%=h @port.variants %>
- </p>
+ <% unless @port.variants.nil? %>
+ <p>
+ <strong>Variants:</strong> <%=h @port.variants %>
+ </p>
+ <% end %>
- <p>
- <strong>Dependencies:</strong>
- <% @port.dependencies.each do |dependency| %>
- <%= link_to dependency.name, dependency %>
- <% end %>
- </p>
+ <% unless @port.dependencies.empty? %>
+ <p>
+ <strong>Dependencies:</strong>
+ <% @port.dependencies.each do |dependency| %>
+ <%= link_to dependency.name, category_port_path(dependency.category, dependency) %>
+ <% end %>
+ </p>
+ <% end %>
<p>
- <strong>Description:</strong> <%=h @port.description %>
+ <strong>Portfile:</strong> <%= link_to "#{@port.path}/Portfile", "#{$svn_url}/trunk/dports/#{@port.path}/Portfile" %>
</p>
- <p>
- <strong>SVN Path:</strong> <%=h @port.path %>
- </p>
-
<% form_for([@port.category, @port, @comment]) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :body, "<strong>Comment</strong>" %><br />
- <%= f.text_area :body %>
+ <%= f.text_area :body, {:rows => 5, :cols => 80} %>
</p>
<p>
<%= recaptcha_tags %>
@@ -57,5 +62,4 @@
<div><%= h comment.body %></div>
<% end %>
- <%= link_to 'Back', ports_path %>
</div>
\ No newline at end of file
Modified: branches/gsoc10-mpwa/mpwa/config/routes.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/config/routes.rb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/config/routes.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -3,9 +3,14 @@
category.resources :ports, :only => [:index, :show] do |port|
port.resources :comments, :except => [:index, :show, :new]
end
+ category.connect '/ports/page/:page', :controller => :ports, :action => :index, :page => :page
end
- map.resources :ports, :only => [:index]
+ map.connect '/ports/page/:page', :controller => :ports, :action => :index, :page => :page
+ map.resources :ports, :only => [:index, :search]
+ map.search_generate 'ports/search', :controller => :ports, :action => :search_generate
+ map.connect '/ports/search/:criteria/:val/page/:page', :controller => :ports, :action => :search, :criteria => :criteria, :val => :val, :page => :page
+ map.search '/ports/search/:criteria/:val', :controller => :ports, :action => :search, :criteria => :criteria, :val => :val
map.index 'index', :controller => :pages, :action => :show, :page => :index
map.install 'install', :controller => :pages, :action => :show, :page => :install
Added: branches/gsoc10-mpwa/mpwa/db/migrate/20100702075455_rework_categories.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/db/migrate/20100702075455_rework_categories.rb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/db/migrate/20100702075455_rework_categories.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,16 @@
+class ReworkCategories < ActiveRecord::Migration
+ def self.up
+ drop_table :supplemental_categories
+ add_column :ports, :categories, :string
+ end
+
+ def self.down
+ remove_column :ports, :categories
+ create_table :supplemental_categories do |t|
+ t.string :name
+ t.integer :port_id
+
+ t.timestamps
+ end
+ end
+end
\ No newline at end of file
Modified: branches/gsoc10-mpwa/mpwa/db/schema.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/db/schema.rb 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/db/schema.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20100702053149) do
+ActiveRecord::Schema.define(:version => 20100702075455) do
create_table "categories", :force => true do |t|
t.string "name"
@@ -43,13 +43,7 @@
t.datetime "updated_at"
t.string "maintainers"
t.string "platforms"
+ t.string "categories"
end
- create_table "supplemental_categories", :force => true do |t|
- t.string "name"
- t.integer "port_id"
- t.datetime "created_at"
- t.datetime "updated_at"
- end
-
end
Modified: branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml
===================================================================
--- branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml 2010-07-03 23:02:40 UTC (rev 69406)
+++ branches/gsoc10-mpwa/mpwa/test/fixtures/categories.yml 2010-07-04 01:28:12 UTC (rev 69407)
@@ -1,352 +1,184 @@
+0:
+ id: 0
+ name: aqua
+
1:
id: 1
- name: accounting
+ name: archivers
2:
id: 2
- name: amusements
+ name: audio
3:
id: 3
- name: aqua
+ name: benchmarks
4:
id: 4
- name: archivers
+ name: cad
5:
id: 5
- name: audio
+ name: comms
6:
id: 6
- name: benchmarks
+ name: cross
7:
id: 7
- name: biology
+ name: databases
8:
id: 8
- name: blinkenlights
+ name: devel
9:
id: 9
- name: cad
+ name: editors
10:
id: 10
- name: chat
+ name: emulators
11:
id: 11
- name: chinese
+ name: erlang
12:
id: 12
- name: comms
+ name: finance
13:
id: 13
- name: compression
+ name: fuse
14:
id: 14
- name: cross
+ name: games
15:
id: 15
- name: crypto
+ name: genealogy
16:
id: 16
- name: databases
+ name: gis
17:
id: 17
- name: devel
+ name: gnome
18:
id: 18
- name: editors
+ name: gnustep
19:
id: 19
- name: education
+ name: graphics
20:
id: 20
- name: electronics
+ name: irc
21:
id: 21
- name: emacs
+ name: java
22:
id: 22
- name: emulators
+ name: kde
23:
id: 23
- name: erlang
+ name: lang
24:
id: 24
- name: finance
+ name: mail
25:
id: 25
- name: fonts
+ name: math
26:
id: 26
- name: framework
+ name: multimedia
27:
id: 27
- name: fuse
+ name: net
28:
id: 28
- name: games
+ name: news
29:
id: 29
- name: genealogy
+ name: office
30:
id: 30
- name: gis
+ name: palm
31:
id: 31
- name: gnome
+ name: perl
32:
id: 32
- name: gnustep
+ name: php
33:
id: 33
- name: graphics
+ name: print
34:
id: 34
- name: gtk
+ name: python
35:
id: 35
- name: haskell
+ name: ruby
36:
id: 36
- name: iphone
+ name: science
37:
id: 37
- name: irc
+ name: security
38:
id: 38
- name: japanese
+ name: shells
39:
id: 39
- name: java
+ name: sysutils
40:
id: 40
- name: kde
+ name: tex
41:
id: 41
- name: kde4
+ name: textproc
42:
id: 42
- name: lang
+ name: www
43:
id: 43
- name: macports
+ name: x11
44:
id: 44
- name: mail
+ name: xfce
45:
id: 45
- name: math
-
-46:
- id: 46
- name: mercurial
-
-47:
- id: 47
- name: ml
-
-48:
- id: 48
- name: mono
-
-49:
- id: 49
- name: multimedia
-
-50:
- id: 50
- name: net
-
-51:
- id: 51
- name: network
-
-52:
- id: 52
- name: news
-
-53:
- id: 53
- name: ocaml
-
-54:
- id: 54
- name: office
-
-55:
- id: 55
- name: palm
-
-56:
- id: 56
- name: parallel
-
-57:
- id: 57
- name: pdf
-
-58:
- id: 58
- name: perl
-
-59:
- id: 59
- name: php
-
-60:
- id: 60
- name: pim
-
-61:
- id: 61
- name: print
-
-62:
- id: 62
- name: project
-
-63:
- id: 63
- name: python
-
-64:
- id: 64
- name: reporting
-
-65:
- id: 65
- name: rox
-
-66:
- id: 66
- name: ruby
-
-67:
- id: 67
- name: russian
-
-68:
- id: 68
- name: scheme
-
-69:
- id: 69
- name: science
-
-70:
- id: 70
- name: security
-
-71:
- id: 71
- name: shells
-
-72:
- id: 72
- name: spelling
-
-73:
- id: 73
- name: squeak
-
-74:
- id: 74
- name: sysutils
-
-75:
- id: 75
- name: tcl
-
-76:
- id: 76
- name: tex
-
-77:
- id: 77
- name: textproc
-
-78:
- id: 78
- name: tk
-
-79:
- id: 79
- name: unicode
-
-80:
- id: 80
- name: vnc
-
-81:
- id: 81
- name: win32
-
-82:
- id: 82
- name: wsn
-
-83:
- id: 83
- name: www
-
-84:
- id: 84
- name: x11
-
-85:
- id: 85
- name: x11-font
-
-86:
- id: 86
- name: x11-wm
-
-87:
- id: 87
- name: xfce
-
-88:
- id: 88
name: zope
Added: branches/gsoc10-mpwa/mpwa/test/functional/categories_controller_test.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/test/functional/categories_controller_test.rb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/test/functional/categories_controller_test.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,8 @@
+require 'test_helper'
+
+class CategoriesControllerTest < ActionController::TestCase
+ # Replace this with your real tests.
+ test "the truth" do
+ assert true
+ end
+end
Added: branches/gsoc10-mpwa/mpwa/test/unit/helpers/categories_helper_test.rb
===================================================================
--- branches/gsoc10-mpwa/mpwa/test/unit/helpers/categories_helper_test.rb (rev 0)
+++ branches/gsoc10-mpwa/mpwa/test/unit/helpers/categories_helper_test.rb 2010-07-04 01:28:12 UTC (rev 69407)
@@ -0,0 +1,4 @@
+require 'test_helper'
+
+class CategoriesHelperTest < ActionView::TestCase
+end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100703/c5c434e0/attachment-0001.html>
More information about the macports-changes
mailing list