On 01/08/2013 02:55 PM, Rob Weir wrote:
On Tue, Jan 8, 2013 at 4:59 PM, Kay Schenk <kay.sch...@gmail.com> wrote:


On 01/07/2013 05:07 PM, Dave Fisher wrote:


On Jan 7, 2013, at 12:39 PM, Rob Weir wrote:

On Fri, Jan 4, 2013 at 1:12 PM, Kay Schenk <kay.sch...@gmail.com> wrote:

On Thu, Jan 3, 2013 at 4:09 PM, Rob Weir <robw...@apache.org> wrote:


<snip>

Since this is the visitors first impression of the project, I wonder
if it is worth exploring further to see if there is a way to address
these issues?   As I mentioned before, the ASF home page has a "latest
activity" panel that avoids both of these problems:

http://www.apache.org/

Can we copy what they do?


Yes. See below where I show where to find the rest of the code that Rob
has tracked down.

We can handle it like a feed with ASF::Value type patterns in path.pm

Or we can use xslt and parse a file file in view.pm

Or a combination.



ummm...not sure about this. We would need to do more thorough
investigation
here. Right now, I can not easily determine how this column is generated
--
manually vs something else.


I did a little research on how the ASF home page works.

You cans see the source here:
http://svn.apache.org/repos/asf/infrastructure/site/trunk/

index.html is here:

http://svn.apache.org/repos/asf/infrastructure/site/trunk/content/index.html

and Latest Activity looks like this:

<h3>Latest Activity</h3>
       <div class="section-content">
         <p><em>This is an overview of activity going on with our
projects. SVN commits, bug reports, tweets, you name it</em>.</p>
       </div>

                          {% for e in twitter.list %}
                          <div class="section-content">
                          <a href="{{ e.url }}">@</a>{{ e.title|safe }}
                          </div>
                          {% endfor %}

                         {% for e in svn.list %}
                         <div class="section-content">
                         <a class="svn"
href="http://svn.apache.org/viewvc?revision={{ e.revision
}};view=revision">r{{ e.revision }}</a>
                           {{ e.message|safe|truncatewords_html:20 }} ({{
                           e.projects|safe }}) &mdash;
                           <a
href="http://people.apache.org/committer-index.html#{{ e.author }}">{{
e.author }}</a>
                         </div>
                         {% endfor %}

                          {% for e in jira.list %}
                          <div class="section-content">
                          <a class="bug" href="{{ e.url }}">{{
e.title|safe }}</a><br/>
                          {{ e.content|safe|truncatewords_html:20 }}
                          </div>
                          {% endfor %}

     </div>



So they are iterating over twitter.list, svn.list and jira.list.  But
it is not leaping out at me where that data comes from.  Presumably it
is RSS/Atom feeds, but I don't see the glue that connects this.


Take a look at www.apache.org's trunk/lib/path.pm:

our @patterns = (

      [qr!^/index\.html$!, news_page =>
        {
          svn      => ASF::Value::SVN->new(limit => 5),
          jira     => ASF::Value::Jira->new(limit => 5,
                                            url =>
"http://s.apache.org/q4";),
          announce => ASF::Value::Mail->new(list => 'annou...@apache.org',
                                            limit => 3),
          planet   => ASF::Value::Blogs->new(blog => "planet", limit=> 3),
          blog     => ASF::Value::Blogs->new(blog => "foundation", limit=>
3),
          twitter  => ASF::Value::Twitter->new(name => 'TheASF', limit =>
3),
        },
      ],

      [qr!^/dev/index\.html$!, news_page =>
        {
          svn      => ASF::Value::SVN->new(limit => 5),
          twitter  => ASF::Value::Twitter->new(name=>"infrabot", limit =>
3),
          blog     => ASF::Value::Blogs->new(blog => "infra", limit=> 3),
          jira     => ASF::Value::Jira->new(limit => 5,
                                            url =>
"http://s.apache.org/lg";),
        },
      ],

      [qr!^/dev/sitemap\.html$!, sitemap => { headers => { title =>
"Developer Sitemap" }} ],

      [qr!^/licenses/exports/index\.html$!, exports => {} ],

      [qr!\.mdtext$!, single_narrative => { template =>
"single_narrative.html" }],
);

