メニュー

【freoプラグイン】【スケジュール管理系プラグイン】スケジュールプラグイン

2014/03/01 07:26|タグ:スケジュールプラグイングッジョブ表示 53

スケジュールを管理するプラグインを作成しました。

ライセンスについて

ライセンスはGNU General Public License (GPL)です。

特徴

開催日時の他、終了日時を設定できるので、期間のある予定を管理するのに適しています。
タイトル、場所、コメント、イメージ、ファイル(10種)、オプション(10種)を登録できます。

  • 予定を登録して、一覧表示・個別に表示できます。
  • 予定一覧では登録した予定を開催日時順に並べて表示します。
  • 終了日時を登録できます。
  • 場所を登録できます。
  • 同じ開催日時の予定は予定名順に並べて表示します。
  • 開催日時の昇順・降順、予定名の昇順・降順を管理画面の設定から変更できます。
  • URLを入力すると予定名に任意のリンクを貼ることができます。
  • コメントをつけられます。
  • タグを利用して予定を分類できます。
  • カテゴリーを登録して予定を分類できます。
  • 予定イメージ(画像に限る)を1つ登録できます。
  • 予定イメージの他に10個までファイル(画像)を登録できます。
  • オプション項目を10個まで登録できます。
  • オプションの名前・種類は任意に設定できます。

サンプル

当サイトのスケジュールで使用しています。

ダウンロード

schedule_3287_1_0_1.zip

導入方法

  1. 上記ファイルをDLして解凍する。
  2. あらかじめ管理者でfreoにログインしておく。
  3. [schedule]フォルダをfreo設置フォルダにアップデート。
  4. ブラウザから[freo/index.php/schedule/setup]にアクセスしてセットアップを実行する。
  5. パーミッションが設定されない場合は[freo/configs/plugins/schedule.ini]のパーミッションを606に設定する。
  6. [freo/files/temporaries/plugins/schedule]フォルダ[freo/files/plugins/schedule]フォルダのパーミッションを707に変更する。
  7. 管理画面の[設定管理]―[プラグインの設定]―[スケジュールプラグイン]で各種設定を行います。
  8. 管理画面の[プラグイン]―[スケジュールプラグイン]でイベントを登録します。
  9. [freo/index.php/schedule]にアクセスして正常に予定がリスト表示されるか確認してください。

デフォルト画面・ページ画面で予定を表示する方法

下記ソースをイベント予定を表示したい画面のテンプレートに挿入します。

    <!--{foreach from=$plugin_schedules|smarty:nodefaults item='plugin_schedule'}-->
        <h3><!--{if $plugin_schedule.url}--><a href="{if $plugin_schedule.url|regex_match:'/^https?\:\/\//'}{$plugin_schedule.url}{else}{$freo.core.http_file}/{$plugin_schedule.url}{/if}" target="_blank">{$plugin_schedule.title}</a><!--{else}-->{$plugin_schedule.title}<!--{/if}--><!--{if $freo.user.authority == 'root' or $freo.user.authority == 'author'}--><a href="{$freo.core.http_file}/schedule/admin_form?id={$plugin_schedule.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a><!--{/if}--></h3>
        <dl class="schedule">
            <dt>日時</dt>
                <dd><a href="{$freo.core.http_file}/schedule/view/{$plugin_schedule.id}">{$plugin_schedule.datetime|date_format:'%Y/%m/%d %H:%M:%S'}~{$plugin_schedule.enddatetime|date_format:'%Y/%m/%d %H:%M:%S'}</a></dd>
            <dt>場所</dt>
                <dd>{$plugin_schedule.place}</dd>
            <dt>コメント</dt>
                <dd>{$plugin_schedule.text|mb_truncate:50:'...'}</dd>
            <dt>カテゴリー</dt>
                <dd><a href="{$freo.core.http_file}/schedule?category_id={$plugin_schedule.category_id}">{$plugin_schedule_categories[$plugin_schedule.category_id].name}</a></dd>
            <dt>イメージ</dt>
                <dd><!--{if $plugin_schedule_files[$plugin_schedule.id].file}--><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/schedule_files/{$plugin_schedule.id}/{$plugin_schedule_files[$plugin_schedule.id].file}" alt="{$plugin_schedule.title}" /><!--{/if}--></dd>
            <dt>タグ</dt>
                <dd><!--{foreach from=$plugin_schedule_tags[$plugin_schedule.id]|smarty:nodefaults item='plugin_schedule_tag' name='loop'}--><a href="{$freo.core.http_file}/schedule?tag={$plugin_schedule_tag|smarty:nodefaults|escape:'url'}">{$plugin_schedule_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}--></dd>
        </dl>
    <!--{/foreach}-->

おまけのCSS

下記ソースを[freo/css/default.css]に加筆してください。

dl.schedule dt{
    clear:left;
    float:left;
    width:135px;
    margin:0 0 8px;
    background-color:#cccccc;
    border-left:3px solid #000000;
    padding-left:5px;
}
dl.schedule dd{margin:0 0 8px 150px;}
dl.schedule dd img{max-width:200px;}

スケジュールプラグインのテーブル構成

  • イベントをリスト管理します。
  • 初期状態のテーブル名は freo_plugin_eventlistです。
