Masato Kikuhara
en-sf****@users*****
2005年 7月 2日 (土) 07:47:21 JST
Index: affelio/apps/diary/Diary.pm
diff -u affelio/apps/diary/Diary.pm:1.19 affelio/apps/diary/Diary.pm:1.20
--- affelio/apps/diary/Diary.pm:1.19 Sat Jul 2 04:00:26 2005
+++ affelio/apps/diary/Diary.pm Sat Jul 2 07:47:21 2005
@@ -138,7 +138,7 @@
# send trackback ping by using urls in entry
my $id = $self->getColumn("SELECT MAX(id) FROM $self->{entry_table}");
- $self->send_trackback_ping($id, $title, $contents);
+# $self->send_trackback_ping($id, $title, $contents);
}
@@ -362,6 +362,9 @@
CALENDER => $calender,
access_control_URL => $self->{afap}->get_URL("access_control"),
);
+ if ($self->{afap}->check_access('write_diary')) {
+ $tmpl->param(EDITABLE => 1);
+ }
$header .= $tmpl->output;
$self->{header_show} = 1;
@@ -399,7 +402,7 @@
sub checkAccess {
my ($self, $page_name) = @_;
unless ($self->{afap}->check_access($page_name)) {
- $self->errorExit("$page_name: ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããæ¨©éãããã¾ãã");
+ $self->accessErrorExit("ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããæ¨©éãããã¾ãã");
}
}
@@ -410,18 +413,43 @@
sub errorExit {
my $self = shift;
my $msg = $self->escape(shift);
+
+ my $tmpl = new HTML::Template(filename => './templates/error.tmpl');
+ $tmpl->param(MESSAGE => $msg);
+
unless ($self->{header_show}) {
print "Content-type: text/html; charset=UTF-8\n\n";
print $self->{afap}->get_HTML_header($self->{header_title});
}
-print<<ERR;
-<div id="afMain">
-<div class="information">
-<h2>ã¨ã©ã¼</h2>
-<p>$msg</p>
-</div>
-</div>
-ERR
+ print $tmpl->output;
+ print $self->{afap}->get_HTML_footer;
+ exit;
+}
+
+##############################################
+# accessErrorExit
+##############################################
+
+sub accessErrorExit {
+ my $self = shift;
+ my $msg = $self->escape(shift);
+ my $affelio_id = $self->{afap}->get_visitor_info("afid");
+ my $visitor_type=$self->{afap}->get_visitor_info("type");
+
+ $visitor_type="pb" if ($visitor_type eq "");
+
+ my $tmpl = new HTML::Template(filename => "./templates/access_error.tmpl");
+ $tmpl->param(
+ AFID => $affelio_id,
+ VIS_TYPE=> $visitor_type,
+ MESSAGE => $msg,
+ );
+
+ unless ($self->{header_show}) {
+ print "Content-type: text/html; charset=UTF-8\n\n";
+ print $self->{afap}->get_HTML_header($self->{header_title});
+ }
+ print $tmpl->output;
print $self->{afap}->get_HTML_footer;
exit;
}
@@ -530,6 +558,30 @@
}
##############################################
+# sendTrackbackPing
+##############################################
+
+sub sendTrackbackPing {
+ my ($self, $url, $title, $contents, $id) = @_;
+
+ $id = $self->getColumn("SELECT MAX(id) FROM $self->{entry_table}") unless ($id);
+
+ my %form = (
+ title => $title,
+ excerpt => $contents,
+ url => $self->{afap}->get_site_info('web_root')."/apps/$self->{afap}->{install_name}/show_diary.cgi?id=$id",
+ blog_name => $self->{afap}->get_owner_info('nickname')."'s Affelio Diary",
+ );
+ my $req = POST($url, [%form]);
+ my $ua = new LWP::UserAgent;
+ my $res = $ua->request($req);
+ my $str = $res->as_string;
+ if ($str =~ /<error>[^1]*1[^<]*<\/error>/) {
+ $self->errorExit('Trackback Pingã®éä¿¡ã«å¤±æãã¾ãã'.$str);
+ }
+}
+
+##############################################
# setRDFURL
##############################################
@@ -645,11 +697,6 @@
my $afap = $self->{afap};
-# my $mimetype = $afap->{cgi}->uploadInfo($filename)->{'Content-Type'};
-# unless ($mimetype =~ /image\/(bmp|gif|png|jpeg)/) {
-# $self->errorExit('ãã¡ã¤ã«ã®ã¢ãããã¼ãï¼ä¸æ£ãªãã¡ã¤ã«ã¿ã¤ãã§ã');
-# }
-
my $file;
my $buf;
my $filesize = 0;
@@ -709,8 +756,8 @@
sub getUploadedImages {
my ($self, $id, $width, $height) = @_;
- $width = "width = \"$width\"" if ($width);
- $height = "height = \"$height\"" if ($height);
+ $width = "&w=$width" if ($width);
+ $height = "&h=$height" if ($height);
my $imgdir = "$self->{datadir}img/$id/";
my $ret;
@@ -720,7 +767,7 @@
while (my $file = readdir(DIR)) {
if (-f $imgdir.$file) {
$ret .= "<a href=\"show_image.cgi?id=$id&filename=$file\" target=\"_blank\">".
- "<img src=\"show_image.cgi?id=$id&filename=$file\" $width $height border=\"0\" />".
+ "<img src=\"show_image.cgi?id=$id&filename=$file$width$height\" border=\"0\" />".
"</a><br />";
}
}
Index: affelio/apps/diary/edit_diary.cgi
diff -u affelio/apps/diary/edit_diary.cgi:1.7 affelio/apps/diary/edit_diary.cgi:1.8
--- affelio/apps/diary/edit_diary.cgi:1.7 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/edit_diary.cgi Sat Jul 2 07:47:21 2005
@@ -26,14 +26,26 @@
# ç·¨éå®äº
if($afap->{cgi}->param('edit')) {
+ # send trackback ping
+ if ($afap->{cgi}->param('tping_url')) {
+ $diary->sendTrackbackPing($afap->{cgi}->param('tping_url'), $title, $contents, $id);
+ }
+
$diary->updateEntry($id, $afap->{cgi}->param('title'), $afap->{cgi}->param('contents'));
- $diary->removeUploadedImage($id);
- if ($afap->{cgi}->param('filename_1')) {
- $diary->saveUploadedImage($afap->{cgi}->param('filename_1'), $id);
+
+ my $filename_1 = $afap->{cgi}->param('filename_1');
+ my $filename_2 = $afap->{cgi}->param('filename_2');
+
+ if ($afap->{cgi}->param('delete_images') or $filename_1 or $filename_2) {
+ $diary->removeUploadedImage($id);
}
- if ($afap->{cgi}->param('filename_2')) {
- $diary->saveUploadedImage($afap->{cgi}->param('filename_2'), $id);
+ if ($filename_1) {
+ $diary->saveUploadedImage($filename_1, $id);
}
+ if ($filename_2) {
+ $diary->saveUploadedImage($filename_2, $id);
+ }
+
print $diary->getRedirection("show_diary.cgi?id=$id");
exit;
}
@@ -56,7 +68,8 @@
else {
$tmpl = HTML::Template->new(filename => "./templates/edit_diary_edit.tmpl");
my $entry = $diary->getEntry($id);
- $entry->{contents} =~ s/<br \/>/\n/g;
+ $entry->{contents} =~ s/<br[^>]*>/\n/g;
+ $entry->{contents} =~ s/<\/?a[^>]*>//g;
$tmpl->param(
ID => $entry->{id},
TITLE => $entry->{title},
Index: affelio/apps/diary/init.pl
diff -u affelio/apps/diary/init.pl:1.2 affelio/apps/diary/init.pl:1.3
--- affelio/apps/diary/init.pl:1.2 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/init.pl Sat Jul 2 07:47:21 2005
@@ -38,7 +38,7 @@
our $diary = new Diary($afap);
unless ($afap->check_access("DF_access")) {
- $diary->errorExit(' ããªãã¯ãã®ãã¼ã¸ã¸ã®ã¢ã¯ã»ã¹æ¨©éãããã¾ãã ');
+ $diary->accessErrorExit(' ããªãã¯ãã®ãã¼ã¸ã¸ã®ã¢ã¯ã»ã¹æ¨©éãããã¾ãã ');
}
##########################################################################
Index: affelio/apps/diary/list_diary.cgi
diff -u affelio/apps/diary/list_diary.cgi:1.7 affelio/apps/diary/list_diary.cgi:1.8
--- affelio/apps/diary/list_diary.cgi:1.7 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/list_diary.cgi Sat Jul 2 07:47:21 2005
@@ -65,7 +65,7 @@
COMMENT_NO => $diary->getCommentsNo($_->{id}),
TRACKBACKS => $diary->getTrackbacksNo($_->{id}),
ID => $_->{id},
- IMAGES => $diary->getUploadedImages($_->{id}),
+ IMAGES => $diary->getUploadedImages($_->{id}, 300, 300),
EDITABLE=> $edit
};
}
Index: affelio/apps/diary/show_diary.cgi
diff -u affelio/apps/diary/show_diary.cgi:1.7 affelio/apps/diary/show_diary.cgi:1.8
--- affelio/apps/diary/show_diary.cgi:1.7 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/show_diary.cgi Sat Jul 2 07:47:21 2005
@@ -33,7 +33,7 @@
DAY => $entry->{day},
TITLE => $entry->{title},
CONTENTS=> $entry->{contents},
- IMAGES => $diary->getUploadedImages($entry->{id}),
+ IMAGES => $diary->getUploadedImages($entry->{id}, 300, 300),
);
# ã³ã¡ã³ã
Index: affelio/apps/diary/show_image.cgi
diff -u affelio/apps/diary/show_image.cgi:1.2 affelio/apps/diary/show_image.cgi:1.3
--- affelio/apps/diary/show_image.cgi:1.2 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/show_image.cgi Sat Jul 2 07:47:21 2005
@@ -25,9 +25,24 @@
$type =~ s/jpg/jpeg/i;
my $filepath = "$diary->{datadir}img/$id/".$filename;
-open(IMG, "$filepath") or die;
-binmode IMG;
+my $width = $afap->{cgi}->param('w');
+my $height = $afap->{cgi}->param('h');
+
binmode STDOUT;
print "Content-type: image/$type\n\n";
-print while (<IMG>);
-close(IMG);
+if ($width and $height and (eval 'use Image::Magick; 1;')) {
+ my $image = new Image::Magick;
+ $image->Read(filename => $filepath);
+ my ($w, $h) = $image->Get('columns', 'rows');
+ if ($w > $width or $h > $height) {
+ $image->Resize(geometry => "$widthx$height");
+ $image->Set(quality => 75);
+ }
+ $image->Write(file => \*STDOUT);
+}
+else {
+ open(IMG, "$filepath") or die;
+ binmode IMG;
+ print while (<IMG>);
+ close(IMG);
+}
Index: affelio/apps/diary/show_trackback.cgi
diff -u affelio/apps/diary/show_trackback.cgi:1.5 affelio/apps/diary/show_trackback.cgi:1.6
--- affelio/apps/diary/show_trackback.cgi:1.5 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/show_trackback.cgi Sat Jul 2 07:47:21 2005
@@ -21,7 +21,19 @@
my $tmpl = HTML::Template->new(filename => "./templates/show_trackback.tmpl");
-my @trackbacks = $diary->getTrackbacks($id);
+my @ts = $diary->getTrackbacks($id);
+my @trackbacks;
+foreach (@ts) {
+ my ($sec, $min, $hour, $mday, $mon, $year) = localtime($_->{timestamp});
+ $year += 1900; $mon += 1;
+ push @trackbacks, {
+ TITLE => $diary->escape($_->{title}),
+ BLOG_NAME => $diary->escape($_->{blog_name}),
+ URL => $_->{url},
+ EXCERPT => $diary->escape($_->{excerpt}),
+ DATE => "$year-$mon-$mday",
+ };
+}
$tmpl->param(PING_URL => $afap->get_site_info("web_root") . "/apps/$diary->{afap}->{install_name}/tb.cgi/$id", TRACKBACKS => \@trackbacks);
print $diary->get_HTML_header;
Index: affelio/apps/diary/style.css
diff -u affelio/apps/diary/style.css:1.3 affelio/apps/diary/style.css:1.4
--- affelio/apps/diary/style.css:1.3 Thu Jun 30 02:38:50 2005
+++ affelio/apps/diary/style.css Sat Jul 2 07:47:21 2005
@@ -2,7 +2,7 @@
float: left;
width: 20%;
font-size: small;
- border-right: 1px solid #D7D7D7;
+/* border-right: 1px solid #D7D7D7; */
padding: 1.0em 1.0em 1.0em 0.5em;
padding: 5px 5px 5px 5px;
}
Index: affelio/apps/diary/tb.cgi
diff -u affelio/apps/diary/tb.cgi:1.1 affelio/apps/diary/tb.cgi:1.2
--- affelio/apps/diary/tb.cgi:1.1 Sun Jun 26 13:08:34 2005
+++ affelio/apps/diary/tb.cgi Sat Jul 2 07:47:21 2005
@@ -21,7 +21,7 @@
cgi => $cgi);
my $diary = new Diary($afap);
-my $datadir = $afap->get_userdata_dir().'xml';
+my $datadir = $afap->get_userdata_dir;
#-------------
my $DataDir = $datadir;
Index: affelio/apps/diary/write_diary.cgi
diff -u affelio/apps/diary/write_diary.cgi:1.8 affelio/apps/diary/write_diary.cgi:1.9
--- affelio/apps/diary/write_diary.cgi:1.8 Fri Jul 1 11:06:39 2005
+++ affelio/apps/diary/write_diary.cgi Sat Jul 2 07:47:21 2005
@@ -26,7 +26,15 @@
my $tmpl;
if($afap->{cgi}->param('submit')) {
+ # send trackback ping
+ if ($afap->{cgi}->param('tping_url')) {
+ $diary->sendTrackbackPing($afap->{cgi}->param('tping_url'), $title, $contents);
+ }
+
+ # add entry
$diary->addEntry($title, $contents);
+
+ # update images
$diary->removeUploadedImage;
if ($afap->{cgi}->param('filename_1')) {
$diary->saveUploadedImage($afap->{cgi}->param('filename_1'));
@@ -34,6 +42,7 @@
if ($afap->{cgi}->param('filename_2')) {
$diary->saveUploadedImage($afap->{cgi}->param('filename_2'));
}
+
print $diary->getRedirection('list_diary.cgi');
exit;
}