And also view.pm, doap2perl.xsl and list2urls.xsl

sub news_page {
      my %args = @_;
      my $count=0;
      for (fetch_doap_url_list()) {
          my $result = parse_doap($_);
          next unless defined $result;
          push @{$args{projects}}, $result;
          last if ++$count == 3;
      }

      return ASF::View::news_page(%args);
}

sub parse_doap {
      my $url = shift;
      my $doap = get $url or die "Can't get $url: $!\n";
      my ($fh, $filename) = tempfile("XXXXXX");
      print $fh $doap;
      close $fh;
      my $result = eval `xsltproc lib/doap2perl.xsl $filename`;
      unlink $filename;
      return undef if $result->{pmc} =~ m!^http://attic\.apache\.org!;
      return $result;
}

sub fetch_doap_url_list {
      my $xml = get
"http://svn.apache.org/repos/asf/infrastructure/site-tools/trunk/projects/files.xml";
          or die "Can't get doap file list: $!\n";
      my ($fh, $filename) = tempfile("XXXXXX");
      print $fh $xml;
      close $fh;
      chomp(my @urls = grep /^http/, `xsltproc lib/list2urls.xsl
$filename`);
      unlink $filename;
      shuffle \@urls;
      return @urls;
}




But in any case, if this is doable within the CMS -- as it appears to
be -- then one option would be for us to format our news stories as
Atom or RSS feeds.  Then those can be sucked into a panel on the
homepage.  But the nice thing then is the same logic could be used to
put in a list of new bug reports, or forum posts, or check-ins, or
conference paper submissions, or whatever other useful info we can
find a feed for.   We set up a generic capability that could find
other users.


The CMS has perl libraries here:

URL: https://svn.apache.org/repos/infra/websites/cms/build/lib/ASF

./SVNUtil.pm
./Util.pm
./Value/Blogs.pm
./Value/Jira.pm
./Value/Mail.pm
./Value/SVN.pm
./Value/Twitter.pm
./Value.pm
./View.pm

Best Regards,
Dave


OK, this is interesting, and thanks for all the useful information. I'm
going to take a wild guess here without looking at the modules yet and say
the "limit" variable is used to limit each of these feeds to 5 instances of
whatever the feed contains.

At any rate, we could do something like this but it still would not solve a
LONG column without scrolling capabilities problem.


I had the impression we had two main layout options:  1) Give a fixed
space to the column, and scroll if the content requires more space, or
2) display the column with its natural height, which would push the
page footer further down.

Doing 2) should be OK if we can limit the new stories to a reasonable
number.  (That's essentially what we started with, right?).

-Rob

well ... we could 2) *now* with the News stuff and just chop off what we think is way past it's prime, and change the styling so no scroll bars appear.

My opinion is that once we get articles past say roughly 5" longer than the main part of the page -- the important menu items, things start looking pretty ugly. But maybe that's just me.

And, I don't really like the idea of pushing the footer out of sight if you will because it does contain important information.

At any rate, so far so far no joy with how to do "better" scroll bars...I'm still looking




But, we should investigate/test/try this I think.





-Rob


In any case, removing the scrolling styling from the current ssi would
certainly do away with the bars. If we wanted to keep all the news items
in
one file but only bring in like the last 10 or something, there MAY be a
way to do that. You could certainly do it either with server side JS or
a
cgi.

Anyway, I will hold up on this change for now I guess.

I agree that the scroll "bars" don't look very professional. I may find
some nicer looking scrolling mechanism...



-Rob

Thereafter all "news" items will not be added to the home page
directly

or

to /news/index.html, but to /news/newslist.ssi (this is a text file,
not
html), LIFO order, maintaining the styling you see for other items
there.

--

------------------------------------------------------------------------
MzK

"No act of kindness, no matter how small, is ever wasted."
                                  -- Aesop





--

----------------------------------------------------------------------------------------
MzK

"No act of kindness, no matter how small, is ever wasted."

--
Aesop



--
------------------------------------------------------------------------
MzK

"No act of kindness, no matter how small, is ever wasted."
                                  -- Aesop

--
------------------------------------------------------------------------
MzK

"No act of kindness, no matter how small, is ever wasted."
                                 -- Aesop

Reply via email to