Jun 04, 2006

[Blosxom] SimpleAPI その1. にチャレンジ(2)

SimpleAPI その1. 用の Blosxom プラグインを作成してみた。 %BLOSXOM_HOME%/plugins/siteimg に保存して、Story 内で [[siteimg:<URL>]] と記述するだけ。

SimpleAPI その1. 用 Blosxom プラグイン

プラグインのソースは下記の通り。 ZIP アーカイブでダウンロードする場合は こちら

# Blosxom Plugin: siteimg
# Author: in-vitro.jp
# Version: 1.0.0
# License: GPL

# Autoattach
#
# Usage Examples:
#  [[siteimg:http://www.in-vitro.jp]]

package siteimg;

###############################################################
# Configuration Section

$simpleapi1_url  = "http://img.simpleapi.net/small/";

###############################################################


sub start {
  1;
}


sub story {
  my ($pkg, $path, $filename, $story_ref, $title_ref, $body_ref) = @_;

  $$body_ref =~ s/\[\[siteimg:(.+)\]\]/ <a href="$1\"><img src="$simpleapi1_url$1" width="128" height="128" border="0"><br>$1<\/a>/gs;

  1;
}

1;

こんな感じで表示される。

http://www.in-vitro.jp/blog/index.cgi

Posted in Blosxom | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |

Mar 10, 2006

[Blosxom] Bloxsom のエントリーを一覧表示する

Blosxom のエントリー一覧を確認したくなることが結構あるので、簡単なスクリプトを作成してみた。 このスクリプトは Blosxom starter kit 環境下で、エントリーファイルの一覧を HTML で表示する。 Blosxom starter kit の設定ファイルを参照している都合で、ノーマルの Blosxom 環境下では動作しないかもしれない(未確認)。

Blosxom エントリー一覧表示スクリプト

$BLOG_HOME 直下に適当な名前でスクリプトを設置し、パーミッションを 755 にすると動作する。

#!/usr/bin/perl

package blosxom;

eval { require './config.cgi'; };
die "Failed to load configuration file.\n$@" if $@;

use vars qw! $datadir $url $depth $file_extension %files !;

use strict;
use FileHandle;
use File::Find;
use File::stat;
use Time::localtime;
use Time::Local;
use CGI qw/:standard :netscape/;
use CGI::Carp;

my $fh = new FileHandle;

# Use the stated preferred URL or figure it out automatically
$url ||= url();
$url =~ s/^included:/http:/; # Fix for Server Side Includes (SSI)
$url =~ s!/$!!;

# Drop ending any / from dir settings
$datadir =~ s!/$!!;
  
# Fix depth to take into account datadir's path
$depth and $depth += ($datadir =~ tr[/][]) - 1;

# find entry files
my @files;
find(
  sub {
    my $d; 
    my $curr_depth = $File::Find::dir =~ tr[/][]; 
    return if $depth and $curr_depth > $depth; 
    my $file = $File::Find::name;
    if($file =~ m/(.)*\.$file_extension$/i) {
      push(@files, $file);
    }
  }, $datadir
);

# soft entry files
@files = sort {
  $a =~ /.*\/(.+)/;
  my $filename_a = $1;
  $b =~ /.*\/(.+)/;
  my $filename_b = $1;
  $filename_b cmp $filename_a;
} @files;

# print results;
print "Content-type: text/html\n\n";
print "<html>";
print "<head><title>";
print "list entries in ";
print $datadir;
print "</title></head>";
print "<body>";
print "list entries in ";
print $datadir;
print "<ol>";
foreach my $file (@files) {
  $file =~ /.*\/(.+)/;
  my $filename = $1;
  my $fileurl = $file;
  $fileurl =~ s/$datadir//g;
  $fileurl =~ s/\.$file_extension/\.html/g;
  $fileurl = $url . $fileurl;
  print "<li>";
  print "<a href=\"";
  print $fileurl;
  print "\">";
  print $filename;
  print "</a>";
  print " <span style=\"font-size: x-small;\">(";
  print $file;
  print ")</span>";
  print "</li>";
}
print "</ol>";
print "</body></html>";

Posted in Blosxom | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |

Aug 09, 2005

[Blosxom] Bloxsom Autoattach plugin

autoimg を参考に添付ファイル用の plugin を作成してみた。

ダウンロード

autoattach.zip

インストール方法

bloxsom の plugin ディレクトリ内に解凍

使用方法

entry 内に "[" + 添付ファイル名 + "]" を記述する。添付ファイルは zip, lzh, gz を指定可能。

添付ファイルは以下の通り設置する。

bloxsom_home
   └entries ・・・ bloxsom の entry 設置用ディレクトリ
     ├myentry.txt ・・・ ファイルを添付される entry
     └myentry ・・・ entry と同一の名前でディレクトリを作成
       └attach.zip ・・・ 添付ファイルはここに設置

Posted in Blosxom | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |