commit:     b0086f9f9cb9be97d0cf2715330f57075ea843c0
Author:     Alex Legler <alex <AT> a3li <DOT> li>
AuthorDate: Sun Feb 22 20:06:43 2015 +0000
Commit:     Alex Legler <a3li <AT> gentoo <DOT> org>
CommitDate: Sun Feb 22 20:06:43 2015 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/ag-web.git;a=commit;h=b0086f9f

Move full archives list to a separate page

---
 ag-web.rb                      |  6 +++++
 lib/helpers.rb                 |  1 -
 lib/index.rb                   | 20 ++++++++++++++
 public/css/main.css            | 16 ++++++++++-
 views/index.erb                | 60 +++++++++++++-----------------------------
 views/indexentry.erb           | 32 ++++++++++++++++++++++
 views/layout.erb               | 15 ++++++++---
 views/{index.erb => lists.erb} |  0
 8 files changed, 102 insertions(+), 48 deletions(-)

diff --git a/ag-web.rb b/ag-web.rb
index 8855dd7..071246d 100644
--- a/ag-web.rb
+++ b/ag-web.rb
@@ -161,6 +161,12 @@ get '/:list/message/:msgid' do
   end
 end
 
+get '/lists' do
+  @nav = :lists
+  erb :lists
+end
+
 get '/' do
+  @nav = :index
   erb :index
 end

diff --git a/lib/helpers.rb b/lib/helpers.rb
index 405975b..88b8f59 100644
--- a/lib/helpers.rb
+++ b/lib/helpers.rb
@@ -1,4 +1,3 @@
-require 'date'
 require 'rinku'
 require 'erb'
 

diff --git a/lib/index.rb b/lib/index.rb
index de3d4f0..3cc7537 100644
--- a/lib/index.rb
+++ b/lib/index.rb
@@ -24,6 +24,26 @@ def threads_in_month(list, year, month, page)
   )
 end
 