フィールドタイプヌルキー備考格納データ補足
id INT UNSIGNED   KEY AUTO_INCREMENT イベントID  
category_id VARCHAR YES     カテゴリーID  
created DATETIME       登録日時 新規登録日時で自動的に反映
modified DATETIME       更新日時 最終更新日時を自動的に反映
datetime DATETIME       開催日時 現在日時が自動的に反映。任意で入力も可能。
enddatetime DATETIME       終了日時 現在日時が自動的に反映。任意で入力も可能。
title VARCHAR(255) YES     予定名  
url TEXT YES     予定URL  
tag VARCHAR(255) YES     タグ  
place VARCHAR(255) YES     場所  
option01 TEXT YES     オプション1  
option02 TEXT YES     オプション2  
option03 TEXT YES     オプション3  
option04 TEXT YES     オプション4  
option05 TEXT YES     オプション5  
option06 TEXT YES     オプション6  
option07 TEXT YES     オプション7  
option08 TEXT YES     オプション8  
option09 TEXT YES     オプション9  
option10 TEXT YES     オプション10  
text TEXT YES     コメント  

スケジュールプラグインのカテゴリーテーブル構成

  • スケジュールのカテゴリーを管理します。
  • 初期状態のテーブル名は freo_plugin_schedule_categoryです。
フィールドタイプヌルキー備考格納データ補足
id INT UNSIGNED   KEY AUTO_INCREMENT イベントID  
created DATETIME       登録日時 新規登録日時で自動的に反映
modified DATETIME       更新日時 最終更新日時を自動的に反映
sort INT UNSIGNED       表示順 自動的に入力。任意で入力も可能。
name VARCHAR(255)       カテゴリー名  
memo TEXT YES     カテゴリーのコメント  

更新履歴

2014/03/01 配布開始
2016/01/14 終了日付が不正であった不具合を解消。
[freo/libs/freo/plugins/config.schedule.php]
[freo/libs/freo/plugins/page.schedule.php]をアップデートしてください。
   
   

ページ移動

関連エントリー

コメント

Eriko

初めまして!
スケジュールプラグインで日頃から大変お世話になっています。

もし可能ならご教授いただきたいことがありコメントさせていただきました。

lolipopサーバーで使用させて頂いているのですが、
先日lolipop内事前新サーバー移設を実行し、それ以降から「終了日時」の表記がおかしなことになってしまいました。

これまでは、現在日時が正常に反映されていたものが
例えば本日付けでの投稿だと「-1年11月30日」という表記になってしまいます。

開催日時は正常に現在日時が自動的に反映されるのですが…

ちなみにPHPバージョンは5.3になります。

この移設が原因なのかが分からずコメントさせていただいたのですが
なにか修正対策などご教授お願いできればよろしくお願い致します。

  • 2015/11/16 15:45:34

ミツ@32877

こんにちは。

[freo/templates/plugins/schedule/default.html]や[freo/templates/plugins/schedule/view.html]の終了日時表示部分のテンプレートをどのように記載しているのか教えて下さい。

{$plugin_schedule.enddatetime|date_format:'%Y/%m/%d %H:%M:%S'}

と表示したときにどのように表示されるか教えてください。

よろしくお願いします。

  • 2015/11/16 16:02:21

Eriko

早速のご返信ありがとうございました。

入力フォームと出力時のテンプレート内記述は下記の通りになります。

[freo/templates/plugins/schedule/admin_form.html]
<input type="text" name="plugin_schedule[enddatetime][year]" size="4" value="{$input.plugin_schedule.enddatetime|date_format:'%Y'}" />

<input type="text" name="plugin_schedule[enddatetime][month]" size="2" value="{$input.plugin_schedule.enddatetime|date_format:'%m'}" />

<input type="text" name="plugin_schedule[enddatetime][day]" size="2" value="{$input.plugin_schedule.enddatetime|date_format:'%d'}" />

<input type="text" name="plugin_schedule[enddatetime][hour]" size="2" value="{$input.plugin_schedule.enddatetime|date_format:'%H'}" />

<input type="text" name="plugin_schedule[enddatetime][minute]" size="2" value="{$input.plugin_schedule.enddatetime|date_format:'%M'}" />

<input type="text" name="plugin_schedule[enddatetime][second]" size="2" value="{$input.plugin_schedule.enddatetime|date_format:'%S'}" />

[freo/templates/plugins/schedule/view.html]
▼テンプレート内記述
{$plugin_schedule.enddatetime|date_format:'%Y/%m/%d %H:%M:%S'}

▼出力表示内容
-1/11/30 00:00:00

この様な感じです。
よろしくお願いします。

  • 2015/11/16 16:17:46

ミツ@32877

こんにちは。

お問い合わせ頂く前にご一読ください。
http://32877.xii.jp/index.php/about/support
以前いただいたコメントだと、どの画面を表示したときに終了日時の年表記がおかしくなるのかがわかりません。

[freo/index.php/schedule/admin_form]を開いたときに終了日時に現在の日付が自動挿入されないという件でよろしければ、

[freo/libs/freo/plugins/page.schedule.php]の503~506行目

//新規データ設定
$plugin_schedule = array(
'datetime' => date('Y-m-d'),
);

を、

//新規データ設定
$plugin_schedule = array(
'datetime' => date('Y-m-d'),
'enddatetime' => date('Y-m-d'),
);

に修正してみてください。
上記でうまくいかなければまた教えて下さい。

  • 2015/11/16 18:48:57

Eriko

ミツさん、おはようございます!

教えて頂いた箇所を修正してみたところ
正常に日付取得ができるようになりました。

お忙しいところ迅速なご対応、本当にありがとうございまいた。

これからも宜しくお願い致しますm(__)m

  • 2015/11/17 10:41:46

コメント登録

登録フォーム
名前
メールアドレス
URL
コメント
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

新着コメント

Twitter

サイト内検索

ページ上部へ