⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cms.pm

📁 1. 记录每个帖子的访问人情况
💻 PM
📖 第 1 页 / 共 5 页
字号:
    my $author = $app->{author};    my @perms = MT::Permission->load({ author_id => $author->id });    my %perms = map { $_->blog_id => $_ } @perms;    my @blogs = MT::Blog->load;    my $data = [];    my %param;    my $i = 1;    for my $blog (@blogs) {        my $blog_id = $blog->id;        my $perms = $perms{ $blog_id };        next unless $perms && $perms->role_mask;        $param{can_edit_authors} = 1 if $perms->can_edit_authors;        my $row = { id => $blog->id, name => encode_html($blog->name),                    description => $blog->description,		    site_url => $blog->site_url		    };        $row->{is_odd} = $i++ % 2 ? 1 : 0;        $row->{num_entries} = MT::Entry->count({ blog_id => $blog_id });        $row->{num_comments} = MT::Comment->count({ blog_id => $blog_id });        $row->{num_authors} = 0;        my $iter = MT::Permission->load_iter({ blog_id => $blog_id });        while (my $p = $iter->()) {            $row->{num_authors}++ if ($p->can_post);        }        $row->{can_edit_entries} = $perms->can_post||$perms->can_edit_all_posts;        $row->{can_edit_templates} = $perms->can_edit_templates;        $row->{can_edit_config} = $perms->can_edit_config;        push @$data, $row;    }    $param{blog_loop} = $data;    $param{can_create_blog} = $author->can_create_blog;    $param{can_view_log} = $author->can_view_log;    $param{saved_deleted} = $q->param('saved_deleted');    if ($author->can_create_blog()) {	$param{blog_count} = MT::Blog->count();	$param{blog_count_plural} = $param{blog_count} != 1;	$param{author_count} = MT::Author->count({type => AUTHOR});	$param{author_count_plural} = $param{author_count} != 1;	$param{can_view_blog_count} = 1;    }    $data = [];    for my $plugin (@MT::Plugins) {	my $plugin_name = remove_html($plugin->name());	$plugin->{description} = remove_html($plugin->{description});        (my $cgi_path = $app->{cfg}->CGIPath) =~ s|/$||;	my $plugin_page = ($cgi_path . '/' 			   . $plugin->envelope . '/' . $plugin->config_link())	    if $plugin->{config_link};	my $row = { plugin_name => $plugin_name,		    plugin_page => $plugin_page,		    plugin_desc => $plugin->description(),		plugin_doc_link => $plugin->doc_link() };	push @$data, $row;    }    $param{plugin_loop} = $data;        $param{news_html} = $app->get_newsbox_content();        $param{no_breadcrumbs} = 1;    $app->build_page('list_blog.tmpl', \%param);}sub bookmarklets {    my $app = shift;    $app->add_breadcrumb($app->translate('QuickPost'));    $app->build_page('bookmarklets.tmpl');}sub make_bm_link {    my $app = shift;    my %param = ( have_link => 1 );    my @show = $app->{query}->param('show');    my $height = 440;    my %show = map { $_ => 1 } @show;    $height += 50 if $show{t};  # trackback    $height += 40 if $show{ac}; # allow comments    $height += 20 if $show{ap}; # allow pings    $height += 40 if $show{cb}; # convert breaks    $height += 50 if $show{c}; # category    $height += 80 if $show{e}; # excerpt    $height += 80 if $show{k}; # keywords    $height += 80 if $show{m}; # more text    $param{bm_show} = join ',', @show;    $param{bm_height} = $height;    $param{bm_js} = _bm_js($app->base . $app->uri, $param{bm_show}, $height);    $app->add_breadcrumb($app->translate('QuickPost'));    $app->build_page('bookmarklets.tmpl', \%param);}sub _bm_js {    my($uri, $show, $height) = @_;    qq!javascript:d=document;w=window;t='';if(d.selection)t=d.selection.createRange().text;else{if(d.getSelection)t=d.getSelection();else{if(w.getSelection)t=w.getSelection()}}void(w.open('$uri?is_bm=1&bm_show=$show&__mode=view&_type=entry&link_title='+escape(d.title)+'&link_href='+escape(d.location.href)+'&text='+escape(t),'_blank','scrollbars=yes,width=400,height=$height,status=yes,resizable=yes,scrollbars=yes'))!;}sub view_log {    my $app = shift;    my $author = $app->{author};    return $app->error($app->translate("Permission denied."))        unless $author->can_view_log;    my @log;    require MT::Log;    my $iter = MT::Log->load_iter(undef, { 'sort' => 'created_on' });    my $i = 1;    while (my $log = $iter->()) {        my $row = { log_message => $log->message, log_ip => $log->ip };        $row->{created_on_formatted} = format_ts("%Y.%m.%d %H:%M:%S",            $log->created_on);        $row->{is_odd} = $i++ % 2 ? 1 : 0;        push @log, $row;    }    $log[-1]{is_last} = 1 if @log;    my %param = ( log_entry_loop => \@log );    $param{'reset'} = $app->{query}->param('reset');    $app->add_breadcrumb($app->translate('Activity Log'));    $app->build_page('view_log.tmpl', \%param);}sub reset_log {    my $app = shift;    my $author = $app->{author};    return $app->error($app->translate("Permission denied."))        unless $author->can_view_log;    $app->validate_magic() or return;    require MT::Log;    MT::Log->remove_all;    $app->redirect($app->uri . '?__mode=view_log&reset=1');}sub start_import {    my $app = shift;    my $blog_id = $app->{query}->param('blog_id');    my %param;    require MT::Category;    my $iter = MT::Category->load_iter({ blog_id => $blog_id });    my @data;    while (my $cat = $iter->()) {        push @data, { category_id => $cat->id,                      category_label => $cat->label };    }    @data = sort { $a->{category_label} cmp $b->{category_label} }            @data;    $param{category_loop} = \@data;    my $blog = MT::Blog->load($blog_id);    $app->add_breadcrumb($blog->name, $app->uri . '?__mode=menu&blog_id=' . $blog->id);    $app->add_breadcrumb($app->translate('Import/Export'));    $param{nav_import} = 1;    $app->build_page('import.tmpl', \%param);}sub show_menu {    my $app = shift;    my $perms = $app->{perms}        or return $app->error($app->translate("No permissions"));    require MT::Comment;    require MT::TBPing;    require MT::Trackback;    require MT::Permission;    require MT::Entry;    my $blog_id = $app->{query}->param('blog_id');    my $iter = MT::Entry->load_iter({ blog_id => $blog_id },        { 'sort' => 'created_on',          direction => 'descend',          limit => 5 });    my @e_data;    my $i = 1;    my $author_id = $app->{author}->id;    while (my $entry = $iter->()) {        my $row = { entry_id => $entry->id,                    entry_blog_id => $entry->blog_id, };        unless ($row->{entry_title} = $entry->title) {            my $title = remove_html($entry->text);            $row->{entry_title} = substr($title||"", 0, 22) . '...';        } else {            $row->{entry_title} = substr($row->{entry_title}, 0, 22) . '...'                if $row->{entry_title} && $row->{entry_title} =~ m(\S{22,});        }        $row->{entry_title} = encode_html($row->{entry_title}, 1);        $row->{entry_created_on} = format_ts("%Y.%m.%d", $entry->created_on);        $row->{is_odd} = $i++ % 2;        $row->{has_edit_access} = $perms->can_edit_all_posts ||            $entry->author_id == $author_id;        push @e_data, $row;    }    $iter = MT::Comment->load_iter({ blog_id => $blog_id },        { 'sort' => 'created_on',          direction => 'descend',          limit => 5 });    my @c_data;    $i = 1;    while (my $comment = $iter->()) {        my $row = { comment_id => $comment->id,                    comment_author => $comment->author,                    comment_blog_id => $comment->blog_id, };        $row->{comment_author} = substr($row->{comment_author}, 0, 22) . '...'            if $row->{comment_author} && $row->{comment_author} =~ m(\S{22,});        $row->{comment_created_on} = format_ts("%Y.%m.%d",            $comment->created_on);        my $entry = MT::Entry->load($comment->entry_id);        $row->{has_edit_access} = $perms->can_edit_all_posts ||            $entry->author_id == $author_id;        $row->{is_odd} = $i++ % 2;        push @c_data, $row;    }    $iter = MT::TBPing->load_iter({ blog_id => $blog_id },        { 'sort' => 'created_on',          direction => 'descend',          limit => 5 });    my @p_data;    $i = 1;    while (my $ping = $iter->()) {        my $row = { ping_id => $ping->id,                    ping_title => $ping->title || '[No title]',                    ping_url => $ping->source_url,                    ping_blog_id => $ping->blog_id, };        $row->{ping_title} = substr($row->{ping_title}, 0, 22) . '...'            if $row->{ping_title} =~ m(\S{22,});        $row->{ping_created_on} = format_ts("%Y.%m.%d", $ping->created_on);        #my $tb = MT::Trackback->load($ping->tb_id);        #my $entry = MT::Entry->load($tb->entry_id);        #$row->{has_edit_access} = $perms->can_edit_all_posts ||        #    $entry->author_id == $author_id;        #$row->{ping_entry_id} = $entry->id;        $row->{is_odd} = $i++ % 2;        push @p_data, $row;    }    require MT::Blog;    my $blog = MT::Blog->load($blog_id);    mark_odd_rows(\@e_data);    mark_odd_rows(\@c_data);    mark_odd_rows(\@p_data);    my %param = (entry_loop => \@e_data, comment_loop => \@c_data,                 ping_loop => \@p_data);    use MT::Entry qw(HOLD RELEASE FUTURE);    my $future_entry = MT::Entry->load({blog_id => $blog_id,					author_id => $author_id,					status => FUTURE});    ##if ($future_entry && (!$app->{author}->remote_auth_username    ##                      || !$blog->mt_update_key)) {    ##    $param{remote_services_warning} = 1;    ##}    if (defined($MT::PluginActions{'blog'})) {        $param{plugin_action_loop} = $MT::PluginActions{'blog'};    }    $param{blog_description} = $blog->description;    $param{welcome} = $blog->welcome_msg;    $param{num_entries} = MT::Entry->count({ blog_id => $blog_id });    $param{num_comments} = MT::Comment->count({ blog_id => $blog_id });    $param{num_authors} = 0;    $iter = MT::Permission->load_iter({ blog_id => $blog_id });    while (my $p = $iter->()) {        $param{num_authors}++ if $p->can_post;    }    $app->add_breadcrumb($blog->name, '');    $app->build_page('menu.tmpl', \%param);}    my %API = (            author => 'MT::Author',            comment => 'MT::Comment',            entry   => 'MT::Entry',            template => 'MT::Template',            blog => 'MT::Blog',            notification => 'MT::Notification',            templatemap => 'MT::TemplateMap',            category => 'MT::Category',            banlist => 'MT::IPBanList',            ping => 'MT::TBPing',            ping_cat => 'MT::TBPing',        );    sub edit_object {        my $app = shift;        my %param = $_[0] ? %{ $_[0] } : ();        my $q = $app->{query};        my $type = $q->param('_type');        my $blog_id = $q->param('blog_id');        my $id = $q->param('id');        my $perms = $app->{perms};        return $app->error($app->translate("No permissions"))            if !$perms && $id && $type ne 'author';        if ($id &&            ($type eq 'blog' && !$perms->can_edit_config) ||            ($type eq 'template' && !$perms->can_edit_templates)) {            return $app->error($app->translate("Permission denied."));        }        if ($type eq 'blog' && !$id && !$app->{author}->can_create_blog) {            return $app->error($app->translate("Permission denied."));        }        if ($type eq 'entry' && !$id && !$q->param('is_bm')) {            return $app->error($app->translate("Permission denied."))                unless $perms->can_post;        }        if ($type eq 'author' && $app->{author}->id != $id) {            return $app->error($app->translate("Permission denied."));        }	if ($type eq 'category' && !$perms->can_edit_categories()) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -