スタッフブログ
XOOPSのニュースモジュールには印刷用ページを表示する機能がありますが、多くのモジュールは印刷用ページというのをもっていません。
そんな印刷用ページをもっていないモジュールでも印刷用に余計なブロックやヘッダを排除してプリントアウトできるように、ちょっとテーマをいじる方法をご紹介します。
こちらは、RYUSの社内情報共有用のXOOPSサイトです。
今このxpWikiのページを印刷すると次のように印刷されるようにしています。
利用したのは、印刷用のスタイルシートを読み込む仕組みです。
theme.htmlのhead部分に次のような行を追加しています。
media="print"としておくと印刷時に指定されたスタイルシートファイルが読み込まれるようになります。
ここで読み込まれるprint.cssには、次のようにヘッダ、フッタやブロックを非表示にするように指定しています。
各ブロックにどんなidが割り振られているかは、テーマによって違いますので、利用されるテーマにあわせてくださいね。
で、さらにwpWikiもそうですが、モジュール内にも新規登録や編集のためのリンクなどがありますので、それらも印刷時には非表示になるように追記します。
ここもモジュールに合わせて指定しましょう。
非表示にしたい箇所にid指定もclass指定も無い場合がありますが、その場合はそのモジュールのテンプレートを修正して対応します。
テンプレートまで手を入れだすと利用するモジュールが多い場合は結構大変かもしれませんが、テーマへの修正だけでもしておくと、ちょっと印刷して見たいなぁというときには重宝すると思います。
そんな印刷用ページをもっていないモジュールでも印刷用に余計なブロックやヘッダを排除してプリントアウトできるように、ちょっとテーマをいじる方法をご紹介します。
こちらは、RYUSの社内情報共有用のXOOPSサイトです。
今このxpWikiのページを印刷すると次のように印刷されるようにしています。
利用したのは、印刷用のスタイルシートを読み込む仕組みです。
theme.htmlのhead部分に次のような行を追加しています。
<link rel="stylesheet" type="text/css" media="print"
href="<{$xoops_url}>/themes/trump_color3/print.css" />
ここで読み込まれるprint.cssには、次のようにヘッダ、フッタやブロックを非表示にするように指定しています。
div#header{
display:none;
}
#leftcolumn{
display:none;
}
#centerBlock{
display:none;
}
#rightcolumn{
display:none;
}
#footerbar{
display:none;
}
で、さらにwpWikiもそうですが、モジュール内にも新規登録や編集のためのリンクなどがありますので、それらも印刷時には非表示になるように追記します。
/*xpWiki*/
.footer{
display:none;
}
.counter{
display:none;
}
.toolbar{
display:none;
}
.navigator_page{
display:none;
}
非表示にしたい箇所にid指定もclass指定も無い場合がありますが、その場合はそのモジュールのテンプレートを修正して対応します。
テンプレートまで手を入れだすと利用するモジュールが多い場合は結構大変かもしれませんが、テーマへの修正だけでもしておくと、ちょっと印刷して見たいなぁというときには重宝すると思います。
最近、時間をつくって社内で利用するフォームをつくっています。
フォームといってもWebアプリケーションで等のコンピュータシステム用のフォームでなく、印刷してペンで書き込む紙ベースのフォーム(記入用紙)です。
多くの会社では、このようなフォーム(記入用紙)は既にいくつも作ってあって運用されてると思います。
RYUSは設立時は二人だけだったので、ほとんどの用事は口頭で片付き、決まったフォームの必要性が低かったので、整備しないままきてしまってたんですね。ここ1年強で、急に人が増えてしまったので最近になって必要性を感じてつくってるわけです。
フォームの作成にはエクセルや iWorkなどのソフトを使うときもありますし、イメージが固まらないときは、A4のコピー用紙に手書きでざっくりと作成してコピーして使ってみることもあります。
こういう紙ベースのフォームの良さは、不完全でも利用できてしまうところにあります。
記入する欄が用意されていなくても、その気になれば余白に記入してカバーすることも可能です。
記入した内容を一覧したくなったら、ひとまずデスク上にバァッと広げてしまえば、一覧性も確保できます(数に限りはありますが)
また、フォームを作成する時間コストが非常に少ないというのも利点です。思いつきでパッとつくれますし、運用して不満な点があってフォームを修正するのも短時間で済みます。
ただ紙だと検索性が悪く、同時に別々の席で複数の人が参照することはできないなど不便な点もありますので、ある程度運用してみて、コンピュータシステム化した方が良さそうだと感じたら、XOOPSのモジュールとして作成して、社内ポータルサイトへ組み込もうと思っています。
もし社内の業務をシステム化することを考えているなら、まず紙のフォームを新たに作ったり、今あるオームを改良することから考えてみてはどうでしょうか?
紙のフォームをどんなに改良しても運用コストが高くつくという結論になってから、コンピュータシステム化を考えてみても良いと思います。そのときは是非ご相談くださいね。
フォームといってもWebアプリケーションで等のコンピュータシステム用のフォームでなく、印刷してペンで書き込む紙ベースのフォーム(記入用紙)です。
多くの会社では、このようなフォーム(記入用紙)は既にいくつも作ってあって運用されてると思います。
RYUSは設立時は二人だけだったので、ほとんどの用事は口頭で片付き、決まったフォームの必要性が低かったので、整備しないままきてしまってたんですね。ここ1年強で、急に人が増えてしまったので最近になって必要性を感じてつくってるわけです。
フォームの作成にはエクセルや iWorkなどのソフトを使うときもありますし、イメージが固まらないときは、A4のコピー用紙に手書きでざっくりと作成してコピーして使ってみることもあります。
こういう紙ベースのフォームの良さは、不完全でも利用できてしまうところにあります。
記入する欄が用意されていなくても、その気になれば余白に記入してカバーすることも可能です。
記入した内容を一覧したくなったら、ひとまずデスク上にバァッと広げてしまえば、一覧性も確保できます(数に限りはありますが)
また、フォームを作成する時間コストが非常に少ないというのも利点です。思いつきでパッとつくれますし、運用して不満な点があってフォームを修正するのも短時間で済みます。
ただ紙だと検索性が悪く、同時に別々の席で複数の人が参照することはできないなど不便な点もありますので、ある程度運用してみて、コンピュータシステム化した方が良さそうだと感じたら、XOOPSのモジュールとして作成して、社内ポータルサイトへ組み込もうと思っています。
もし社内の業務をシステム化することを考えているなら、まず紙のフォームを新たに作ったり、今あるオームを改良することから考えてみてはどうでしょうか?
紙のフォームをどんなに改良しても運用コストが高くつくという結論になってから、コンピュータシステム化を考えてみても良いと思います。そのときは是非ご相談くださいね。
社内で使うNAS用にスタッフが無停電源を提案してくれました。
無停電電源(UPS)は高くてでかいというイメージだったのですが、今は1万円切ってわりとコンパクトな製品もあるんですね。
一般的な用途としてはファイルサーバ用あたりだと思いますが、これだけ値段が安いと、急なブレーカー落ちや雷雨時の瞬間的な停電対策として、デスクトップPCやゲーム機用に購入してもいいですよね。
ちょっとした停電などで「うおぉぉぉっこれまでの作業時間がパーだっ!」っていう事態を防ぐために、こういうちょっとした投資は積極的におこなっていきたいところです。
というわけで下記UPSを購入予定です。
無停電電源(UPS)は高くてでかいというイメージだったのですが、今は1万円切ってわりとコンパクトな製品もあるんですね。
一般的な用途としてはファイルサーバ用あたりだと思いますが、これだけ値段が安いと、急なブレーカー落ちや雷雨時の瞬間的な停電対策として、デスクトップPCやゲーム機用に購入してもいいですよね。
ちょっとした停電などで「うおぉぉぉっこれまでの作業時間がパーだっ!」っていう事態を防ぐために、こういうちょっとした投資は積極的におこなっていきたいところです。
というわけで下記UPSを購入予定です。
デブサミが終わってちょっとホッとしたのもつかの間、すぐに今度はオープンソースカンファレンス2009Tokyo/Spring(以下OSC2009Tokyo/Spring)が開催されます。
・オープンソースカンファレンス2009Tokyo/Spring
さて、このOSC2009Tokyo/Springですが、当社のうさできでもプッシュしているXOOPS Cube のディストリビューションHDのセッションがあります。
HDは最近1.0.3がリリースされたばかりですので、このセッションは是非聞いておきたいと思っています。
更に、多種多様なCMSを集めてのパネルディスカッションCMS大集合なんて企画もあります。
で、私はというと、今回はWARPのブースに居る予定です。
あとちょっとだけですが、WARPについて、WARPのセッションでも話をさせていただく予定ですので、こちらもよろしくお願いします。
・オープンソースカンファレンス2009Tokyo/Spring
さて、このOSC2009Tokyo/Springですが、当社のうさできでもプッシュしているXOOPS Cube のディストリビューションHDのセッションがあります。
HDは最近1.0.3がリリースされたばかりですので、このセッションは是非聞いておきたいと思っています。
更に、多種多様なCMSを集めてのパネルディスカッションCMS大集合なんて企画もあります。
で、私はというと、今回はWARPのブースに居る予定です。
あとちょっとだけですが、WARPについて、WARPのセッションでも話をさせていただく予定ですので、こちらもよろしくお願いします。
RYUS初主催のXOOPSセミナー、本日無事終了いたしました。
初主催ということもあって、準備にも時間がかかり、セミナーでもいろいろ不手際があったかと思います。
2時間の予定ではじめたセミナーだったのですが、グループワークでは、様々な質問が飛び出し、結果的に2時間半ぐらいかかってしまいました。
お時間の無かった方には申し訳なかったです。
今後もRYUSでは、様々なXOOPSのセミナーを定期的に開催したいと思っておりますので、皆様よろしくお願いします。
当サイトの左ブロックで告知中のXOOPS体験&活用セミナーの開催がいよいよ来週にせまってきました。
・XOOPS体験&活用セミナー
講師として話をするというのは、私も当社haltも、これまでに何回も経験してきたので、それほど心配してないのですが、今回のセミナーの後半の体験グループワークの準備で頭を悩ませてます。
1月28日のXOOPS体験&活用セミナーのグループワークでは、実際にXOOPSにふれていただき、「これなら、あんなことできそうだなぁ」とか「こういう使い方もできそうだ」という実感をもっていただけたらと思って企画したんですが、このグループワークが「XOOPS使い方講習」みたいにならないように、いかに楽しいセミナーにしようか日々考え続けてます
# さすがに、そろそろスタッフの皆さんに「いいかげんに内容FIXさせてくださいっ」って怒られそうですが(^^;
まだ開催まで1週間ありますので、ギリギリまで「役に立って、なおかつ楽しい」セミナーになるように、考え続けたいと思ってます。
・XOOPS体験&活用セミナー
講師として話をするというのは、私も当社haltも、これまでに何回も経験してきたので、それほど心配してないのですが、今回のセミナーの後半の体験グループワークの準備で頭を悩ませてます。
1月28日のXOOPS体験&活用セミナーのグループワークでは、実際にXOOPSにふれていただき、「これなら、あんなことできそうだなぁ」とか「こういう使い方もできそうだ」という実感をもっていただけたらと思って企画したんですが、このグループワークが「XOOPS使い方講習」みたいにならないように、いかに楽しいセミナーにしようか日々考え続けてます
# さすがに、そろそろスタッフの皆さんに「いいかげんに内容FIXさせてくださいっ」って怒られそうですが(^^;
まだ開催まで1週間ありますので、ギリギリまで「役に立って、なおかつ楽しい」セミナーになるように、考え続けたいと思ってます。
回を重ねる毎に参加人数が増えつづけているCMSナイト。昨夜も盛況でした。
毎回、様々なCMSや、CMSの拡張機能についての紹介や利用事例などの紹介があるのですが、昨夜はNetCommons2用モジュールの「WEKO」の紹介がありました。
・WEKO
このwekoの発表の中で「お!」と思ったのが、登録した wordやpdfの中身の全文検索機能があったことでした。
仕組みとしては、word や pdfの中身を登録したときに、別のソフトウェアで、ファイルからテキストを取り出して、データベースに登録しておき、wekoからはデータベースを検索するという形でした。
このテキスト抽出に使っているソフトウェア名をお聞きすることができたので、それを利用してXOOPSのダウンロードモジュールに全文検索機能を追加してみようかと思います。
実際に各ソフトウェアをどうやって呼び出してるのかは、WEKO のソースコードを読んで調べてみようと思ってます。(こういうときにオープンソースだと、簡単にノウハウを知ることができて便利ですね)
というわけで、誰かチャレンジしてみてね>RYUSスタッフ
毎回、様々なCMSや、CMSの拡張機能についての紹介や利用事例などの紹介があるのですが、昨夜はNetCommons2用モジュールの「WEKO」の紹介がありました。
・WEKO
このwekoの発表の中で「お!」と思ったのが、登録した wordやpdfの中身の全文検索機能があったことでした。
仕組みとしては、word や pdfの中身を登録したときに、別のソフトウェアで、ファイルからテキストを取り出して、データベースに登録しておき、wekoからはデータベースを検索するという形でした。
このテキスト抽出に使っているソフトウェア名をお聞きすることができたので、それを利用してXOOPSのダウンロードモジュールに全文検索機能を追加してみようかと思います。
実際に各ソフトウェアをどうやって呼び出してるのかは、WEKO のソースコードを読んで調べてみようと思ってます。(こういうときにオープンソースだと、簡単にノウハウを知ることができて便利ですね)
というわけで、誰かチャレンジしてみてね>RYUSスタッフ
XOOPS の携帯対応についてよくご相談をうけます。
実際に WizMobile を導入して携帯から利用してみると、細かなところで気になるところがでてきたりするものです。
そんな気になるところの一つが、ログインフォームなどでユーザ名やパスワードを入れるときに、テキスト入力フォームへの入力モードがデフォルトだと全角文字入力になってしまうことです。
できたら、最初から半角英数の入力モードになっていて欲しいですよね。
携帯での入力モードの指定ですが、デフォルトで半角英数にするときは、次のように input タグの属性を指定すると良いそうです。
なので、XOOPS のログインフォームのテンプレートをこのような形に修正してやればできそうな気がするのですが、ログインフォームのテンプレートを見ると次のようになっていて、istyle や format という属性を追加しても、出力される HTML では、この属性が削除されてしまいます。
これを下記のように書き換えてもダメなんですね。
何故かというと、 xoops_input プラグインのコードを見ると、xoops_input プラグインは特定の属性だけを HTML に出力するようになっているようで、プラグイン呼び出し時に想定外の属性をつけても無視されるようになっているからです。
istyle や format, MODE というのは想定外の属性になっちゃうんですね。
# 余談ですが、これはサンデープログラマがうっかりテンプレート上で XSS を作り込まないためにこうなってたんだと思います。
さて、そこで xoops_input プラグインをちょっといじって、指定された属性(ほんとうはプラグインに渡すパラメータですが)を全て出力するように書き換えてみました。
・ パラメータ全部出力型 function.xoops_input.php
これを XOOPS_ROOT_PATH/class/smarty/plugins/function.xoops_input.php と入れ替えても良いですし、ホダ塾ディストリビューション「HD」でしたら、XOOPS_TRUST_PATH/libs/smartyplugins/ に置いても OK です。
これで、先ほどのように istyle,format, MODE の属性を追加すれば、携帯でユーザ名やパスワードを入力しようとしたときに、デフォルトで半角英数の入力モードになります。
WizMobile をご利用の方は、是非おためしください。
実際に WizMobile を導入して携帯から利用してみると、細かなところで気になるところがでてきたりするものです。
そんな気になるところの一つが、ログインフォームなどでユーザ名やパスワードを入れるときに、テキスト入力フォームへの入力モードがデフォルトだと全角文字入力になってしまうことです。
できたら、最初から半角英数の入力モードになっていて欲しいですよね。
携帯での入力モードの指定ですが、デフォルトで半角英数にするときは、次のように input タグの属性を指定すると良いそうです。
<input type="text" name="pass" istyle="3" format="*x" MODE="alphabet" />
なので、XOOPS のログインフォームのテンプレートをこのような形に修正してやればできそうな気がするのですが、ログインフォームのテンプレートを見ると次のようになっていて、istyle や format という属性を追加しても、出力される HTML では、この属性が削除されてしまいます。
<!-- こんなふうに input タグを使わないで Smarty プラグインで input タグを出力しています -->
<{xoops_input type=password name=pass size=12 maxlength=32
id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"}>
<{xoops_input type=password name=pass size=12 maxlength=32
id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"
istyle="3" format="*x" MODE="alphabet"}>
何故かというと、 xoops_input プラグインのコードを見ると、xoops_input プラグインは特定の属性だけを HTML に出力するようになっているようで、プラグイン呼び出し時に想定外の属性をつけても無視されるようになっているからです。
istyle や format, MODE というのは想定外の属性になっちゃうんですね。
# 余談ですが、これはサンデープログラマがうっかりテンプレート上で XSS を作り込まないためにこうなってたんだと思います。
さて、そこで xoops_input プラグインをちょっといじって、指定された属性(ほんとうはプラグインに渡すパラメータですが)を全て出力するように書き換えてみました。
・ パラメータ全部出力型 function.xoops_input.php
これを XOOPS_ROOT_PATH/class/smarty/plugins/function.xoops_input.php と入れ替えても良いですし、ホダ塾ディストリビューション「HD」でしたら、XOOPS_TRUST_PATH/libs/smartyplugins/ に置いても OK です。
これで、先ほどのように istyle,format, MODE の属性を追加すれば、携帯でユーザ名やパスワードを入力しようとしたときに、デフォルトで半角英数の入力モードになります。
WizMobile をご利用の方は、是非おためしください。
XOOPS Cubeオフィシャルサイトのメニューに「開発」という項目がありますが、ご覧になったことはありますか?
この「開発」に、最近の開発についてのトピックがコンパクトにまとまっています。
・開発 - XOOPS Cube
この記事をかいた時点で
・XOOPS Cube Legacy 2.2 の開発で、FCKEditorの組み込みをxpWikiのnao-ponさんが担当されてる
・XOOPS Cube コアの1.0の開発もしている
・XOOPS Cube Legacyとは別のベースモジュールの開発もしている
というような状況がわかります。
あと、開発ページにあるリンク先を見てるうちに気がついたのですが、なんとXOOPS Cube Projectに日本語のフォーラムがありました!
・XOOPS Cube オフィシャルサイト日本語フォーラム
これまでも、XOOPS Cube Project外では日本語でディスカッション出来る場があったのですが、XOOPS Cube Project 内で日本語でやりとりできるフォーラムができてたのは、私にとっては非常に嬉しいことです。
私自身、英語の壁に苦しんで、PostNukeからXOOPSに移行した人間だったので、英語中心のXOOPS Cube Project って、きつかったんです(^^;
というわけで、早速XOOPS Cube Project の日本語フォーラムの投稿をメールで受け取るようにしました。
あ、フォーラムがあるといっても、ユーザサポートフォーラムじゃないですよ。開発のためのフォーラムですからね。
XOOPS Cube Project に何か貢献したいと思ってたのに、英語はちょっとなって感じで躊躇してた方は、是非 日本語フォーラムに参加して、あなたにできることをやってみましょう!
この「開発」に、最近の開発についてのトピックがコンパクトにまとまっています。
・開発 - XOOPS Cube
この記事をかいた時点で
・XOOPS Cube Legacy 2.2 の開発で、FCKEditorの組み込みをxpWikiのnao-ponさんが担当されてる
・XOOPS Cube コアの1.0の開発もしている
・XOOPS Cube Legacyとは別のベースモジュールの開発もしている
というような状況がわかります。
あと、開発ページにあるリンク先を見てるうちに気がついたのですが、なんとXOOPS Cube Projectに日本語のフォーラムがありました!
・XOOPS Cube オフィシャルサイト日本語フォーラム
これまでも、XOOPS Cube Project外では日本語でディスカッション出来る場があったのですが、XOOPS Cube Project 内で日本語でやりとりできるフォーラムができてたのは、私にとっては非常に嬉しいことです。
私自身、英語の壁に苦しんで、PostNukeからXOOPSに移行した人間だったので、英語中心のXOOPS Cube Project って、きつかったんです(^^;
というわけで、早速XOOPS Cube Project の日本語フォーラムの投稿をメールで受け取るようにしました。
あ、フォーラムがあるといっても、ユーザサポートフォーラムじゃないですよ。開発のためのフォーラムですからね。
XOOPS Cube Project に何か貢献したいと思ってたのに、英語はちょっとなって感じで躊躇してた方は、是非 日本語フォーラムに参加して、あなたにできることをやってみましょう!
先日、当社haltがこのBLOGに書いた WARP ですが、誰でも簡単にWebアプリケーションを試せるだけでなく、Web屋さん、システム屋さんにとっては、実際に動いてクライアントさんにどんな感じで使えるのかを体験してもらえる、「動く提案書」としての使い方もあります。
動く提案書の作り方ですが、例えば XOOPS Cube でのサイト構築を提案するとしたら、
Step1.WARPをダウンロード
WARPのダウンロードページに、XOOPS Cube Legacy 2.1.6インストール済みのパッケージ(WARP_XC216_20081124.zip)がありますので、これをダウンロードするとよいでしょう。
・WARPダウンロード
Step2.モジュールのインストールと設定
提案予定のモジュールを別途ダウンロードしてきて、WARP上の XOOPS Cube にインストールしましょう。
モジュールを選ぶときは、先日このBLOGに書いた「XOOPSモジュールを選ぶときの3つのポイント+1」も参考にしてください。
モジュールをインストールしたら、実験的にサイトをつくる気持ちで、設定を行ったり、ダミーの記事も登録しちゃいます。
Step3.WARPを圧縮しなおす
ある程度クライアントさんに見てもらえる程度までできあがったら、WARPのフォルダを圧縮しましょう。
インストールするモジュールにもよりますが、圧縮しても数十Mバイトのファイルになると思います。
Step4.クライアントに渡す
圧縮してもファイルサイズが非常に大きいので、メールに添付はやめましょうね。
宅ファイル便で送るなど、どこからかダウンロードしてもらうか、USBメモリやCD-Rにコピーして渡しましょう。
クライアントさんに渡したファイルをクライアントさんのところで、解凍してもらい、あなたがWARPを起動したときと同様にServer_start.batをダブルクリックしてもらえば、Step3で圧縮する直前と同じサイトをクライアントさんも見ることが出来ます。
これで、実際にあれこれ試せる、触れる、動く提案書をお客さんに見せることが可能です。
ちなみに、RYUSで作成した WARP with XOOPS Cube for Corporateも、この手順で作成しています。
動く提案書の作り方ですが、例えば XOOPS Cube でのサイト構築を提案するとしたら、
Step1.WARPをダウンロード
WARPのダウンロードページに、XOOPS Cube Legacy 2.1.6インストール済みのパッケージ(WARP_XC216_20081124.zip)がありますので、これをダウンロードするとよいでしょう。
・WARPダウンロード
Step2.モジュールのインストールと設定
提案予定のモジュールを別途ダウンロードしてきて、WARP上の XOOPS Cube にインストールしましょう。
モジュールを選ぶときは、先日このBLOGに書いた「XOOPSモジュールを選ぶときの3つのポイント+1」も参考にしてください。
モジュールをインストールしたら、実験的にサイトをつくる気持ちで、設定を行ったり、ダミーの記事も登録しちゃいます。
Step3.WARPを圧縮しなおす
ある程度クライアントさんに見てもらえる程度までできあがったら、WARPのフォルダを圧縮しましょう。
インストールするモジュールにもよりますが、圧縮しても数十Mバイトのファイルになると思います。
Step4.クライアントに渡す
圧縮してもファイルサイズが非常に大きいので、メールに添付はやめましょうね。
宅ファイル便で送るなど、どこからかダウンロードしてもらうか、USBメモリやCD-Rにコピーして渡しましょう。
クライアントさんに渡したファイルをクライアントさんのところで、解凍してもらい、あなたがWARPを起動したときと同様にServer_start.batをダブルクリックしてもらえば、Step3で圧縮する直前と同じサイトをクライアントさんも見ることが出来ます。
これで、実際にあれこれ試せる、触れる、動く提案書をお客さんに見せることが可能です。
ちなみに、RYUSで作成した WARP with XOOPS Cube for Corporateも、この手順で作成しています。