+def most_recent(list, n)
+  result = $es.search(
+    index: 'ml-' + list,
+    size: n,
+    body: {
+      sort: {
+        date: 'desc',
+      }
+    }
+  )
+
+  if result['hits']['total'] == 0
+    return []
+  else
+    return result['hits']['hits']
+  end
+rescue => e
+  []
+end
+
 def messages_in_month(list, year, month, page)
   $es.search(
     index: 'ml-' + list,

diff --git a/public/css/main.css b/public/css/main.css
index bd52860..38d482b 100644
--- a/public/css/main.css
+++ b/public/css/main.css
@@ -6,11 +6,13 @@
 }
 
 @media (min-width: 768px) {
-  .ag-message-table {
+  .ag-message-table,
+  .ag-mostrecent-table {
     width: 100%;
     table-layout: fixed;
   }
 
+  .ag-mostrecent-table td,
   .ag-message-table td {
     text-overflow: ellipsis;
     max-height: 1.2em;
@@ -25,6 +27,18 @@
   .ag-message-table-from {
     width: 18%;
   }
+
+  .ag-mostrecent-table-author {
+    width: 30%;
+  }
+
+  .ag-mostrecent-header {
+    margin-top: 5px;
+  }
+
+  .ag-index-actions {
+    margin-top: 2em;
+  }
 }
 
 .ag-quote {

diff --git a/views/index.erb b/views/index.erb
index c2cee2c..0ca71c9 100644
--- a/views/index.erb
+++ b/views/index.erb
@@ -1,47 +1,23 @@
 <h1 class="first-header">Gentoo Mailing List Archives</h1>
 
-<h2>Current Mailing Lists</h2>
+<p class="lead">
+  Here you can find the archives of our most important mailing lists.
+</p>
+<p>
+  For a complete list of available archives, see the <a href="/lists" 
class="btn btn-primary btn-xs"><i class="fa fa-fw fa-archive"></i> All 
Archives</a> section.
+</p>
 
-<div class="row">
-  <div class="col-xs-12 col-md-6">
-    <div class="list-group">
-      <% $config['active_lists'].each do |list| %>
-        <a href="<%= h list %>/" class="list-group-item">
-          <span class="fa fa-fw fa-archive"></span>
-          <%= h list %>
-          <span class="badge"><%= MessageCountCache.instance[list] %></span>
-        </a>
-      <% end %>
-    </div>
-  </div>
-  <div class="col-xs-12 col-md-6">
-    <div class="alert alert-info" role="alert">
-      <strong>How to Participate</strong><br>
-      Please see our <a href="https://www.gentoo.org/main/en/lists.xml"; 
class="alert-link">Mailing List information page</a> for more information on
-      how you can subscribe and participate in the discussions.
-    </div>
-  </div>
-</div>
+<hr>
 
-<h2>Frozen Archives</h2>
+<%= partial :indexentry, locals: { list: 'gentoo-dev', blurb: 
'<tt>gentoo-dev</tt> is the main technical development mailing list of Gentoo.' 
} %>
+<%= partial :indexentry, locals: { list: 'gentoo-project', blurb: 
'<tt>gentoo-project</tt> contains non-technical discussion and propositions for 
the Gentoo Council .' } %>
+<%= partial :indexentry, locals: { list: 'gentoo-announce', blurb: 'Important 
news for all Gentoo stakeholders.' } %>
+<%= partial :indexentry, locals: { list: 'gentoo-user', blurb: 'Our main 
support and Gentoo-related talk mailing list, <tt>gentoo-user</tt>.' } %>
+<%= partial :indexentry, locals: { list: 'gentoo-commits', blurb: 'Commits. 
Lots of commits.' } %>
+<%= partial :indexentry, locals: { list: 'gentoo-dev-announce', blurb: 
'<tt>gentoo-dev-announce</tt> conveys  important changes to all developers and 
interested users.' } %>
 
-<div class="row">
-  <div class="col-xs-12 col-md-6">
-    <div class="list-group">
-      <% $config['frozen_lists'].each do |list| %>
-        <a href="<%= h list %>/" class="list-group-item">
-          <span class="fa fa-fw fa-archive"></span>
-          <%= h list %>
-          <span class="badge"><%= MessageCountCache.instance[list] %></span>
-        </a>
-      <% end %>
-    </div>
-  </div>
-  <div class="col-xs-12 col-md-6">
-    <div class="alert alert-warning" role="alert">
-      <strong>Inactive Lists</strong><br>
-      These mailing lists are inactive. You can not post or subscribe to them 
any more.
-      Archives are provided for future reference.
-    </div>
-  </div>
-</div>
+
+<h2>Other Lists</h2>
+<p>
+  All other archives are available here: <a href="/lists" class="btn 
btn-primary"><i class="fa fa-fw fa-archive"></i> All Archives</a>
+</p>
\ No newline at end of file

diff --git a/views/indexentry.erb b/views/indexentry.erb
new file mode 100644
index 0000000..6028ec9
--- /dev/null
+++ b/views/indexentry.erb
@@ -0,0 +1,32 @@
+<div class="row">
+  <div class="col-xs-12 col-md-4">
+  <h2 class="stick-top"><%= list %></h2>
+    <p>
+      <%= blurb %>
+    </p>
+
+    <p class="ag-index-actions">
+      <a class="btn btn-primary btn-block" href="/<%= list %>/threads/<%= 
DateTime.now.strftime '%Y-%m' %>/"><span class="fa fa-fw fa-inbox"></span> This 
Month's Archives</a>
+      <a class="btn btn-default btn-block" href="/<%= list %>/"><span 
class="fa fa-fw fa-inbox"></span> Complete Archives</a>
+    </p>
+  </div>
+  <div class="col-xs-12 col-md-8">
+    <h3 class="ag-mostrecent-header">Most recent messages</h3>
+    <div class="table-responsive">
+      <table class="table table-condensed table-hover ag-mostrecent-table">
+        <tr>
+          <th>Subject</th>
+          <th class="ag-mostrecent-table-author">Author</th>
+        </tr>
+        <% most_recent(list, 5).each do |message| %>
+        <tr>
+          <td><a href="/<%= list %>/message/<%= message['_id'] %>"><%= h 
message['_source']['subject'] %></a></td>
+          <td><%= h message['_source']['from_realname'] %></td>
+        </tr>
+        <% end %>
+      </table>
+    </div>
+  </div>
+</div>
+
+<hr>
\ No newline at end of file

diff --git a/views/layout.erb b/views/layout.erb
index 79d8794..67a7e8b 100644
--- a/views/layout.erb
+++ b/views/layout.erb
@@ -60,11 +60,18 @@
             </div>
             <div class="collapse navbar-collapse navbar-main-collapse">
               <ul class="nav navbar-nav">
-                <% if params[:list] %>
-                <li><a href="/">Home</a></li>
-                <li class="active"><a href="/<%= params[:list] %>/"><%= 
params[:list] %></a></li>
+                <% if @nav == :index %>
+                  <li class="active"><a href="/">Home</a></li>
+                  <li><a href="/lists"><i class="fa fa-fw fa-archive"></i> All 
Archives</a></li>
+                <% elsif @nav == :lists %>
+                  <li><a href="/">Home</a></li>
+                  <li class="active"><a href="/lists"><i class="fa fa-fw 
fa-archive"></i> All Archives</a></li>
+                <% elsif params[:list] %>
+                  <li><a href="/">Home</a></li>
+                  <li><a href="/lists"><i class="fa fa-fw fa-archive"></i> All 
Archives</a></li>
+                  <li class="active"><a href="/<%= h params[:list] %>/"><i 
class="fa fa-fw fa-inbox"></i> <%= h params[:list] %></a></li>
                 <% else %>
-                <li class="active"><a href="/">Home</a></li>
+                <li><a href="/">Home</a></li>
                 <% end %>
               </ul>
             </div>

diff --git a/views/index.erb b/views/lists.erb
similarity index 100%
copy from views/index.erb
copy to views/lists.erb

Reply via email to