[livejournal] r17622: LJSUP-7052. Add Vertical top posts
Committer: gprochaev
LJSUP-7052. Add Vertical top postsU trunk/cgi-bin/LJ/Browse.pm U trunk/cgi-bin/LJ/Vertical.pm U trunk/cgi-bin/LJ/VerticalEditorials.pm U trunk/cgi-bin/LJ/Widget/AddVerticalEditorials.pm U trunk/cgi-bin/LJ/Widget/Browse.pm U trunk/cgi-bin/LJ/Widget/VerticalContentControl.pm U trunk/htdocs/admin/browse/add_community.bml U trunk/htdocs/admin/browse/index.bml U trunk/htdocs/admin/browse/manage_category.bml U trunk/htdocs/admin/browse/recent_posts.bml A trunk/htdocs/admin/browse/top_entries_vertical.bml U trunk/htdocs/browse/index.bml U trunk/templates/Browse/sidebar.tmpl A trunk/templates/Browse/top_posts.tmpl
Modified: trunk/cgi-bin/LJ/Browse.pm
===================================================================
--- trunk/cgi-bin/LJ/Browse.pm 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/cgi-bin/LJ/Browse.pm 2010-11-01 06:13:08 UTC (rev 17622)
@@ -246,10 +246,10 @@
my $vert_id = $vertical ? $vertical->vert_id : undef;
my $where = '';
- $where = ' WHERE vert_id = ? ' if $vert_id;
+ $where = " WHERE vert_id = $vert_id " if $vert_id;
my $sth = $dbh->prepare("SELECT * FROM category" . $where);
- $sth->execute($vert_id);
+ $sth->execute();
die $dbh->errstr if $dbh->err;
my @categories;
@@ -373,7 +373,7 @@
## Vertical is not set
return undef unless $v_uri;
- my $vertical = LJ::Vertical->load_by_url ($v_uri);
+ #my $vertical = LJ::Vertical->load_by_url ($v_uri);
#return $vertical;
# check cache now for full URI
@@ -701,6 +701,7 @@
sub load_communities {
my $self = shift;
+ my %args = @_;
# check memcache for data
my $memval = LJ::MemCache::get($self->memkey_catid_journals());
@@ -712,8 +713,19 @@
my $dbh = LJ::get_db_reader()
or die "unable to contact global db slave to load category";
- my $sth = $dbh->prepare("SELECT * FROM categoryjournals WHERE catid=?");
- $sth->execute($self->catid);
+ my @cats = ( $self->catid );
+ if ($args{'is_need_child'}) {
+ ## get communities from child category too. need for Info (Admin Page), for example
+ my $sth = $dbh->prepare("SELECT catid FROM category WHERE parentcatid = ?");
+ $sth->execute($self->catid);
+ while (my $row = $sth->fetchrow_hashref) {
+ push @cats, $row->{'catid'};
+ }
+ }
+
+ my @ph = map { '?' } @cats;
+ my $sth = $dbh->prepare("SELECT * FROM categoryjournals WHERE catid IN (".(join ",", @ph).")");
+ $sth->execute(@cats);
my $jrow;
while (my $row = $sth->fetchrow_hashref) {
push @{$jrow->{communities}}, $row->{journalid};
@@ -727,6 +739,13 @@
# Accessors
#
#
+
+sub vertical {
+ my $self = shift;
+
+ return LJ::Vertical->load_by_id ($self->vert_id);
+}
+
sub children {
my $self = shift;
my %opts = @_;
@@ -769,11 +788,14 @@
sub path {
my $c = shift;
my $p = '';
+ my $v = undef;
if ($c->parent) {
$p = $c->parent->url_path . $p;
$p = path($c->parent) . $p;
+ } else {
+ $v = LJ::Vertical->load_by_id ($c->vert_id);
}
- return $p;
+ return $v ? $v->uri . $p : $p;
}
# returns full URL for a category
@@ -783,7 +805,7 @@
return undef unless $vertical;
- my $base = "$LJ::SITEROOT/browse".$vertical->uri;
+ my $base = "$LJ::SITEROOT/browse";
return $base . $self->uri . "/";
}
@@ -828,8 +850,10 @@
# Returns User objects
sub communities {
my $self = shift;
- $self->load_communities unless $self->{_loaded_journals};
+ my %args = @_;
+ $self->load_communities ( %args ) unless ($args{'is_need_child'} && $self->{_loaded_journals});
+
my $comms = $self->{communities};
my $cusers = LJ::load_userids(@$comms);
@@ -950,6 +974,7 @@
sub display_name { shift->_get_set('pretty_name') }
sub url_path { shift->_get_set('url_path') }
sub parentid { shift->_get_set('parentcatid') }
+sub vert_id { shift->_get_set('vert_id') }
# Community Moderation
Modified: trunk/cgi-bin/LJ/Vertical.pm
===================================================================
--- trunk/cgi-bin/LJ/Vertical.pm 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/cgi-bin/LJ/Vertical.pm 2010-11-01 06:13:08 UTC (rev 17622)
@@ -42,7 +42,7 @@
#
my %singletons = (); # vertid => singleton
-my @vert_cols = qw( vert_id url journal name createtime lastfetch );
+my @vert_cols = qw( vert_id url journal name createtime lastfetch show_entries not_deleted remove_after );
sub min_age_of_poster_account {
my $class = shift;
@@ -373,7 +373,7 @@
my $reqcache = $LJ::REQ_GLOBAL{vertname}->{$name};
if ($reqcache) {
- my $v = $class->new( vertid => $reqcache->{vertid} );
+ my $v = $class->new( vert_id => $reqcache->{vert_id} );
$v->absorb_row($reqcache);
return $v;
@@ -382,7 +382,7 @@
# check memcache for data
my $memval = LJ::MemCache::get($class->memkey_vertname($name));
if ($memval) {
- my $v = $class->new( vertid => $memval->{vertid} );
+ my $v = $class->new( vert_id => $memval->{vert_id} );
$v->absorb_row($memval);
$LJ::REQ_GLOBAL{vertname}->{$name} = $memval;
@@ -393,12 +393,12 @@
or die "unable to contact global db master to load vertical";
# not in memcache; load from db
- my $sth = $dbh->prepare("SELECT * FROM vertical WHERE name = ?");
+ my $sth = $dbh->prepare("SELECT * FROM vertical2 WHERE name = ?");
$sth->execute($name);
die $dbh->errstr if $dbh->err;
if (my $row = $sth->fetchrow_hashref) {
- my $v = $class->new( vertid => $row->{vertid} );
+ my $v = $class->new( vert_id => $row->{vert_id} );
$v->absorb_row($row);
$v->set_memcache;
$LJ::REQ_GLOBAL{vertname}->{$name} = $row;
@@ -540,13 +540,25 @@
my $class = shift;
my @verticals;
- foreach my $vertname (keys %LJ::VERTICAL_TREE) {
- next unless $LJ::VERTICAL_TREE{$vertname}->{has_editorials};
- my $v = $class->load_by_name($vertname);
- push @verticals, $v if $v;
+ my $dbh = LJ::get_db_writer()
+ or die "unable to contact global db master to load vertical";
+
+ my $sth = $dbh->prepare("SELECT * FROM vertical2");
+ $sth->execute;
+ die $dbh->errstr if $dbh->err;
+
+ my @verticals;
+ while (my $row = $sth->fetchrow_hashref) {
+ my $v = $class->new( vert_id => $row->{vert_id} );
+ $v->absorb_row($row);
+ $v->set_memcache;
+
+ push @verticals, $v;
}
+ #next unless $LJ::VERTICAL_TREE{$vertname}->{has_editorials};
+
return sort { lc $a->display_name cmp lc $b->display_name } @verticals;
}
@@ -574,6 +586,30 @@
# Loaders
#
+## Return a list of Top Entries in communities
+## Arg:
+## - count - for admin page - all (Inf), for widget - 5, for example
+## - is_random - need to shuffle?
+sub load_vertical_posts {
+ my $self = shift;
+ my %args = @_;
+
+ my $is_random = $args{'is_random'};
+
+ my $dbh = LJ::get_db_writer();
+ my $posts = $dbh->selectall_arrayref("SELECT * FROM vertical_posts WHERE vert_id = ?", { Slice => {} }, $self->vert_id);
+ my $max_num = scalar @$posts;
+ my $count = $args{'count'};
+ $count = $max_num if $count > $max_num;
+ my @result = ();
+ while ($count--) {
+ my $post = $posts->[int(rand($max_num))];
+ push @result, $post if $post;
+ }
+
+ return \@result;
+}
+
sub memkey_vertid {
my $self = shift;
my $id = shift;
@@ -722,7 +758,7 @@
my @vals = keys %need;
my $bind = LJ::bindstr(@vals);
- my $sth = $dbh->prepare("SELECT * FROM vertical WHERE vert_id IN ($bind)");
+ my $sth = $dbh->prepare("SELECT * FROM vertical2 WHERE vert_id IN ($bind)");
$sth->execute(@vals);
while (my $row = $sth->fetchrow_hashref) {
@@ -847,7 +883,7 @@
# db contains storable object
my $rules = $dbh->selectrow_array("SELECT rules FROM vertical_rules WHERE vertid=?",
- undef, $self->vertid);
+ undef, $self->vert_id);
die $dbh->errstr if $dbh->err;
# if we got something, deserialize it
@@ -989,6 +1025,37 @@
# Accessors
#
+sub delete_post {
+ my $self = shift;
+ my %args = @_;
+
+ my $post_id = $args{'post_id'};
+
+ my ($jitemid, $journalid) = $post_id =~ m#^(\d+)-(\d+)$#; ## Parse key
+
+ return undef unless $journalid && $jitemid;
+
+ my $dbh = LJ::get_db_writer();
+ my $res = $dbh->do("DELETE FROM vertical_posts WHERE vert_id = ? AND journalid = ? AND jitemid = ?", undef, $self->vert_id, $journalid, $jitemid);
+ return $res;
+}
+
+sub add_post {
+ my $self = shift;
+ my $url = shift;
+
+ my $entry = LJ::Entry->new_from_url ($url);
+
+ return undef unless $entry;
+
+ my $dbh = LJ::get_db_writer();
+ my $res = $dbh->do("INSERT INTO vertical_posts (vert_id, journalid, jitemid, timecreate, timeadded) VALUES
+ (?, ?, ?, ?, UNIX_TIMESTAMP())", undef, $self->vert_id, $entry->journalid, $entry->jitemid, $entry->logtime_unix);
+
+ return $res;
+
+}
+
sub add_entry {
my $self = shift;
my @entries = @_;
@@ -1251,7 +1318,8 @@
sub display_name {
my $self = shift;
- return $LJ::VERTICAL_TREE{$self->name}->{display_name};
+ return $self->name;
+ #return $LJ::VERTICAL_TREE{$self->name}->{display_name};
}
sub url {
@@ -1390,16 +1458,22 @@
return $self->{$key};
}
-sub vert_id { shift->_get_set('vert_id') }
-sub name { shift->_get_set('name') }
-sub set_name { shift->_get_set('name' => $_[0]) }
-sub uri { shift->_get_set('url') }
-sub set_uri { shift->_get_set('url' => $_[0]) }
-sub journal { shift->_get_set('journal') }
-sub set_journal { shift->_get_set('journal' => $_[0]) }
-sub createtime { shift->_get_set('createtime') }
-sub set_createtime { shift->_get_set('createtime' => $_[0]) }
-sub lastfetch { shift->_get_set('lastfetch') }
-sub set_lastfetch { shift->_get_set('lastfetch' => $_[0]) }
+sub vert_id { shift->_get_set('vert_id') }
+sub name { shift->_get_set('name') }
+sub set_name { shift->_get_set('name' => $_[0]) }
+sub uri { shift->_get_set('url') }
+sub set_uri { shift->_get_set('url' => $_[0]) }
+sub journal { shift->_get_set('journal') }
+sub set_journal { shift->_get_set('journal' => $_[0]) }
+sub createtime { shift->_get_set('createtime') }
+sub set_createtime { shift->_get_set('createtime' => $_[0]) }
+sub lastfetch { shift->_get_set('lastfetch') }
+sub set_lastfetch { shift->_get_set('lastfetch' => $_[0]) }
+sub show_entries { shift->_get_set('show_entries') }
+sub set_show_entries { shift->_get_set('show_entries' => $_[0]) }
+sub not_deleted { shift->_get_set('not_deleted') }
+sub set_not_deleted { shift->_get_set('not_deleted' => $_[0]) }
+sub remove_after { shift->_get_set('remove_after') }
+sub set_remove_after { shift->_get_set('remove_after' => $_[0]) }
1;
Modified: trunk/cgi-bin/LJ/VerticalEditorials.pm
===================================================================
--- trunk/cgi-bin/LJ/VerticalEditorials.pm 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/cgi-bin/LJ/VerticalEditorials.pm 2010-11-01 06:13:08 UTC (rev 17622)
@@ -79,7 +79,7 @@
my $sth = $dbh->prepare(
"SELECT * FROM vertical_editorials WHERE time_start <= UNIX_TIMESTAMP() AND time_end >= UNIX_TIMESTAMP() AND vertid = ?"
);
- $sth->execute($vertical->vertid);
+ $sth->execute($vertical->vert_id);
my @rows = ();
while (my $row = $sth->fetchrow_hashref) {
@@ -207,7 +207,7 @@
"(time_start <= ? AND time_end >= ?))"
);
$sth->execute(
- $vertical->vertid, $time_start_epoch, $time_start_epoch, $time_end_epoch, $time_end_epoch,
+ $vertical->vert_id, $time_start_epoch, $time_start_epoch, $time_end_epoch, $time_end_epoch,
$time_start_epoch, $time_end_epoch, $time_start_epoch, $time_end_epoch
)
or die "Error getting this month's editorials: " . $dbh->errstr;
Modified: trunk/cgi-bin/LJ/Widget/AddVerticalEditorials.pm
===================================================================
--- trunk/cgi-bin/LJ/Widget/AddVerticalEditorials.pm 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/cgi-bin/LJ/Widget/AddVerticalEditorials.pm 2010-11-01 06:13:08 UTC (rev 17622)
@@ -91,7 +91,7 @@
name => 'vertid',
id => 'vertid',
selected => $vertid || 0,
- list => [ "0", "(Choose one)", map { $_->vertid, $_->display_name } LJ::Vertical->load_for_editorials ],
+ list => [ "0", "(Choose one)", map { $_->vert_id, $_->display_name } LJ::Vertical->load_for_editorials ],
) . "</td></tr>";
$ret .= "<tr><td>Start Date:</td><td>";
Modified: trunk/cgi-bin/LJ/Widget/Browse.pm
===================================================================
--- trunk/cgi-bin/LJ/Widget/Browse.pm 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/cgi-bin/LJ/Widget/Browse.pm 2010-11-01 06:13:08 UTC (rev 17622)
@@ -86,7 +86,7 @@
return $class->render_body_old(%opts) unless exists $opts{browse};
- my ($title, $windowtitle, $remote, $uri, $page, $post_page) = @opts{qw(title windowtitle remote uri page post_page)};
+ my ($title, $windowtitle, $remote, $uri, $page, $post_page, $view) = @opts{qw(title windowtitle remote uri page post_page view)};
my $template = LJ::HTML::Template->new(
{ use_expr => 1 }, # force HTML::Template::Pro with Expr support
@@ -170,14 +170,14 @@
(pop(@cat_title) || '');
# show actual communities
- if ($cat->parent) {
+ #if ($cat->parent) {
if ($cat->{'pretty_name'} eq 'lj_spotlight_community') {
# Load communities saved by spotlight admin
@comms = _get_spotlight_communities(); # Load communities saved by spotlight admin
} else {
@comms = $cat->communities();
}
- }
+ #}
$ad = LJ::get_ads({ location => 'bml.explore/vertical', vertical => $cat->display_name, ljadwrapper => 1 });
} else {
@comms = _get_spotlight_communities(); # Show spotlight communities by default
@@ -288,6 +288,20 @@
# merge args to uri.
$uri .= '?' . $args if $args;
+ ## Prepare DATA for Featured Posts Widget
+ my $posts = $vertical->load_vertical_posts( count => $vertical->show_entries, is_random => 1 );
+ my @top_posts = ();
+ foreach my $post (@$posts) {
+ my $entry = LJ::Entry->new ($post->{journalid}, jitemid => $post->{jitemid});
+ my $userpic = $entry->userpic;
+ push @top_posts, {
+ subject => $entry->subject_text,
+ userpic => $userpic ? $userpic->url : '',
+ updated_ago => LJ::TimeUtil->ago_text($entry->logtime_unix),
+ comments_count => $entry->reply_count,
+ };
+ }
+
$template->param(
communities => \@tmpl_communities,
posts => \@tmpl_posts,
@@ -311,6 +325,8 @@
popular_interests_widget=> LJ::Widget::PopularInterests->render(),
add_community_widget => LJ::Widget::AddCommunity->render(),
search_widget => LJ::Widget::Search->render(type => 'yandex'),
+ top_posts => \@top_posts,
+ view => $view,
);
return $template->output;
Modified: trunk/cgi-bin/LJ/Widget/VerticalContentControl.pm
===================================================================
--- trunk/cgi-bin/LJ/Widget/VerticalContentControl.pm 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/cgi-bin/LJ/Widget/VerticalContentControl.pm 2010-11-01 06:13:08 UTC (rev 17622)
@@ -32,13 +32,13 @@
if (@verticals > 1) {
$ret .= $class->html_select(
name => 'verticals',
- list => [ map { $_->vertid, $_->display_name } @verticals ],
+ list => [ map { $_->vert_id, $_->display_name } @verticals ],
multiple => 'multiple',
size => 5,
);
} else {
$ret .= "<strong>" . $verticals[0]->display_name . "</strong>";
- $ret .= $class->html_hidden( verticals => $verticals[0]->vertid );
+ $ret .= $class->html_hidden( verticals => $verticals[0]->vert_id );
}
$ret .= "</td></tr>";
@@ -147,7 +147,7 @@
$ret .= "<form method='GET'>";
$ret .= "Define rules for vertical: ";
if (@verticals > 1) {
- $ret .= LJ::html_select({ name => 'vertical_name' }, map { $_->name, $_->display_name } @verticals);
+ $ret .= LJ::html_select({ name => 'vertical_name' }, map { { text => $_->name, value => $_->display_name } } @verticals);
} else {
$ret .= "<strong>" . $verticals[0]->display_name . "</strong>";
$ret .= LJ::html_hidden( vertical_name => $verticals[0]->name );
@@ -231,8 +231,8 @@
my @verticals = split('\0', $post->{verticals});
my @vert_names;
- foreach my $vertid (@verticals) {
- my $v = LJ::Vertical->load_by_id($vertid);
+ foreach my $vert_id (@verticals) {
+ my $v = LJ::Vertical->load_by_id($vert_id);
die "You cannot perform this action." if $action eq "add" && !$v->remote_is_moderator;
die "You cannot perform this action." if $action eq "remove" && !$v->remote_can_remove_entry($entry);
Modified: trunk/htdocs/admin/browse/add_community.bml
===================================================================
--- trunk/htdocs/admin/browse/add_community.bml 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/htdocs/admin/browse/add_community.bml 2010-11-01 06:13:08 UTC (rev 17622)
@@ -70,7 +70,7 @@
# Get the full list of categories
my @categories = LJ::Browse->load_all;
# Don't include the top level categories and get the unique URI for each
- my @caturls = map { $_->uri, $_->uri } grep { $_->parent } @categories;
+ my @caturls = map { { text => $_->{pretty_name}, value => $_->uri } } @categories;
@caturls = sort { $a cmp $b } @caturls;
$ret .= "<p>Add to Category:<br />";
Modified: trunk/htdocs/admin/browse/index.bml
===================================================================
--- trunk/htdocs/admin/browse/index.bml 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/htdocs/admin/browse/index.bml 2010-11-01 06:13:08 UTC (rev 17622)
@@ -23,6 +23,7 @@
$ret .= "<p><a href='./remove_verticals.bml'>Remove Verticals</a></p>";
$ret .= "<p><a href='./upload_verticals.bml'>Upload Verticals</a></p>";
$ret .= "<p><a href='./recent_posts.bml'>Manage Recent Posts</a></p>";
+ $ret .= "<p><a href='./top_entries_vertical.bml'>Top Entries in communities</a></p>";
$ret .= "</blockquote>";
$ret .= "<h2>Manage Communities</h2><blockquote>";
Modified: trunk/htdocs/admin/browse/manage_category.bml
===================================================================
--- trunk/htdocs/admin/browse/manage_category.bml 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/htdocs/admin/browse/manage_category.bml 2010-11-01 06:13:08 UTC (rev 17622)
@@ -17,38 +17,67 @@
$title = "Move Category To Vertical";
my $ret = "";
- my ($vertid, $caturl) = ();
+ my ($vert_url, $cat_url) = ();
+ if (LJ::did_post() and $POST{'show'}) {
+ $cat_url = $POST{'cat_url'};
+
+ {
+ # Check for required data
+ unless ($cat_url) {
+ push @errors, "Please select a category for source";
+ next;
+ }
+
+ my $category = LJ::Browse->load_by_url("/browse" . $cat_url);
+ ## Category till is not in vertical?
+ $category = LJ::Browse->load_by_url("/browse" . "/notset" . $cat_url)
+ unless $category;
+ unless ($category) {
+ push @errors, "Invalid category" unless $category;
+ next;
+ }
+
+ $ret .= "Category '".$category->{pretty_name}."' belongs '".$category->vertical->name."' vertical<br/>";
+ $ret .= "Category contains the following communities:<br/>";
+ foreach my $comm ($category->communities( is_need_child => 1 )) {
+ $ret .= $comm->ljuser_display() . "<br/>";
+ }
+ }
+
+ }
+
if (LJ::did_post() and $POST{'move'}) {
- $caturl = $POST{'caturl'};
- $vertid = $POST{'vertid'};
+ $cat_url = $POST{'cat_url'};
+ $vert_url = $POST{'vert_url'};
push @errors, "Invalid form submission" unless LJ::check_form_auth();
{
# Check for required data
- unless ($caturl) {
+ unless ($cat_url) {
push @errors, "Please select a category for source";
next;
}
- unless ($vertid) {
+ unless ($vert_url) {
push @errors, "Please select a vertical for destination";
next;
}
+ # Has a valid vertical been chosen
+ my $vertical = LJ::Vertical->load_by_url("/browse" . $vert_url);
+ push @errors, "Invalid vertical" unless $vertical;
+
# Has a valid category been chosen
- my $category = LJ::Browse->load_by_url("/browse" . $caturl);
+ my $category = LJ::Browse->load_by_url("/browse" . $vert_url . $cat_url);
push @errors, "Invalid category" unless $category;
- # Has a valid vertical been chosen
- my $vertical = LJ::Vertical->load_by_id($vertid);
- push @errors, "Invalid vertical" unless $vertical;
-
next if @errors;
# Move category
my $dbh = LJ::get_db_writer();
- my $res = $dbh->do("UPDATE category SET vert_id = ? WHERE catid = ?", undef, $vertical->vert_id, $category->catid);
- if ($res) {
+ my $res = $dbh->do("UPDATE category SET vert_id = ? WHERE catid = ?", undef, $vertical->vert_id, $category->catid);
+ my $res_sub = $dbh->do("UPDATE category SET vert_id = ? WHERE parentcatid = ?", undef, $vertical->vert_id, $category->catid);
+ if ($res && $res_sub) {
$ret .= "<span class='super notice'>Category moved.</span>";
} else {
$ret .= "<span class='super notice'>Category not moved.</span>";
@@ -64,16 +93,17 @@
# Get the full list of categories
my @categories = LJ::Browse->load_all;
# Get the unique URI for each
- my @caturls = map { { text => $_->{pretty_name}, value => $_->uri } } grep { $_->{parentcatid} } @categories;
+ my @caturls = map { { text => $_->{pretty_name}, value => $_->uri } } grep { !$_->{parentcatid} } @categories;
#@caturls = sort { $a cmp $b } @caturls;
my @verticals = LJ::Vertical->load_all();
- @verticals = map { { text => $_->{name}, value => $_->{vert_id} } } @verticals;
+ @verticals = map { { text => $_->{name}, value => $_->{url} } } @verticals;
$ret .= "<table border='0'>";
$ret .= "<tr><td>Category</td><td>=></td><td>Vertical</td>";
$ret .= "<tr><td>".LJ::html_select({
- name => 'caturl',
+ name => 'cat_url',
+ selected => $cat_url,
},
{ text => 'Select Top Category',
value => '',},
@@ -82,7 +112,8 @@
$ret .= "</td>\n";
$ret .= "<td> </td>";
$ret .= "<td>".LJ::html_select({
- name => 'vertid',
+ name => 'vert_url',
+ selected => $vert_url,
},
{ text => 'Select Vertical',
value => '',},
@@ -93,6 +124,7 @@
$ret .= "</table></p>\n";
$ret .= "<p>" . LJ::html_submit('move', 'Move') . "</p>";
+ $ret .= "<p>" . LJ::html_submit('show', 'Show Info') . "</p>";
$ret .= "</form>";
Modified: trunk/htdocs/admin/browse/recent_posts.bml
===================================================================
--- trunk/htdocs/admin/browse/recent_posts.bml 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/htdocs/admin/browse/recent_posts.bml 2010-11-01 06:13:08 UTC (rev 17622)
@@ -43,7 +43,6 @@
$ret .= "</form>";
if (LJ::did_post()) {
-use Data::Dumper;
my $vertical = LJ::Vertical->load_by_id($POST{'vert_id'});
my $cats = $vertical->get_categories;
$ret .= "<b><div>Recent Posts</div></p>";
@@ -54,9 +53,9 @@
push @communities, @{$c->{communities}}
if $c->{communities};
};
-warn Dumper \@communities;
+
my @posts = LJ::Browse->recent_posts(\@communities, 5);
-warn Dumper \@posts;
+
foreach (@posts) {
my $url = $_->url;
my $subject = $_->subject_text;
Added: trunk/htdocs/admin/browse/top_entries_vertical.bml
===================================================================
--- trunk/htdocs/admin/browse/top_entries_vertical.bml (rev 0)
+++ trunk/htdocs/admin/browse/top_entries_vertical.bml 2010-11-01 06:13:08 UTC (rev 17622)
@@ -0,0 +1,131 @@
+<?page
+body<=
+<?_code
+{
+ use strict;
+ use vars qw(%GET %POST $title $headextra @errors @warnings);
+ use Class::Autouse qw( LJ::Browse );
+
+ my $remote = LJ::get_remote();
+
+ return "<?needlogin?>"
+ unless $remote;
+
+ return "You are not allowed to view this page"
+ unless LJ::check_priv($remote, 'siteadmin', 'community_directory') || $LJ::IS_DEV_SERVER;
+
+ $title = "Top Entries in communities";
+ my $ret = "";
+
+ my $vert_id = $POST{'vert_id'};
+ my $journals = $POST{'journals'};
+
+ $ret .= "<form method='POST'>\n";
+ $ret .= LJ::form_auth();
+
+ # Get the full list of categories
+ my @verticals = LJ::Vertical->load_all;
+ # Don't include the top level categories and get the unique URI for each
+
+ my @vert_ids = map { { value => $_->vert_id, text => $_->name } } @verticals;
+ @vert_ids = sort { $a cmp $b } @vert_ids;
+
+ $ret .= "<p>Select vertical:";
+ $ret .= LJ::html_select({
+ name => 'vert_id',
+ selected => $vert_id },
+ { text => 'Select Category',
+ value => '' },
+ @vert_ids
+ );
+ $ret .= " " . LJ::html_submit('go', 'Go') . "</p>";
+
+ $ret .= "</form>";
+
+ my $vertical = undef;
+ if ($vert_id) {
+ $vertical = LJ::Vertical->load_by_id($vert_id);
+ }
+
+ if (LJ::did_post() && $POST{'store'}) {
+ $vertical->set_show_entries ($POST{'show_entries'});
+ $vertical->set_not_deleted ($POST{'not_deleted'});
+ $vertical->set_remove_after ($POST{'remove_after'});
+ }
+
+ if ($vert_id) {
+ my ($show_entries, $not_deleted, $remove_after) = ();
+ if ($vertical) {
+ $show_entries = $vertical->show_entries;
+ $not_deleted = $vertical->not_deleted;
+ $remove_after = $vertical->remove_after;
+ }
+ $ret .= <<ADDPOST;
+<form method="post">
+<input type="hidden" name="vert_id" value="$vert_id">
+<table>
+ <caption>Enter URL for adding featured post:</caption>
+ <tr>
+ <td>URL:</td><td colspan="2"><input type="text" size="50" name="url"></td>
+ <td colspan="2"><input type="submit" name="add" value="Add"></td>
+ </tr>
+</table>
+</form>
+<br/>
+<br/>
+<form method="post">
+<input type="hidden" name="vert_id" value="$vert_id">
+<table>
+ <tr>
+ <td>Number of shown entries: <input type="text" size="3" name="show_entries" value="$show_entries"></td>
+ </tr>
+ <tr>
+ <td>Number of entries, that can not be deleted: <input type="text" size="3" name="not_deleted" value="$not_deleted"> <input type="submit" name="store" value="Store"></td>
+ </tr>
+ <tr>
+ <td>Remove post from widget after: <input type="text" size="3" name="remove_after" value="$remove_after"></td>
+ </tr>
+</table>
+</form><br/><br/>
+ADDPOST
+
+ }
+
+ if (LJ::did_post() && $POST{'add'}) {
+ $vertical->add_post ($POST{'url'});
+ }
+
+ if (LJ::did_post() && $POST{'delete_post'}) {
+ $vertical->delete_post (post_id => $POST{'rec_id'});
+ }
+
+ if (LJ::did_post()) {
+ $ret .= "<b><div>Added Posts</div></p>";
+ my $posts = $vertical->load_vertical_posts( count => '100', is_random => 0 );
+
+ foreach (@$posts) {
+ my $entry = LJ::Entry->new ($_->{journalid}, jitemid => $_->{jitemid});
+ my $url = $entry->url;
+ my $subject = $entry->subject_text;
+ my $jitemid = $entry->jitemid;
+ my $commid = $entry->journalid;
+ $ret .= "<li><a href='".$url."'>".($subject ? $subject : '...')."</a>";
+ $ret .= "<form method='POST'>\n";
+ $ret .= LJ::form_auth();
+ $ret .= "<input type='hidden' name='rec_id' value='$jitemid-$commid'>";
+ $ret .= "<input type='hidden' name='vert_id' value='".$vertical->vert_id."'>";
+ $ret .= "<input type='submit' name='delete_post' value='Remove post'>" if scalar @$posts > $vertical->not_deleted;
+ $ret .= "</form>";
+ }
+ }
+
+
+ return "<body>$ret</body>";
+}
+_code?>
+<=body
+title=><?_code return $title; _code?>
+head<=
+<?_code return $headextra; _code?>
+<=head
+page?>
Modified: trunk/htdocs/browse/index.bml
===================================================================
--- trunk/htdocs/browse/index.bml 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/htdocs/browse/index.bml 2010-11-01 06:13:08 UTC (rev 17622)
@@ -20,6 +20,7 @@
my $page = defined $GET{page} ? $GET{page} : 1;
my $post_page = defined $GET{post_page} ? $GET{post_page} : 1;
+ my $view = defined $GET{'view'} ? $GET{'view'} : 'recent_posts';
my $vertical = LJ::Vertical->load_by_url($uri);
unless ($vertical) {
@@ -37,6 +38,7 @@
uri => $uri,
page => $page,
post_page => $post_page,
+ view => $view,
);
}
_code?>
Modified: trunk/templates/Browse/sidebar.tmpl
===================================================================
--- trunk/templates/Browse/sidebar.tmpl 2010-10-29 11:05:00 UTC (rev 17621)
+++ trunk/templates/Browse/sidebar.tmpl 2010-11-01 06:13:08 UTC (rev 17622)
@@ -7,3 +7,5 @@
<TMPL_IF 0><TMPL_VAR popular_interests_widget></TMPL_IF>
<TMPL_VAR add_community_widget>
+<tmpl_include top_posts.tmpl>
+
Added: trunk/templates/Browse/top_posts.tmpl
===================================================================
--- trunk/templates/Browse/top_posts.tmpl (rev 0)
+++ trunk/templates/Browse/top_posts.tmpl 2010-11-01 06:13:08 UTC (rev 17622)
@@ -0,0 +1,8 @@
+<tmpl_loop top_posts>
+<tmpl_var subject><br/>
+<tmpl_var userpic><br/>
+<tmpl_var updated_ago><br/>
+<tmpl_var comments_count><br/>
+<hr/>
+</tmpl_loop>
+
