Committer: gprochaev
LJSUP-7052. U trunk/cgi-bin/LJ/Browse.pm U trunk/cgi-bin/LJ/URI.pm U trunk/cgi-bin/LJ/Vertical.pm U trunk/cgi-bin/LJ/Widget/Browse.pm U trunk/htdocs/admin/browse/add_category.bml U trunk/htdocs/admin/browse/add_community.bml U trunk/htdocs/admin/browse/add_verticals.bml U trunk/htdocs/admin/browse/featured_communities.bml U trunk/htdocs/admin/browse/index.bml U trunk/htdocs/admin/browse/manage_category.bml U trunk/htdocs/admin/browse/remove_category.bml U trunk/htdocs/admin/browse/remove_community.bml U trunk/htdocs/admin/browse/search_tags.bml U trunk/htdocs/admin/browse/top_entries_vertical.bml
Modified: trunk/cgi-bin/LJ/Browse.pm =================================================================== --- trunk/cgi-bin/LJ/Browse.pm 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/cgi-bin/LJ/Browse.pm 2010-11-19 06:10:07 UTC (rev 17726) @@ -62,6 +62,8 @@ } my $topcat = delete $opts{topcat} if exists $opts{topcat}; + my $vertical = delete $opts{'vertical'} if exists $opts{'vertical'}; + croak("need to supply display name") unless defined $self->{pretty_name}; croak("need to supply URL path") unless defined $self->{url_path}; @@ -86,6 +88,11 @@ die $dbh->errstr if $dbh->err; my $catid = $dbh->{mysql_insertid}; + ## Added for Landing Page + if ($vertical) { + $dbh->do("UPDATE category SET vert_id = ? WHERE catid = ?", undef, $vertical->vert_id, $catid); + } + my $tm = $self->typemap; # Handle children prop if ($self->{parentcatid}) { @@ -360,22 +367,12 @@ # 4 possibilities: # /browse - # /browse/vertical/ - # /browse/vertical/topcategory/ - # /browse/vertical/topcategory/subcategory/[subcategory] - if ($path =~ /^(\/browse.+)$/) { + # /browse/topcategory/ + # /browse/topcategory/subcategory/[subcategory] + if ($path =~ /^\/browse\/(.+)$/) { my $p = $1; my $category; - $p =~ s#^(/browse/(?:[\w\-]|[^/])+)/?##; - my $v_uri = $1; - - ## Vertical is not set - return undef unless $v_uri; - - #my $vertical = LJ::Vertical->load_by_url ($v_uri); - #return $vertical; - # check cache now for full URI my $c = $class->load_from_uri_cache("/" . $p); return $c if $c; @@ -799,18 +796,16 @@ } else { $v = $c->vert_id ? LJ::Vertical->load_by_id ($c->vert_id) : undef; } + return $v ? $v->uri . $p : $p; } # returns full URL for a category sub url { my $self = shift; - my $vertical = shift; - return undef unless $vertical; + my $base = $self->vert_id ? "$LJ::SITEROOT/vertical" : "$LJ::SITEROOT/browse"; - my $base = "$LJ::SITEROOT/browse"; - return $base . $self->uri . "/"; } @@ -937,9 +932,9 @@ $self->clear_journals_memcache; - ## Add tags for added community + ## Add tags for added community if vertical selected my $v = $self->vertical; - $v->save_tags (is_seo => 0, tags => [ map { { tag => $_, journalid => $uid } } @$tags ] ); + $v->save_tags (is_seo => 0, tags => [ map { { tag => $_, journalid => $uid } } @$tags ] ) if $v; return 1; } Modified: trunk/cgi-bin/LJ/URI.pm =================================================================== --- trunk/cgi-bin/LJ/URI.pm 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/cgi-bin/LJ/URI.pm 2010-11-19 06:10:07 UTC (rev 17726) @@ -48,19 +48,13 @@ # Now we handle verticals as subproject of community directory via LJ::Browse # ######## -=head + # handle vertical URLs if (my $v = LJ::Vertical->load_by_url($full_uri)) { - if ($v->is_canonical_url($full_uri)) { - my $args_for_redir = $args ? "?$args" : ''; - return Apache::LiveJournal::redir($v->url . $args_for_redir); - } else { - return LJ::URI->bml_handler("explore/index.bml"); - } + return LJ::URI->bml_handler("browse/index.bml"); } -=cut - if (my $c = LJ::Vertical->load_by_url($full_uri)) { + if (my $c = LJ::Browse->load_by_url($full_uri)) { return LJ::URI->bml_handler("browse/index.bml"); } Modified: trunk/cgi-bin/LJ/Vertical.pm =================================================================== --- trunk/cgi-bin/LJ/Vertical.pm 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/cgi-bin/LJ/Vertical.pm 2010-11-19 06:10:07 UTC (rev 17726) @@ -525,7 +525,7 @@ $url =~ s/^(?:$LJ::SITEROOT)?(\/.+)$//; ## $url = $1; $url =~ s#(?:\?.*)?$##; ## remove trailing slash and any get args - $url =~ m#^/browse(/[^/]*)#; ## + $url =~ m#^/vertical(/[^/]*)#; ## $url = $1; ## Something wrong with url @@ -535,7 +535,6 @@ if ($reqcache) { my $v = $class->new( vert_id => $reqcache->{vert_id} ); $v->absorb_row($reqcache); - return $v; } @@ -545,7 +544,6 @@ my $v = $class->new( vert_id => $memval->{vert_id} ); $v->absorb_row($memval); $LJ::REQ_GLOBAL{verturl}->{$url} = $memval; - return $v; } @@ -562,7 +560,6 @@ $v->absorb_row($row); $v->set_memcache; $LJ::REQ_GLOBAL{verturl}->{$url} = $row; - return $v; } @@ -1453,7 +1450,7 @@ sub url { my $self = shift; - return "$LJ::SITEROOT/browse" . $self->uri; + return "$LJ::SITEROOT/vertical" . $self->uri; } # checks to see if the given URL is the canonical URL so that we can redirect if it's not Modified: trunk/cgi-bin/LJ/Widget/Browse.pm =================================================================== --- trunk/cgi-bin/LJ/Widget/Browse.pm 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/cgi-bin/LJ/Widget/Browse.pm 2010-11-19 06:10:07 UTC (rev 17726) @@ -24,7 +24,7 @@ { name => $c->display_name(), title => $c->title_html(), - url => $c->url($vertical), + url => $c->url(), summary => LJ::Widget::CategorySummary->render( category => $c ), level => $level, is_expanded => $is_current, @@ -96,7 +96,8 @@ ) or die "Can't open template: $!"; my $vertical = LJ::Vertical->load_by_url($uri); - + $view = "communities" unless $vertical; + $$windowtitle = $vertical ? $vertical->name : $class->ml('widget.browse.windowtitle'); my $cat = LJ::Browse->load_by_url($uri); # Currently selected category @@ -104,7 +105,7 @@ my @categories = sort { lc $a->display_name cmp lc $b->display_name } LJ::Browse->load_all($vertical); my $test_uri = $uri; - $test_uri =~ s/^\/browse//; + $test_uri =~ s/^\/(browse|vertical)//; $test_uri =~ s/\/$//; my @tmpl_categories = _build_tree(undef, 0, $test_uri, $vertical, @categories); Modified: trunk/htdocs/admin/browse/add_category.bml =================================================================== --- trunk/htdocs/admin/browse/add_category.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/add_category.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -20,21 +20,19 @@ my $parentcaturl; my $newcat; my $newcaturl; + my $vert_url; if (LJ::did_post() and $POST{'add'}) { $parentcaturl = $POST{'parentcaturl'}; $newcat = $POST{'newcat'}; $newcaturl = $POST{'newcaturl'}; + $vert_url = $POST{'vert_url_add'}; + my $vertical = LJ::Vertical->load_by_url("/vertical" . $vert_url); + push @errors, "Invalid form submission" unless LJ::check_form_auth(); { # Check for required data -=head - unless ($parentcaturl) { - push @errors, "Please select a parent category"; - next; - } -=cut unless ($newcat) { push @errors, "Please enter new category display name"; next; @@ -49,20 +47,22 @@ } # Has a valid parent category been chosen - my $pcategory = LJ::Browse->load_by_url("/browse" . $parentcaturl); -# push @errors, "Invalid category" unless $pcategory; + my $pcategory = LJ::Browse->load_by_url("/browse" . ($vertical ? '' : '/community_directory') . $parentcaturl); # Does a category with the same URL path and parent already exist? - my $existcat = LJ::Browse->load_by_url("/browse" . $parentcaturl . $newcaturl); + my $existcat = LJ::Browse->load_by_url("/browse" . ($vertical ? $parentcaturl : '/community_directory' . $parentcaturl) . $newcaturl); push @errors, "Category already exists" if $existcat; next if @errors; # Add category if (LJ::Browse->create( pretty_name => $newcat, - url_path => $newcaturl, + url_path => $newcaturl, parentcatid => $pcategory ? $pcategory->catid : 0, - topcat => $POST{topcat} ) ) { + topcat => $POST{topcat}, + vertical => $vertical, + ) + ) { $ret .= "<span class='super notice'>New category created.</span>"; } else { $ret .= "<span class='super notice'>New category not created.</span>"; @@ -75,14 +75,33 @@ $ret .= "<form method='POST'>\n"; $ret .= LJ::form_auth(); + $ret .= "<p>"; + + my $vertical = undef; + if (LJ::did_post() && $POST{'select'}) { + $vert_url = $POST{'vert_url'}; + $vertical = LJ::Vertical->load_by_url("/vertical" . $vert_url); + } + + my @verticals = LJ::Vertical->load_all(); + @verticals = map { { text => $_->{name}, value => $_->{url} } } @verticals; + + $ret .= "<p>".LJ::html_select({ + name => 'vert_url', + selected => $vert_url, + }, + { text => 'Select Vertical', + value => '',}, + @verticals + ); + $ret .= " \n"; + + $ret .= LJ::html_submit('select', 'Select Vertical') . "</p>"; + # Get the full list of categories - my @categories = LJ::Browse->load_all; - # Get the unique URI for each - + my @categories = LJ::Browse->load_all($vertical); my @caturls = map { { text => $_->{pretty_name}, value => $_->uri } } @categories; - #@caturls = sort { $a cmp $b } @caturls; - $ret .= "<p>Add to Vertical/Category:<br />"; $ret .= LJ::html_select({ name => 'parentcaturl', selected => $parentcaturl }, @@ -109,11 +128,13 @@ value => $POST{'newcaturl'} || '/'} ); $ret .= "<br /><i>example: '\/monkey_bars'</i></td></tr>\n"; + $ret .= "<tr><td colspan='2'>On unselected vertical & category case<br/>new category will be add to 'dummy' vertical</td></tr>"; $ret .= "</table></p>\n"; $ret .= "<p>" . LJ::html_submit('add', 'Add') . "</p>"; + $ret .= LJ::html_hidden("vert_url_add", $vertical ? $vertical->uri : ''); $ret .= "</form>"; return "<body>$ret</body>"; Modified: trunk/htdocs/admin/browse/add_community.bml =================================================================== --- trunk/htdocs/admin/browse/add_community.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/add_community.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -18,9 +18,15 @@ my $ret = ""; my $caturl = $POST{'caturl'}; + my $vert_url = $POST{'vert_url'}; my $journal = $POST{'journal'}; my $tags = $POST{'tags'}; + my $vertical = undef; + if (LJ::did_post() && $vert_url) { + $vertical = LJ::Vertical->load_by_url ("/vertical" . $vert_url); + } + if (LJ::did_post() and $POST{'add'}) { push @errors, "Invalid form submission" unless LJ::check_form_auth(); { @@ -59,10 +65,26 @@ $ret .= "<form method='POST'>\n"; $ret .= LJ::form_auth(); + my @verticals = LJ::Vertical->load_all(); + @verticals = map { { text => $_->{name}, value => $_->{url} } } @verticals; + + $ret .= "<p>".LJ::html_select({ + name => 'vert_url', + selected => $vert_url, + }, + { text => 'Select Vertical', + value => '',}, + @verticals + ); + $ret .= " \n"; + + $ret .= LJ::html_submit('select', 'Select Vertical') . "</p>"; + # Get the full list of categories - my @categories = LJ::Browse->load_all; + my @categories = LJ::Browse->load_all($vertical); # Don't include the top level categories and get the unique URI for each - my @caturls = map { { text => $_->{pretty_name}, value => $_->uri } } @categories; + @categories = grep { $_->{parentcatid} } @categories unless $vertical; + my @caturls = map { { text => $_->{pretty_name}, value => $_->url_path } } @categories; @caturls = sort { $a cmp $b } @caturls; $ret .= "<p>Add to Category:<br />"; Modified: trunk/htdocs/admin/browse/add_verticals.bml =================================================================== --- trunk/htdocs/admin/browse/add_verticals.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/add_verticals.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -34,6 +34,7 @@ $ret .= "<table border='0'>"; $ret .= "<tr><td>Vertical name</td><td>Vertical Url</td></tr>"; $ret .= "<tr><td><input type='text' name='vert_name'></td><td><input type='text' name='vert_url'></td></tr>"; + $ret .= "<tr><td></td><td>example: '/monkey_bars'</td></tr>"; $ret .= "</table>"; $ret .= " " . LJ::html_submit('go', 'Go') . "</p>"; Modified: trunk/htdocs/admin/browse/featured_communities.bml =================================================================== --- trunk/htdocs/admin/browse/featured_communities.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/featured_communities.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -30,11 +30,11 @@ my @vert_ids = map { { value => $_->vert_id, text => $_->name } } @verticals; @vert_ids = sort { $a cmp $b } @vert_ids; - $ret .= "<p>Select vertical:"; + $ret .= "<p>"; $ret .= LJ::html_select({ name => 'vert_id', selected => $vert_id }, - { text => 'Select Category', + { text => 'Select Vertical', value => '' }, @vert_ids ); Modified: trunk/htdocs/admin/browse/index.bml =================================================================== --- trunk/htdocs/admin/browse/index.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/index.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -27,19 +27,18 @@ $ret .= "<p><a href='./search_tags.bml'>Editing Search Tags</a></p>"; $ret .= "</blockquote>"; + $ret .= "<h2>Manage Categories</h2><blockquote>"; + $ret .= "<p><a href='./add_category.bml'>Add Category</a></p>"; + $ret .= "<p><a href='./manage_category.bml'>Move Categories</a></p>"; + $ret .= "<p><a href='./remove_category.bml'>Remove Category</a></p>"; + $ret .= "</blockquote>"; + $ret .= "<h2>Manage Communities</h2><blockquote>"; $ret .= "<p><a href='./moderate_community.bml'>Moderate Community Submissions</a></p>"; - $ret .= "<p><a href='./add_community.bml'>Add Community to Category</a></p>"; $ret .= "<p><a href='./remove_community.bml'>Remove Community from Category</a></p>"; $ret .= "</blockquote>"; - $ret .= "<h2>Manage Categories</h2><blockquote>"; - $ret .= "<p><a href='./add_category.bml'>Add Category</a></p>"; - $ret .= "<p><a href='./manage_category.bml'>Manage Categories</a></p>"; - $ret .= "<p><a href='./remove_category.bml'>Remove Category</a></p>"; - $ret .= "</blockquote>"; - $ret .= "<p><a href='./load_all_structure.bml'>Load All Structure</a></p>"; return "<body>$ret</body>"; Modified: trunk/htdocs/admin/browse/manage_category.bml =================================================================== --- trunk/htdocs/admin/browse/manage_category.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/manage_category.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -19,34 +19,6 @@ 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'}) { $cat_url = $POST{'cat_url'}; $vert_url = $POST{'vert_url'}; @@ -64,7 +36,7 @@ } # Has a valid vertical been chosen - my $vertical = LJ::Vertical->load_by_url("/browse" . $vert_url); + my $vertical = LJ::Vertical->load_by_url("/vertical" . $vert_url); push @errors, "Invalid vertical" unless $vertical; # Has a valid category been chosen @@ -125,7 +97,6 @@ $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/remove_category.bml =================================================================== --- trunk/htdocs/admin/browse/remove_category.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/remove_category.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -18,7 +18,13 @@ my $ret = ""; my $caturl; + my $vert_url = $POST{'vert_url'}; + my $vertical = undef; + if (LJ::did_post() && $POST{'vert_url'}) { + $vertical = LJ::Vertical->load_by_url("/vertical" . $vert_url); + } + if (LJ::did_post() and $POST{'remove'}) { $caturl = $POST{'caturl'}; @@ -55,10 +61,26 @@ $ret .= "<form method='POST'>\n"; $ret .= LJ::form_auth(); + my @verticals = LJ::Vertical->load_all(); + @verticals = map { { text => $_->{name}, value => $_->{url} } } @verticals; + + $ret .= "<p>".LJ::html_select({ + name => 'vert_url', + selected => $vert_url, + }, + { text => 'Select Vertical', + value => '',}, + @verticals + ); + $ret .= " \n"; + + $ret .= LJ::html_submit('selectv', 'Select Vertical') . "</p>"; + # Get the full list of categories - my @categories = LJ::Browse->load_all; + my @categories = LJ::Browse->load_all($vertical); # Get the unique URI for each - my @caturls = map { $_->uri, $_->uri } @categories; + #@categories = grep { $_->parent } @categories unless $vertical; + my @caturls = map { { text => $_->{pretty_name}, value => $_->url_path } } @categories; @caturls = sort { $a cmp $b } @caturls; $ret .= "<p>Remove Category:<br />"; Modified: trunk/htdocs/admin/browse/remove_community.bml =================================================================== --- trunk/htdocs/admin/browse/remove_community.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/remove_community.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -24,8 +24,14 @@ my $ret = ""; my $caturl = $POST{'caturl'}; + my $vert_url = $POST{'vert_url'}; my $journals = $POST{'journals'}; + my $vertical = undef; + if (LJ::did_post() && $POST{'vert_url'}) { + $vertical = LJ::Vertical->load_by_url("/vertical" . $vert_url); + } + if (LJ::did_post() and $POST{'remove'}) { push @errors, "Invalid form submission" unless LJ::check_form_auth(); { @@ -72,10 +78,26 @@ $ret .= "<form method='POST'>\n"; $ret .= LJ::form_auth(); + my @verticals = LJ::Vertical->load_all(); + @verticals = map { { text => $_->{name}, value => $_->{url} } } @verticals; + + $ret .= "<p>".LJ::html_select({ + name => 'vert_url', + selected => $vert_url, + }, + { text => 'Select Vertical', + value => '',}, + @verticals + ); + $ret .= " \n"; + + $ret .= LJ::html_submit('selectv', 'Select Vertical') . "</p>"; + # Get the full list of categories - my @categories = LJ::Browse->load_all; + my @categories = LJ::Browse->load_all($vertical); # Don't include the top level categories and get the unique URI for each - my @caturls = map { { text => $_->{pretty_name}, value => $_->uri } } grep { $_->parent } @categories; + @categories = grep { $_->parent } @categories unless $vertical; + my @caturls = map { { text => $_->{pretty_name}, value => $_->url_path } } @categories; @caturls = sort { $a cmp $b } @caturls; $ret .= "<p>Remove from Category:<br />"; Modified: trunk/htdocs/admin/browse/search_tags.bml =================================================================== --- trunk/htdocs/admin/browse/search_tags.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/search_tags.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -31,7 +31,7 @@ my @vert_ids = map { { value => $_->vert_id, text => $_->name } } @verticals; @vert_ids = sort { $a cmp $b } @vert_ids; - $ret .= "<p>Select vertical:"; + $ret .= "<p>"; $ret .= LJ::html_select({ name => 'vert_id', selected => $vert_id }, Modified: trunk/htdocs/admin/browse/top_entries_vertical.bml =================================================================== --- trunk/htdocs/admin/browse/top_entries_vertical.bml 2010-11-19 06:03:56 UTC (rev 17725) +++ trunk/htdocs/admin/browse/top_entries_vertical.bml 2010-11-19 06:10:07 UTC (rev 17726) @@ -30,11 +30,11 @@ my @vert_ids = map { { value => $_->vert_id, text => $_->name } } @verticals; @vert_ids = sort { $a cmp $b } @vert_ids; - $ret .= "<p>Select vertical:"; + $ret .= "<p>"; $ret .= LJ::html_select({ name => 'vert_id', selected => $vert_id }, - { text => 'Select Category', + { text => 'Select Vertical', value => '' }, @vert_ids );