2008年05月22日 [長年日記]
_ [tDiary] 日記の一部を隠す。
…何てことできないかなぁ。
まだ、公開できる文章になっていないものを一時的に登録しておいたり、人に見せたくないアイディアを書き留めておいたり。 そんな使い方をしたいのだけど、「この日の日記を隠す」だと、1日の間に公開したいセクションと公開したくないセクションを分けられない。
なので、[hidden]タグを付けておけば、見えないようになる…みたいなことができないかなーと。
_ [tDiary] hide_category.rbプラグイン。
ということで、やってみた。 まだいろいろとおかしなところはあるけど、とりあえず本文だけは隠れている模様。
# hide_category.rb # # カテゴリに[hidden]があると、そのセクションを非表示にするプラグイン。 # # 注意! # このプラグイン内で@diariesの中身を書き換えています。 # その為、defaultio.rbで日記を保存していることが前提です。 # pstoreio.rbで日記を保存していると、非表示にしたセクションが消えちゃうと思います。 # # 具体的には以下の前提の上に成り立っています。 # * 日記を表示するだけでは、TDiary::TDiaryBase::DIRTY_DIARYフラグが立たないこと。 # * 日記データを保存するのは、TDiary::TDiaryBase::DIRTY_DIARYフラグが立っているときだけ。 # #TODO ./ja/hide_category.rbへ移動すること def hide_category_conf_title '非表示カテゴリの設定' end def hide_category_conf_html <<-HTML <p> 現在、以下の機能に未対応です。(他にもあるかもですが) <ul> <li>カテゴリの一覧表示</li> <li>recent_list.rb</li> </ul> その為、非表示のセクションのタイトルは見えてしまいます。 </p> <hr /> <h3>非表示にするカテゴリ名</h3> <p> 非表示にしたいカテゴリ名を指定します。 デフォルトでは「hidden」が設定されます。 空で更新した場合には、デフォルト値が使用されます。 </p> <p> <input type="text" name="hide_category.category_name" value="#{@conf['hide_category.category_name']}" /> </p> HTML end # 非表示カテゴリを削除 if ['day', 'comment', 'month', 'nyear', 'latest'].include?(@mode) cgi = CGI.new def cgi.referer; nil; end category_name = @options['hide_category.category_name'] || 'hidden' @diaries.each do |date, diary| next unless diary.methods.include?('delete_section') now_index = 1 indexes = [] diary.each_section do |section| if section.categories.include?(category_name) indexes.push now_index end now_index += 1 end indexes.reverse_each do |index| diary.delete_section(index) end end end # 設定 add_conf_proc('hide_category', hide_category_conf_title, 'etc') do category_name = '' if @mode == 'saveconf' category_name = @cgi.params['hide_category.category_name'][0] else category_name = @conf['hide_category.category_name'] end if category_name.nil? || category_name.length == 0 category_name = 'hidden' end @conf['hide_category.category_name'] = category_name hide_category_conf_html end
_ とりあえず。
簡易的だけど、さくらのサーバに移行が完了しました。 まだ、過去の日記とか掲示板とかが移行できてないけど、それはまぁぼちぼち。
まだ、ドメインの移行ができてないので、.htaccessでリダイレクトしてます。 こんな感じで。
Redirect permanent / http://momo-lab.sakura.ne.jp/
さくらで独自ドメインを使うようにしたら、元々のドメイン(momo-lab.sakura.ne.jp)ってどうなるのかな…。 こっちのドメインで運用しているところがあるので、両方使えるといいんだけどな。
_ [tDiary] hide_category2.rb プラグイン。
ちょっと違ったアプローチで試してみました。 私はにっきをRDスタイルで書いているので、とりあえず、それ限定で。
# hide_category2.rb module ::TDiary class RdDiary alias :each_section_orig :each_section def each_section each_section_orig do |section| next if section.categories.include?('hidden') yield section end end def to_src r = '' each_section_orig do |section| r << section.to_src end r end end end
xx_style.rbのeach_sectionを無理やり書き換えてしまう、というアプローチ。 単純にeach_sectionを書き換えるだけでは、to_srcまで変わってしまい保存データからも[hidden]なセクションが消えてしまったので、to_srcも置き換えています。 スタイルによって実装を変えないといけなさそうだったので、とりあえず自分の使っているRDスタイルだけ作ってみたんだけど、今度はいい感じで動いているっぽいです。
…まぁ、これをテストする過程で、[hidden]で書いていた日記を全て消してしまったんだけどねorz