ftp-recordings:returns?

とりあえず音楽活動4年間のブランクを埋めるべくWeblogを開始してみたが、ネットゲームのプレイ日記に成り果てそうな予感がひしひしと。目標はドメインが有効な1年間のうちにせめて1曲・・・一応達成

MovableTypeでエントリの作成日時を保存した時刻にする

注意: このエントリーの情報は古いです。MovableType3.2の場合はこちらのエントリーを参照してください。

MovableTypeは、エントリーの作成日時は「管理ページで新規エントリーのページを選択した時刻」が標準でセットされる。すなわち標準ではエントリーの時刻とは、「エントリーを書き始めた時刻」になる。でもこれってなんか変じゃないか?普通に考えたらエントリーの作成日時は「書き始めた時刻」ではなく、「書き終えた時刻」じゃないか?

エントリーを書き始めてから数分で完成させてしまうような人なら大して問題にならないのかも知れないが、私みたいに作業の合間に少しずつエントリーを書いて、完成までに数十分〜数時間かけるような場合は実際の投稿時刻とエントリーの時刻がかけ離れたものになってしまう(例えばこのエントリーを書き始めたのは15:49:39だ)。

またWeblogの投稿者が複数いる場合には、後からエントリーを書き始めた人が先に完成させると、後から投稿したエントリーの方が古いエントリーとして扱われてしまう。

続きを読む...

もちろんMovableTypeではエントリーの作成日時を任意の時刻に変更することも可能だが、毎回エントリーの保存前に現在時刻を調べて入力しなおすのは面倒だし、入力ミスの可能性もある。そこでエントリーの作成日時が「書き終えた時刻」になるようにMovableTypeを改造してみた。

注意

この改造ではMovableTypeのソースを直接変更することになるので、改造前に該当ファイルのバックアップを取っておくこと。またMovableTypeをアップグレードした際には同様の改造を再度行う必要がある。なおこの改造によってMovableTypeの動作に問題が起きても私は一切の責任を負いかねるのであしからず。

1. update_time.jsファイルの作成

以下の内容のJavaScriptを「update_time.js」というファイル名で作成し、mt.cgiと同じディレクトリにアップロードする。

var do_update = false;

function lounchUpdate() {
  var search = window.location.search;
  if (search.indexOf("&id=") == -1) {
    startUpdate();
  } else {
    var obj = document.getElementById("updateSwitch");
    obj.value = "start";
    stopUpdate();
  }
}

function switchUpdate() {
  var obj = document.getElementById("updateSwitch");
  if (do_update) {
    obj.value = "start";
    stopUpdate();
  } else {
    obj.value = "stop";
    startUpdate();
  }
}

function startUpdate() {
  do_update = true;
  updateTime();
}

function stopUpdate() {
  do_update = false;
}

function updateTime() {
  if (do_update) {
    var dd = new Date();
    var _yy = dd.getYear();
    var _mm = dd.getMonth() + 1;
    var _dd = dd.getDate();
    var _HH = dd.getHours();
    var _MM = dd.getMinutes();
    var _SS = dd.getSeconds();

    if (_yy < 2000) { _yy += 1900; }
    if (_mm < 10) { _mm = "0" + _mm; }
    if (_dd < 10) { _dd = "0" + _dd; }
    if (_HH < 10) { _HH = "0" + _HH; }
    if (_MM < 10) { _MM = "0" + _MM; }
    if (_SS < 10) { _SS = "0" + _SS; }

    var obj = document.getElementById("created_on_manual");
    obj.value = _yy + "-" + _mm + "-" + _dd +
      " " + _HH + ":" + _MM + ":" + _SS;

    setTimeout("updateTime()", 1000);
  }
}

window.onload = lounchUpdate;

2. edit_entry.tempファイルの修正

(MovableTypeのインストールディレクトリ)/tmpl/cms/edit_entry.tmplを次に示すように修正する。修正前に必ずバックアップを取ること。

まず以下の行を検索する。

<script type="text/javascript">

この直前に以下を挿入する。

<script type="text/javascript" src="./update_time.js"></script>

次に以下の行を検索する(実際には改行はない)。

<input name="created_on_manual" id="created_on_manual" tabindex="8"
 value="<TMPL_VAR NAME=CREATED_ON_FORMATTED ESCAPE=HTML>" />

この直後に以下を挿入する。

<input name="updateSwitch" id="updateSwitch" value="stop"
 type="button" onclick="switchUpdate()" />

これでエントリーの編集ページで、作成日時の入力欄が常に現在時刻を示し続け、横には次のようなボタンが追加されるはずだ。

作成日時ボタン周辺

作成日時を任意の時刻に変更したい場合は、このボタンをクリックすることで更新を止めることが出来る。あとは任意の時刻を入力すればよい。再度クリックした場合はまた現在時刻を示し続けるようになる。

trackbacks

2 0 0 5 / 0 6
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

recent entries

2006-08-17
PING presents Lounge "20"
2006-07-26
ペプシカーニバル
2006-07-12
18禁ファンタ
2006-07-07
ナン・カリー
©2005, 2006 Yusuke Noda, all rights reserved.
powered by Movable Type 3.2-ja-2