codes****@googl*****
codes****@googl*****
2009年 1月 4日 (日) 22:29:56 JST
Author: dengenxp Date: Sun Jan 4 05:06:49 2009 New Revision: 1093 Modified: trunk/geeklog-1-jp-extended/CHANGES.jp trunk/geeklog-1-jp-extended/plugins/custommenu/README_JP trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custom.css trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custommenu/menueditor.thtml trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/custommenu/menueditor.thtml trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/style.css trunk/geeklog-1-jp-extended/plugins/custommenu/config.php trunk/geeklog-1-jp-extended/plugins/custommenu/functions.inc trunk/geeklog-1-jp-extended/plugins/custommenu/install_defaults.php trunk/geeklog-1-jp-extended/plugins/custommenu/language/english.php trunk/geeklog-1-jp-extended/plugins/custommenu/language/english_utf-8.php trunk/geeklog-1-jp-extended/plugins/custommenu/language/japanese_utf-8.php trunk/geeklog-1-jp-extended/plugins/custommenu/layout/professional/custommenu/menueditor.thtml trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp.html trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp_1.5.html trunk/geeklog-1-jp-extended/public_html/admin/plugins/custommenu/index.php trunk/geeklog-1-jp-extended/public_html/custommenu/templates/menueditor.thtml Log: custommenuプラグイン:r1092の変更をtrunk/geeklog-1-jp-extendedへ反映させま す。 変更点をCHANGES.jpへ記載します。 Modified: trunk/geeklog-1-jp-extended/CHANGES.jp ============================================================================== --- trunk/geeklog-1-jp-extended/CHANGES.jp (original) +++ trunk/geeklog-1-jp-extended/CHANGES.jp Sun Jan 4 05:06:49 2009 @@ -1,5 +1,16 @@ $Id$ +2009-1-4 Yoshinori Tahara <dengen> + + * PHPモードで、ID、クラス名、子メニューエントリの配列を設定できるよう + にしました。 + メニューアイテムの編集におけるバリデーションを強化しました。 + 0.4.0以降へのバージョンアップが正常に行えない問題に対応しました。 + メニューアイテムIDの変更に伴い親アイテムIDが更新されない問題に対応 + しました。 + テンプレートとCSSを一部修正しました。 + 説明書(readme_jp.thml, readme_jp_1.5.html)を充実させました。 + 2008-12-26 mystral-kk <mystral-kk> * Dataproxyプラグイン、サイトマッププラグインを共にバージョン Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/README_JP ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/README_JP (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/README_JP Sun Jan 4 05:06:49 2009 @@ -1,128 +1,4 @@ Geeklog1.4.1にインストールする場合は、readme_ja.htmlをお読みください。 Geeklog1.5.0にインストールする場合は、readme_ja_1.5.htmlをお読みください。 - -[多階層メニューに対応した独自メニューレンダラについて] - -バージョン0.4.0より多階層メニューや画像を使ったメニューに対応した独自メニ ューレンダラを搭載しました。 -比較的大規模なサイトに多くみられるプルダウンメニューなどを実装可能なHTMLを 出力できるようになりました。 - -Geeklog標準のメニューレンダラが出力するヘッダーメニュー部のHTMLは次のような ものです。 - - <div class="header-navigation-container"> - <ul> - <li class="menuitem"><a href="index1.php">text1</a></li> - <li class="menuitem"><a href="index2.php">text2</a></li> - <li class="menuitem"><a href="index3.php">text3</a></li> - : - : - : - <li class="menuitem last"><a href="indexx.php">textx</a></li> - </ul> - </div> - -これに対して、今回搭載した独自メニューレンダラでは、次のような入れ子構造の HTMLを出力することができます。 - - <div class="header-navigation-container"> - <ul> - <li id="menu_id1" class="menuitem"><a href="index1.php">text1</a></li> - <li id="menu_id2" class="menuitem"><a href="index2.php">text2</a> - <ul> - <li id="submenu_id1" class="menuitem"><a href="index_s1.php">text1</a></li> - <li id="submenu_id2" class="menuitem"><a href="index_s2.php">text2</a></li> - <li id="submenu_id3" class="menuitem"><a href="index_s3.php">text3</a></li> - : - : - : - <li id="submenu_idx" class="menuitem"><a href="index_sx.php">textx</a></li> - </ul> - </li> - <li id="menu_id3" class="menuitem"><a href="index3.php">text3</a></li> - : - : - : - <li id="menu_idx" class="menuitem last"><a href="indexx.php">textx</a></li> - </ul> - </div> - -また、メニューアイテムごとに次のテンプレート変数をサポートします。 - - menuitem_url メニューアイテムのリンク先URL - menuitem_text メニューアイテムのタイトル - menuitem_id メニューアイテムのID - menuitem_class メニューアイテムのクラス名 (例:'last') - class_property メニューアイテムのクラスプロパティ (例:'class="last"') - menuitem_icon_url メニューアイテムのアイコンとして用いる画像のURL - -多階層メニューを試すには、次の操作を行って下さい。 - (1) /bonus/lib-common.phpの657行〜666行のように、lib-common.phpを修正す る必要があります。 - (2) コンフィギュレーション -> カスタムメニュー -> メニューレンダラ を「 階層メニュー対応」に設定します。 - (3) /bonus/layout/テーマ名 のファイル群を、テーマディレクトリにコピーし ます。(professional と ProfessionalCSS のみ対応) - -上記(3)の操作で、menuitem.thtml, menuitem_last.thtml, style.css, custom.css を上書きしますので、事前のバックアップをお忘れなく。 - -「メニューアイテムの編集」で「親アイテムID」を使って階層を設定します。 - -階層メニューの起点になるメニューアイテムのクラス名に'drop'や'fly'を設定して みて下さい。(アローアイコンが出現します) -子階層メニューの最初のアイテム、孫階層メニューの最初のアイテム、親階層メニ ューの最後のアイテムのクラス名に'enclose'を設定して下さい。 - -画像を使ったメニューを試すには、テンプレート変数 menuitem_icon_url を使っ て、/layout/テーマ名/custommenu/内のmenuitem.thtml, menuitem_drop.thtmlを修 正します。加えて、CSSを使ってレイアウトを調整してください。 - - -[URLの照合機能について] - -バージョン0.3.0よりURLの照合機能を追加しました。 -URLの照合機能とは、Geeklogサイトの表示中のページのURLをメニューアイテムごと に照合し、マッチしたメニューアイテムのスタイルを変化させるものです。 -例えば、リンクのページを開いているときに、リンクのメニューアイテムを反転さ せて表示させることが可能となります。 -ただし、別途、システムの一部(lib-common.php)とテーマの一部を変更する必要 があります。 - -一例として、リンクのメニューアイテムを反転させる方法を示します。ここでは、 professionalテーマを用います。 -カスタムメニューの管理画面で「リンク」を編集します。 -項目「URL照合文字列」へ"/links/"を入力し、更新ボタンをクリックします。カス タムメニューエディタでの作業はこれだけです。 - -これは、「表示ページのURLに"/links/"が含まれていたときに、メニューアイテム 「リンク」のスタイルを変化させる。」という意味の設定です。 -なお、「正規表現」を有効にすると、PHPがサポートしている正規表現で照合するこ とができます。照合の条件が複雑な場合に使用することを想定した機能であり、使用 する場面は少ないでしょう。照合にはpreg_match関数を使用しています。 -正規表現の詳細については http://jp.php.net/manual/ja/regexp.reference.php を参照してください。 - -lib-common.phpの変更は実質2行追加するだけの簡単なものであり、副作用もありま せん。同梱の/bonus/lib-common.phpの623行目および681行目を参考にしてくださ い。Geeklog1.5.1用ですので該当バージョンをお使いの方はそのまま使用されてもよ いでしょう。 - -テーマの変更は、menuitem.thtml、menuitem_last.thtml、style.css の3つのファ イルを対象とします。 -/bonus/layout/professonal/内のファイルを参照してください。 -<li>タグに class="{menuitem_selected}" が追加されていることに注目してくださ い。 -style.csssは1031行目から1033行目の3行を加えるだけです。(サンプルなので単純 に背景色を変えただけ) - -これで完了です。メニューアイテム「リンク」をクリックして効果を確認してみて ください。 -テーマをさらに変更してハイセンスなメインメニューを構築してください。 - - -[多言語切り替え機能について] - -バージョン0.2.3より多言語切り替え機能への対応を強化しました。 -バージョン0.2.2以前のバージョンでは、多言語切り替えのために「可変モード」を 用意していましたが、メニューアイテムの表示を切り替えることはできるものの、リ ンク先まで切り替えることはできませんでした。(そこまでやるにはPHPモードを活 用する必要がありました。) -バージョン0.2.3からはGeeklog1.5.1から追加された「ブロックの多言語切り替え機 能」と同様の機能をサポートします。 - -「ブロックの多言語切り替え機能」の詳細については以下のWikiを参照してくださ い。 -http://wiki.geeklog.jp/index.php/Multi-Language_Support#.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF -http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support#Blocks - -一例として、英語と日本語を切り替える場合の使用方法を示します。 -カスタムメニュー管理画面で言語数+1つ(つまり合計3つ)で1セットのメニ ューアイテムを作成します。 -そして「メニューアイテムID」を、例えば次のように設定します。 -about -about_en -about_ja - -ここで添字"_en"を付加したものは英語モードで、添字"_ja"を付加したものは日本 語モードで用いるアイテムにします。 -そして、それぞれの「有効」オプションを次のように設定します。 -about 有効 -about_en 無効 -about_ja 無効 - -「タイトル(固定)」や「URL」はそれぞれの言語に応じて、表示させたいリンク先 のURLを指定します。(「モード」が「固定」の場合) -これで完了です。言語モードを切り替えてみてください。 - -メニューアイテム"about"の情報が、システムの言語モードに応じて、メニューアイ テム"about_en"やメニューアイテム"about_ja"の情報でオーバーライドされる仕組み です。システムの多言語モードがオフの時には、メニューアイテム"about"の情報が そのまま使われます。 - - - 以上。 Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custom.css ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custom.css (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custom.css Sun Jan 4 05:06:49 2009 @@ -90,6 +90,7 @@ div#container div#navigation li:hover { position : relative; + z-index : 100; } /* Make the hovered list color persist */ @@ -113,7 +114,7 @@ top : -11px; left : 80px; padding : 10px 30px 30px 30px; - background : transparent url(transparent.gif); + background : transparent url(custommenu/images/transparent.gif); width : 120px; } @@ -174,7 +175,7 @@ top : -11px; left : 80px; padding : 10px 30px 30px 30px; - background : transparent url(transparent.gif); + background : transparent url(custommenu/images/transparent.gif); } /* keep the third level+ hidden when you hover on first level link */ Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custommenu/menueditor.thtml ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custommenu/menueditor.thtml (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/ProfessionalCSS/custommenu/menueditor.thtml Sun Jan 4 05:06:49 2009 @@ -1,166 +1,100 @@ - <form action="{site_admin_url}/plugins/custommenu/index.php" method="post"> - <table cellspacing="0" cellpadding="3" width="100%"> - <tr> - <td width="180" class="alignright" style="vertical-align:top">{lang_mode}:</td> - <td> - <select name="mmode"> - <option value="fixation" {val_mode_fixation}>{lang_mode_fixation}</option> - <option value="variable" {val_mode_variable}>{lang_mode_variable}</option> - <option value="php" {val_mode_php}>{lang_mode_php}</option> - </select> - <br{xhtml}><div class="pluginMediumText">{lang_mode_info}</div> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_title_fixation}:</td> - <td> - <input type="text" name="title_fixation" value="{val_title_fixation}" size="48"{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_title_fixation_info}</div> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_title_variable}:</td> - <td> - <input type="text" name="title_variable" value="{val_title_variable}" size="48"{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_title_variable_info}</div> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_php_function}:</td> - <td> - <input type="text" name="php_function" value="{val_php_function}" size="48"{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_php_function_info}</div> - </td> - </tr> - - <tr> - <td class="alignright">{lang_is_enabled}:</td> - <td><input type="checkbox" name="is_enabled" {val_is_enabled}{xhtml}></td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_menuitemurl}:</td> - <td> - <input type="text" name="url" value="{val_menuitemurl}" size="48"{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_includehttp}</div> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_menuitemid}:</td> - <td> - <input type="text" name="mid" value="{val_mid}" size="48" {mid_readonly}{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_nospaces}</div> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_parentitemid}:</td> - <td> -{selpmid} - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_class_name}:</td> - <td> - <input type="text" name="class_name" value="{val_class_name}" size="48"{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_class_name_info}</div> - </td> - </tr> - - <tr> - <td class="alignright">{lang_topic}:</td> - <td> - <select name="tid"> - <option value="all" {all_selected}>{lang_all}</option> - <option value="homeonly" {homeonly_selected}>{lang_homeonly}</option> - {topic_options} - </select> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_menuitemorder}:</td> - <td> - <input type="text" name="menuorder" value="{val_menuorder}" size="4"{xhtml}> - <span class="pluginMediumText"> 0 - 9999</span> - </td> - </tr> - - <tr> - <td class="alignright">{lang_menuitemtype}:</td> - <td>{lang_type}</td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_icon_url}:</td> - <td> - <input type="text" name="icon_url" value="{val_icon_url}" size="48"{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_icon_url_info}</div> - </td> - </tr> - - <tr> - <td class="alignright" style="vertical-align:top">{lang_pattern}:</td> - <td> - <input type="text" name="pattern" value="{val_pattern}" size="48"{xhtml}> - {lang_is_preg}: - <input type="checkbox" name="is_preg" {val_is_preg}{xhtml}> - <br{xhtml}><div class="pluginMediumText">{lang_pattern_info}</div> - </td> - </tr> - - <tr> - <td colspan="2"><hr{xhtml}></td> - </tr> - - <tr> - <td colspan="2"><strong>{lang_accessrights}</strong></td> - </tr> - - <tr> - <td class="alignright">{lang_owner}:</td> - <td>{owner_name}</td> - </tr> - - <tr> - <td class="alignright">{lang_group}:</td> - <td> - {group_dropdown} - </td> - </tr> - - <tr> - <td colspan="2"><strong>{lang_permissions}:</strong></td> - </tr> - - <tr> - <td colspan="2">{lang_perm_key}</td> - </tr> - - <tr> - <td colspan="2">{permissions_editor}</td> - </tr> - - <tr> - <td colspan="2">{lang_permissions_msg}</td> - </tr> - <tr><td> </td></tr> - <tr> - <td colspan="2"> - <input type="submit" name="mode" value="{lang_save}"{xhtml}> - <input type="submit" name="mode" value="{lang_cancel}"{xhtml}> - <input type="submit" name="mode" value="{lang_delete}" onclick="return confirm('{lang_confirm}');" {delete_disabled}{xhtml}> - <input type="hidden" name="type" value="{val_type}"{xhtml}> - <input type="hidden" name="owner_id" value="{owner_id}"{xhtml}> - <input type="hidden" name="old_mid" value="{val_old_mid}"{xhtml}> - <input type="hidden" name="{gltoken_name}" value="{gltoken}"{xhtml}> - </td> - </tr> - </table> - </form> +<form action="{site_admin_url}/plugins/custommenu/index.php" method="post" id="custommenueditor" class="compact"> + <fieldset> + <legend>{lang_custommenueditor}</legend> + <dl> + <dt><label for="mmode">{lang_mode}</label></dt> + <dd> + <select name="mmode" id="mmode"> + <option value="fixation" {val_mode_fixation}>{lang_mode_fixation}</option> + <option value="variable" {val_mode_variable}>{lang_mode_variable}</option> + <option value="php" {val_mode_php}>{lang_mode_php}</option> + </select> + </dd> + <dd class="description">{lang_mode_info}</dd> + + <dt><label for="title_fixation">{lang_title_fixation}</label></dt> + <dd><input type="text" size="40" value="{val_title_fixation}" name="title_fixation" id="title_fixation" class="text"{xhtml}></dd> + <dd class="description">{lang_title_fixation_info}</dd> + + <dt><label for="title_variable">{lang_title_variable}</label></dt> + <dd><input type="text" size="40" value="{val_title_variable}" name="title_variable" id="title_variable" class="text"{xhtml}></dd> + <dd class="description">{lang_title_variable_info}</dd> + + <dt><label for="php_function">{lang_php_function}</label></dt> + <dd><input type="text" size="40" value="{val_php_function}" name="php_function" id="php_function" class="text"{xhtml}></dd> + <dd class="description">{lang_php_function_info}</dd> + + <dt><label for="is_enabled">{lang_is_enabled}</label></dt> + <dd><input type="checkbox" {val_is_enabled} name="is_enabled" id="is_enabled"{xhtml}></dd> + + <dt><label for="url">{lang_menuitemurl}</label></dt> + <dd><input type="text" size="40" value="{val_menuitemurl}" name="url" id="url" class="text"{xhtml}></dd> + <dd class="description">{lang_includehttp}</dd> + + <dt><label for="mid">{lang_menuitemid}</label></dt> + <dd><input type="text" size="40" value="{val_mid}" name="mid" id="mid" class="text" {mid_readonly}{xhtml}></dd> + <dd class="description">{lang_nospaces}</dd> + + <dt><label for="pmid">{lang_parentitemid}</label></dt> + <dd>{selpmid}</dd> + + <dt><label for="class_name">{lang_class_name}</label></dt> + <dd><input type="text" size="40" value="{val_class_name}" name="class_name" id="class_name" class="text"{xhtml}></dd> + <dd class="description">{lang_class_name_info}</dd> + + <dt><label for="tid">{lang_topic}</label></dt> + <dd> + <select name="tid" id="tid"> + <option value="all" {all_selected}>{lang_all}</option> + <option value="homeonly" {homeonly_selected}>{lang_homeonly}</option> + {topic_options} + </select> + </dd> + + <dt><label for="menuorder">{lang_menuitemorder}</label></dt> + <dd><input type="text" size="4" value="{val_menuorder}" name="menuorder" id="menuorder" class="text"{xhtml}></dd> + <dd class="description">0-9999</dd> + + <dt><label for="type">{lang_menuitemtype}</label></dt> + <dd>{lang_type}</dd> + + <dt><label for="icon_url">{lang_icon_url}</label></dt> + <dd><input type="text" size="40" value="{val_icon_url}" name="icon_url" id="icon_url" class="text"{xhtml}></dd> + <dd class="description">{lang_icon_url_info}</dd> + + <dt><label for="icon_url">{lang_pattern}</label></dt> + <dd><input type="text" size="40" value="{val_pattern}" name="pattern" id="pattern" class="text"{xhtml}> + {lang_is_preg}:<input type="checkbox" {val_is_preg} name="is_preg" id="is_preg"{xhtml}></dd> + <dd class="description">{lang_pattern_info}</dd> + </dl> + </fieldset> + + <fieldset> + <legend>{lang_accessrights}</legend> + <dl> + <dt>{lang_owner}</dt> + <dd>{owner_name}</dd> + + <dt><label for="group_id">{lang_group}</label></dt> + <dd>{group_dropdown}</dd> + + <dt><label for="perm_owner">{lang_permissions}</label></dt> + <dd>{permissions_editor}</dd> + <dd class="description">{lang_perm_key}</dd> + <dd class="description">{lang_permissions_msg}</dd> + </dl> + </fieldset> + + <ul class="submit"> + <li><input type="submit" name="mode" value="{lang_save}"{xhtml}></li> + <li><input type="submit" name="mode" value="{lang_cancel}"{xhtml}></li> + <li><input type="submit" name="mode" value="{lang_delete}" onclick="return confirm('{lang_confirm}');" {delete_disabled}{xhtml}></li> + <li> + <input type="hidden" name="type" value="{val_type}"{xhtml}> + <input type="hidden" name="owner_id" value="{owner_id}"{xhtml}> + <input type="hidden" name="old_mid" value="{val_old_mid}"{xhtml}> + <input type="hidden" name="{gltoken_name}" value="{gltoken}"{xhtml}> + </li> + </ul> +</form> Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/custommenu/menueditor.thtml ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/custommenu/menueditor.thtml (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/custommenu/menueditor.thtml Sun Jan 4 05:06:49 2009 @@ -2,7 +2,7 @@ <form action="{site_admin_url}/plugins/custommenu/index.php" method="post"> <table cellspacing="0" cellpadding="3" width="100%"> <tr> - <td width="180" class="alignright" style="vertical-align:top">{lang_mode}:</td> + <td class="alignright" style="width:180px; vertical-align:top">{lang_mode}:</td> <td> <select name="mmode"> <option value="fixation" {val_mode_fixation}>{lang_mode_fixation}</option> Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/style.css ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/style.css (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/bonus/layout/professional/style.css Sun Jan 4 05:06:49 2009 @@ -1097,6 +1097,7 @@ .header-navigation-container li:hover { position : relative; + z-index : 100; } /* Make the hovered list color persist */ @@ -1120,7 +1121,7 @@ top : -11px; left : 80px; padding : 10px 30px 30px 30px; - background : transparent url(transparent.gif); + background : transparent url(custommenu/images/transparent.gif); width : 120px; } @@ -1181,7 +1182,7 @@ top : -11px; left : 80px; padding : 10px 30px 30px 30px; - background : transparent url(transparent.gif); + background : transparent url(custommenu/images/transparent.gif); } /* keep the third level+ hidden when you hover on first level link */ Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/config.php ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/config.php (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/config.php Sun Jan 4 05:06:49 2009 @@ -69,7 +69,7 @@ /** * Plugin Version */ -$_CMED_CONF['version'] = '0.4.0'; +$_CMED_CONF['version'] = '0.4.1'; /** * Add to $_TABLES array the tables custommenu plugin uses Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/functions.inc ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/functions.inc (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/functions.inc Sun Jan 4 05:06:49 2009 @@ -212,11 +212,26 @@ if (version_compare($pi_version, '0.4.0') < 0) { $sql = "ALTER TABLE {$_TABLES['menuitems']} " - . "ADD COLUMN pmid varchar(40) NOT NULL default ''" + . "ADD COLUMN pmid varchar(40) NOT NULL default ''," . "ADD COLUMN class_name varchar(48) default NULL"; DB_query($sql); } + if (version_compare($pi_version, '0.4.1') < 0) { + require_once $_CONF['path'] . 'plugins/custommenu/install_defaults.php'; + require_once $_CONF['path_system'] . 'classes/config.class.php'; + $c = config::get_instance(); + $n = DB_count($_TABLES['conf_values'], "name", 'menu_render'); + if ($n == 0) { + $c->add('menu_render', $_CMED_DEFAULT['menu_render'], 'select', 0, 0, 10, 20, true, 'custommenu'); + } + $n = DB_count($_TABLES['conf_values'], "name", 'prefix_id'); + if ($n == 0) { + $c->add('prefix_id', $_CMED_DEFAULT['prefix_id'], 'text', 0, 0, 0, 30, true, 'custommenu'); + } + DB_query("UPDATE {$_TABLES['conf_values']} SET sort_order = 40 WHERE name = 'default_permissions'"); + } + // Update the version numbers DB_query("UPDATE {$_TABLES['plugins']} " . "SET pi_version = '{$_CMED_CONF['version']}', pi_gl_version = '" . VERSION . "' " @@ -464,6 +479,9 @@ if (!function_exists('CUSTOM_menuEntries')) { + $pi_version = DB_getItem($_TABLES['plugins'], 'pi_version', "(pi_name = 'custommenu')"); + $_CMED_CONF['pulldown_enabled'] = (version_compare($pi_version, '0.4.0') >= 0); + function CUSTOM_menuEntries() { return CMED_menuEntries_recursive(); @@ -471,14 +489,16 @@ function CMED_menuEntries_recursive($pmid='') { - global $_CONF, $_TABLES, $topic; + global $_CONF, $_TABLES, $topic, $_CMED_CONF; $thisUrl = COM_getCurrentURL(); $lang = COM_getLanguageId(); $myentries = array(); if (!empty($_TABLES['menuitems'])) { $sql = "SELECT * FROM {$_TABLES['menuitems']} WHERE is_enabled = 1"; - $sql .= " AND pmid = '$pmid'"; + if ($_CMED_CONF['pulldown_enabled']) { + $sql .= " AND pmid = '$pmid'"; + } if(!empty($topic)) { $sql .= " AND (tid = '$topic' OR tid = 'all')"; } else { @@ -505,8 +525,10 @@ $A['perm_members'],$A['perm_anon']); if ($access > 0) { - $submenu_entries = CMED_menuEntries_recursive($A['mid']); - + $submenu_entries = array(); + if ($_CMED_CONF['pulldown_enabled']) { + $submenu_entries = CMED_menuEntries_recursive($A['mid']); + } $url = CMED_replaceUrl($A['url']); $icon_url = CMED_replaceUrl($A['icon_url']); $pattern = stripslashes($A['pattern']); @@ -532,6 +554,15 @@ $url = $menuitems['url']; $label = $menuitems['label']; $icon_url = $menuitems['icon_url']; + if (!empty($menuitems['id_name'])) { + $id_name = $menuitems['id_name']; + } + if (!empty($menuitems['class_name'])) { + $id_name = $menuitems['class_name']; + } + if (is_array($menuitems['submenu_entries'])) { + $submenu_entries = $menuitems['submenu_entries']; + } } } break; @@ -634,9 +665,12 @@ $label = $LANG01[71]; $menuitems = array( - 'url' => $url, - 'label' => $label, - 'icon_url' => '', + 'url' => $url, + 'label' => $label, + 'icon_url' => '', + 'id_name' => '', + 'class_name' => '', + 'submenu_entries' => array(), ); return $menuitems; } @@ -654,9 +688,12 @@ } $menuitems = array( - 'url' => $url, - 'label' => $label, - 'icon_url' => '', + 'url' => $url, + 'label' => $label, + 'icon_url' => '', + 'id_name' => '', + 'class_name' => '', + 'submenu_entries' => array(), ); return $menuitems; } Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/install_defaults.php ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/install_defaults.php (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/install_defaults.php Sun Jan 4 05:06:49 2009 @@ -73,15 +73,16 @@ $_CMED_DEFAULT['default_permissions'] = array (3, 2, 2, 2); /** - * - * - * - * - * + * Menu Render + * 'standard' -> Geeklog system standard + * 'pulldown' -> Supports a pulldown menu */ $_CMED_DEFAULT['menu_render'] = 'standard'; -$_CMED_DEFAULT['prefix_id'] = 'cmitem-'; +/** + * Prefix to add to ID + */ +$_CMED_DEFAULT['prefix_id'] = 'cmitem-'; /** * Initialize CustomMenu Editor plugin configuration Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/language/english.php ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/language/english.php (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/language/english.php Sun Jan 4 05:06:49 2009 @@ -69,6 +69,9 @@ 'id' => 'ID', 'classname' => 'Class', 'instructions' => 'To modify or delete a data, click on that data\'s edit icon below. To create a new data, click on "Create New" above.', + + 'warning_updated' => 'CustomMenu Editor Plugin is updated.', + 'instructions_update' => 'Please update \'custommenu\' in Plugin Management.', ); $LANG_CMED_EDITOR = array( @@ -128,6 +131,8 @@ 'validate_message_3' => 'In the PHP Mode, you cannot omit input of the PHP Function Name.', 'validate_message_4' => 'You cannot omit input of the Menuitem ID.', 'validate_message_5' => 'There is already the same Menuitem ID.', + 'validate_message_6' => 'URL matching character string is not right.', + 'validate_message_7' => 'In the Fixed Mode and the Variable Mode, you cannot omit the input of the URL.', 'pattern' => 'URL matching character string', 'pattern_info' => 'When the URL of a page displaying matched it with this character string, "selected" is added to the information of menuitem handed to Geeklog system.<br' . XHTML . '>It is enabled to reverse the style of the menuitem when I utilize this.', 'is_preg' => 'Regular Expression', Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/language/english_utf-8.php ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/language/english_utf-8.php (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/language/english_utf-8.php Sun Jan 4 05:06:49 2009 @@ -69,6 +69,9 @@ 'id' => 'ID', 'classname' => 'Class', 'instructions' => 'To modify or delete a data, click on that data\'s edit icon below. To create a new data, click on "Create New" above.', + + 'warning_updated' => 'CustomMenu Editor Plugin is updated.', + 'instructions_update' => 'Please update \'custommenu\' in Plugin Management.', ); $LANG_CMED_EDITOR = array( @@ -129,6 +132,7 @@ 'validate_message_4' => 'You cannot omit input of the Menuitem ID.', 'validate_message_5' => 'There is already the same Menuitem ID.', 'validate_message_6' => 'URL matching character string is not right.', + 'validate_message_7' => 'In the Fixed Mode and the Variable Mode, you cannot omit the input of the URL.', 'pattern' => 'URL matching character string', 'pattern_info' => 'When the URL of a page displaying matched it with this character string, "selected" is added to the information of menuitem handed to Geeklog system.<br' . XHTML . '>It is enabled to reverse the style of the menuitem when I utilize this.', 'is_preg' => 'Regular Expression', Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/language/japanese_utf-8.php ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/language/japanese_utf-8.php (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/language/japanese_utf-8.php Sun Jan 4 05:06:49 2009 @@ -69,6 +69,9 @@ 'id' => 'ID', 'classname' => 'クラス名', 'instructions' => 'データを修正、削除する場合は各データの「編集 」アイコンをクリックしてください。新規作成は「新規作成」をクリックしてくださ い。', + + 'warning_updated' => 'CustomMenu Editor Plugin は更新されていま す。', + 'instructions_update' => 'プラグイン管理で \'custommenu\' の更新を行っ て下さい。', ); $LANG_CMED_EDITOR = array( @@ -129,6 +132,7 @@ 'validate_message_4' => 'メニューアイテムIDは省略できません。', 'validate_message_5' => 'すでに同じメニューアイテムIDが存在します。', 'validate_message_6' => 'URL照合文字列が正しくありません。', + 'validate_message_7' => '固定モードと可変モードで、URLは省略できませ ん。', 'pattern' => 'URL照合文字列', 'pattern_info' => '表示中のページのURLがこの文字列とマッチした場 合は、システムに渡されるメニューアイテムの情報に"selected"が付加されます。 <br' . XHTML . '>これを活用するとメニューアイテムのスタイルを反転させること などが可能になります。', 'is_preg' => '正規表現', Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/layout/professional/custommenu/menueditor.thtml ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/layout/professional/custommenu/menueditor.thtml (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/layout/professional/custommenu/menueditor.thtml Sun Jan 4 05:06:49 2009 @@ -2,7 +2,7 @@ <form action="{site_admin_url}/plugins/custommenu/index.php" method="post"> <table cellspacing="0" cellpadding="3" width="100%"> <tr> - <td width="180" class="alignright" style="vertical-align:top">{lang_mode}:</td> + <td class="alignright" style="width:180px; vertical-align:top">{lang_mode}:</td> <td> <select name="mmode"> <option value="fixation" {val_mode_fixation}>{lang_mode_fixation}</option> Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp.html ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp.html (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp.html Sun Jan 4 05:06:49 2009 @@ -116,9 +116,9 @@ </head> <body> <h1><a name="_top">CustomMenu Editor プラグイン</a></h1> - <h2>バージョン: 0.4.0</h2> + <h2>バージョン: 0.4.1</h2> <h2>作成者: Yoshinori Tahara - dengen</h2> - <h2>公開日: 2008.12.24</h2> + <h2>公開日: 2009.1.4</h2> <h2>ライセンス: GPL</h2> <h2>概要:</h2> <ul> @@ -142,8 +142,12 @@ <ul> <li><a href="#_installation">1) インストール</a></li> <li><a href="#_uninstallation">2) アンインストール</a></li> - <li><a href="#_license">3) 著作権について</a></li> - <li><a href="#_history">4) 改訂履歴</a></li> + <li><a href="#_menuitemmode">3) メニューアイテムのモードについて </a></li> + <li><a href="#_multilanguage">4) 多言語切り替え機能について</a></li> + <li><a href="#_urlmatching">5) URLの照合機能について</a></li> + <li><a href="#_originalmenulender">6) 多階層メニューに対応した独自メニ ューレンダラについて</a></li> + <li><a href="#_license">7) 著作権について</a></li> + <li><a href="#_history">8) 改訂履歴</a></li> </ul> @@ -254,17 +258,219 @@ </ul> <p class="goto"><a href="#_top">Goto Top</a></p> + <h3><a name="_menuitemmode">3) メニューアイテムのモードについて </a></h3> + <p>本プラグインではメニューアイテムを3種類のモードで使い分けることが可能 です。各モードの説明を次に示します。</p> + <div style="margin-left:3em"> + <table> + <tr> + <th>モード</th> + <th>説明</th> + <th>難易度</th> + <th>柔軟性</th> + </tr> + <tr> + <td>固定</td> + <td>タイトル文字列を固定するモードです。<br />併せて「タイトル(固定 )」を入力します。</td> + <td>簡単</td> + <td>低</td> + </tr> + <tr> + <td>可変</td> + <td>Geeklogの多言語切り替え機能に応じてタイトルを可変にするモードで す。<br />併せて「タイトル(可変)」を入力します。<br /> +「タイトル(可変)」には言語ファイル内で定義されている配列変数を指定しま す。<br /> +例えば、$MY_WORD['label'] をタイトルにする場合は MY_WORD['label'] を記入し ます。</td> + <td>やや難しい</td> + <td>中</td> + </tr> + <tr> + <td>PHP</td> + <td>多言語切り替え機能に応じてタイトルを可変にするモードです。<br />併せて「PHP関数名」を入力します。<br /> +「PHP関数名」にはメニューアイテムの情報を返り値として返す関数の関数名を指定 します。<br /> +この関数は関数名に接頭辞「phpmenuitem_」を付けて定義して下さい。<br /> +関数の定義は system/lib-custom.php で行うのが適当でしょう。<br /> +サンプルとして、plugins/custommenu/functions.php に 次の関数を定義していま す。<br /> +<table> + <tr> + <th>サンプル関数名</th> + <th>メニュータイトル</th> + <th>説明</th> + </tr> + <tr> + <td>phpmenuitem_contribute</td> + <td>記事投稿</td> + <td>話題に応じてURLを変化させる例です。</td> + </tr> + <tr> + <td>phpmenuitem_login</td> + <td>ログイン(ログアウト)</td> + <td>ユーザがログインしているかどうかに応じて、タイトルとURLを変化させ る例です。</td> + </tr> +</table></td> + <td>難しい</td> + <td>高</td> + </tr> + </table> + </div> + + <p class="goto"><a href="#_top">Goto Top</a></p> -<h3><a name="_license">3) 著作権について</a></h3> + <h3><a name="_multilanguage">4) 多言語切り替え機能について</a></h3> + <p>バージョン0.2.3より多言語切り替え機能への対応を強化しました。</p> + <p>バージョン0.2.2以前のバージョンでは、多言語切り替えのために「可変モー ド」を用意していましたが、メニューアイテムの表示を切り替えることはできるもの の、リンク先まで切り替えることはできませんでした。(そこまでやるにはPHPモー ドを活用する必要がありました。)</p> + <p>バージョン0.2.3からはGeeklog1.5.1から追加された「ブロックの多言語切り 替え機能」と同様の機能をサポートします。</p> + <p>「ブロックの多言語切り替え機能」の詳細については以下のWikiを参照してく ださい。</p> + <ul> + <li><a href="http://wiki.geeklog.jp/index.php/Multi-Language_Support#.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF">http://wiki.geeklog.jp/index.php/Multi-Language_Support#.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF</a></li> + <li><a href="http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support#Blocks">http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support#Blocks</a></li> + </ul> + <p>一例として、英語と日本語を切り替える場合の使用方法を示します。</p> + <ul> + <li>カスタムメニュー管理画面で言語数+1つ(つまり合計3つ)で1セットの メニューアイテムを作成します。</li> + <li>そして「メニューアイテムID」を、例えば次のように設定します。</li> + </ul> + <pre><code>about +about_en +about_ja</code></pre> + <ul> + <li>ここで添字"_en"を付加したものは英語モードで、添字"_ja"を付加したもの は日本語モードで用いるアイテムにします。</li> + <li>そして、それぞれの「有効」オプションを次のように設定します。</li> + </ul> + <pre><code>about 有効 +about_en 無効 +about_ja 無効</code></pre> + <ul> + <li>「タイトル(固定)」や「URL」はそれぞれの言語に応じて、表示させたいリ ンク先のURLを指定します。(「モード」が「固定」の場合)</li> + <li>これで完了です。言語モードを切り替えてみてください。</li> + <li>メニューアイテム"about"の情報が、システムの言語モードに応じて、メニ ューアイテム"about_en"やメニューアイテム"about_ja"の情報でオーバーライドされ る仕組みです。システムの多言語モードがオフの時には、メニューアイテ ム"about"の情報がそのまま使われます。</li> + </ul> + <p class="goto"><a href="#_top">Goto Top</a></p> + + <h3><a name="_urlmatching">5) URLの照合機能について</a></h3> + <p>バージョン0.3.0よりURLの照合機能を追加しました。</p> + <p>URLの照合機能とは、Geeklogサイトの表示中のページのURLをメニューアイテ ムごとに照合し、マッチしたメニューアイテムのスタイルを変化させるものです。 </p> + <p>例えば、リンクのページを開いているときに、リンクのメニューアイテムを反 転させて表示させることが可能となります。</p> + <p>ただし、別途、システムの一部(lib-common.php)とテーマの一部を変更する 必要があります。</p> + <p>一例として、リンクのメニューアイテムを反転させる方法を示します。ここで は、professionalテーマを用います。</p> + <ul> + <li>カスタムメニューの管理画面で「リンク」を編集します。</li> + <li>項目「URL照合文字列」へ"/links/"を入力し、更新ボタンをクリックしま す。カスタムメニューエディタでの作業はこれだけです。<br /> +これは、「表示ページのURLに"/links/"が含まれていたときに、メニューアイテム 「リンク」のスタイルを変化させる。」という意味の設定です。</li> + <li>なお、「正規表現」を有効にすると、PHPがサポートしている正規表現で照合 することができます。照合の条件が複雑な場合に使用することを想定した機能であ り、使用する場面は少ないでしょう。照合にはpreg_match関数を使用しています。 <br /> +正規表現の詳細については <a href="http://jp.php.net/manual/ja/regexp.reference.php">http://jp.php.net/manual/ja/regexp.reference.php</a> を参照してください。</li> + <li>lib-common.phpの変更は実質2行追加するだけの簡単なものであり、副作用も ありません。同梱の/bonus/lib-common.phpの623行目および681行目を参考にしてく ださい。Geeklog1.5.1用ですので該当バージョンをお使いの方はそのまま使用されて もよいでしょう。</li> + <li>テーマの変更は、menuitem.thtml、menuitem_last.thtml、style.css の3つ のファイルを対象とします。<br /> +/bonus/layout/professonal 内のファイルを参照してください。<br /> +<li>タグに class="{menuitem_selected}" が追加されていることに注目して ください。</li> + <li>style.cssは1031行目から1033行目の3行を加えるだけです。(サンプルなので 単純に背景色を変えただけ)</li> + <li>これで完了です。メニューアイテム「リンク」をクリックして効果を確認し てみてください。<br /> +テーマをさらに変更してハイセンスなメインメニューを構築してください。</li> + </ul> + <p class="goto"><a href="#_top">Goto Top</a></p> + + <h3><a name="_originalmenulender">6) 多階層メニューに対応した独自メニ ューレンダラについて</a></h3> + <p>バージョン0.4.0より多階層メニューや画像を使ったメニューに対応した独自 メニューレンダラを搭載しました。</p> + <p>比較的大規模なサイトに多くみられるプルダウンメニューなどを実装可能な HTMLを出力できるようになりました。</p> + <p>Geeklog標準のメニューレンダラが出力するヘッダーメニュー部のHTMLは次の ようなものです。</p> + <pre><code><div class="header-navigation-container"> + <ul> + <li class="menuitem"><a href="index1.php">text1</a></li> + <li class="menuitem"><a href="index2.php">text2</a></li> + <li class="menuitem"><a href="index3.php">text3</a></li> + : + : + : + <li class="menuitem last"><a href="indexx.php">textx</a></li> + </ul> +</div></code></pre> + <p>これに対して、今回搭載した独自メニューレンダラでは、次のような入れ子構 造のHTMLを出力することができます。</p> + <pre><code><div class="header-navigation-container"> + <ul> + <li id="menu_id1" class="menuitem"><a href="index1.php">text1</a></li> + <li id="menu_id2" class="menuitem"><a href="index2.php">text2</a> + <ul> + <li id="submenu_id1" class="menuitem"><a href="index_s1.php">text1</a></li> + <li id="submenu_id2" class="menuitem"><a href="index_s2.php">text2</a></li> + <li id="submenu_id3" class="menuitem"><a href="index_s3.php">text3</a></li> + : + : + : + <li id="submenu_idx" class="menuitem"><a href="index_sx.php">textx</a></li> + </ul> + </li> + <li id="menu_id3" class="menuitem"><a href="index3.php">text3</a></li> + : + : + : + <li id="menu_idx" class="menuitem last"><a href="indexx.php">textx</a></li> + </ul> +</div></code></pre> + <p>また、メニューアイテムごとに次のテンプレート変数をサポートします。</p> + <div style="margin-left:3em"> + <table> + <tr> + <th>テンプレート変数名</th> + <th>説明</th> + </tr> + <tr> + <td>menuitem_url</td> + <td>メニューアイテムのリンク先URL</td> + </tr> + <tr> + <td>menuitem_text</td> + <td>メニューアイテムのタイトル</td> + </tr> + <tr> + <td>menuitem_id</td> + <td>メニューアイテムのID</td> + </tr> + <tr> + <td>menuitem_class</td> + <td>メニューアイテムのクラス名 (例:'last')</td> + </tr> + <tr> + <td>class_property</td> + <td>メニューアイテムのクラスプロパティ (例:'class="last"')</td> + </tr> + <tr> + <td>menuitem_icon_url</td> + <td>メニューアイテムのアイコンとして用いる画像のURL</td> + </tr> + </table> + </div> + <p>多階層メニューを試すには、次の操作を行って下さい。</p> + <ul> + <li>/bonus/lib-common.phpの657行〜666行のように、lib-common.phpを修正す る必要があります。</li> + <li>コンフィギュレーション -> カスタムメニュー -> メニューレンダラ を「 階層メニュー対応」に設定します。</li> + <li>/bonus/layout/テーマ名 のファイル群を、テーマディレクトリにコピーし ます。(professional と ProfessionalCSS のみ対応)<br /> +この操作で、各テーマの menuitem.thtml, menuitem_last.thtml, style.css, custom.css を上書きしますので、事前のバックアップをお忘れなく。</li> + <li>「メニューアイテムの編集」で「親アイテムID」を使って階層を設定しま す。</li> + <li>階層メニューの起点になるメニューアイテムのクラス名に 'drop' や 'fly' を設定してみて下さい。(アローアイコンが出現します)</li> + <li>子階層メニューの最初のアイテム、孫階層メニューの最初のアイテム、親 階層メニューの最後のアイテムのクラス名に 'enclose' を設定して下さい。</li> + </ul> + <p>画像を使ったメニューを試すには、テンプレート変数 menuitem_icon_url を 使って、/layout/テーマ名/custommenu 内の menuitem.thtml, menuitem_drop.thtml を修正します。加えて、CSSを使ってレイアウトを調整してく ださい。</p> + <p class="goto"><a href="#_top">Goto Top</a></p> + + <h3><a name="_license">7) 著作権について</a></h3> <p>本作品で、削除および矢印アイコンとして使用している delete.png, arrow-dn.png, arrow-up.pngは Joseph North さんの著作物です。<br />ライセンス は次のリンクをご覧ください。</p> <p>Sweetie Icon Set<br />----------------<br />Author: Joseph North<br />Email: subli****@gmail*****<br />License: <a href="http://creativecommons.org/licenses/by-sa/2.0/jp/">Creative Commons Attribution-ShareAlike 2.0</a><br /> Year: 2005</p> <p class="goto"><a href="#_top">Goto Top</a></p> - <h3><a name="_history">4) 改訂履歴</a></h3> + <h3><a name="_history">8) 改訂履歴</a></h3> <table> <tr> <th>バージョン</th> <th>公開日</th> <th>説明</th> + </tr> + <tr> + <td class="center">0.4.1</td> + <td class="center">2009.1.4</td> + <td><span class="new">追加</span> PHPモードで、ID、クラス名、子 メニューエントリの配列を設定できるようにしました。<br /> + <span class="fix">修正</span> メニューアイテムの編集における バリデーションを強化しました。<br /> + <span class="fix">修正</span> 0.4.0以降へのバージョンアップ が正常に行えない問題に対応しました。<br /> + <span class="fix">修正</span> メニューアイテムIDの変更に伴い 親アイテムIDが更新されない問題に対応しました。<br /> + <span class="fix">修正</span> テンプレートとCSSを一部修正し ました。<br /> + <span class="fix">修正</span> 説明書(readme_jp.thml, readme_jp_1.5.html)を充実させました。<br /> + </td> </tr> <tr> <td class="center">0.4.0</td> Modified: trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp_1.5.html ============================================================================== --- trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp_1.5.html (original) +++ trunk/geeklog-1-jp-extended/plugins/custommenu/readme_jp_1.5.html Sun Jan 4 05:06:49 2009 @@ -116,9 +116,9 @@ </head> <body> <h1><a name="_top">CustomMenu Editor プラグイン</a></h1> - <h2>バージョン: 0.4.0</h2> + <h2>バージョン: 0.4.1</h2> <h2>作成者: Yoshinori Tahara - dengen</h2> - <h2>公開日: 2008.12.24</h2> + <h2>公開日: 2009.1.4</h2> <h2>ライセンス: GPL</h2> <h2>概要:</h2> <ul> @@ -142,8 +142,12 @@ <ul> <li><a href="#_installation">1) インストール</a></li> <li><a href="#_uninstallation">2) アンインストール</a></li> - <li><a href="#_license">3) 著作権について</a></li> - <li><a href="#_history">4) 改訂履歴</a></li> + <li><a href="#_menuitemmode">3) メニューアイテムのモードについて </a></li> + <li><a href="#_multilanguage">4) 多言語切り替え機能について</a></li> + <li><a href="#_urlmatching">5) URLの照合機能について</a></li> + <li><a href="#_originalmenulender">6) 多階層メニューに対応した独自メニ ューレンダラについて</a></li> + <li><a href="#_license">7) 著作権について</a></li> + <li><a href="#_history">8) 改訂履歴</a></li> </ul> @@ -202,7 +206,7 @@ // Sample link #2: Link to the Personal Calendar - only visible for // logged-in users - if (!empty ($_USER['uid']) && ($_USER['uid'] > 1)) { + if (!empty ($_USER['uid']) && ($_USER['uid'] > 1)) { $myentries[] = array ('url' => $_CONF['site_url'] . '/calendar/index.php?mode=personal', 'label' => 'My Calendar'); @@ -260,16 +264,226 @@ <p class="goto"><a href="#_top">Goto Top</a></p> -<h3><a name="_license">3) 著作権について</a></h3> + <h3><a name="_menuitemmode">3) メニューアイテムのモードについて </a></h3> + <p>本プラグインではメニューアイテムを3種類のモードで使い分けることが可能 です。各モードの説明を次に示します。</p> + <div style="margin-left:3em"> + <table> + <tr> + <th>モード</th> + <th>説明</th> + <th>難易度</th> + <th>柔軟性</th> + </tr> + <tr> + <td>固定</td> + <td>タイトル文字列を固定するモードです。<br />併せて「タイトル(固定 )」を入力します。</td> + <td>簡単</td> + <td>低</td> + </tr> + <tr> + <td>可変</td> + <td>Geeklogの多言語切り替え機能に応じてタイトルを可変にするモードで す。<br />併せて「タイトル(可変)」を入力します。<br /> +「タイトル(可変)」には言語ファイル内で定義されている配列変数を指定しま す。<br /> +例えば、$MY_WORD['label'] をタイトルにする場合は MY_WORD['label'] を記入し ます。</td> + <td>やや難しい</td> + <td>中</td> + </tr> + <tr> + <td>PHP</td> + <td>多言語切り替え機能に応じてタイトルを可変にするモードです。<br />併せて「PHP関数名」を入力します。<br /> +「PHP関数名」にはメニューアイテムの情報を返り値として返す関数の関数名を指定 します。<br /> +この関数は関数名に接頭辞「phpmenuitem_」を付けて定義して下さい。<br /> +関数の定義は system/lib-custom.php で行うのが適当でしょう。<br /> +サンプルとして、plugins/custommenu/functions.php に 次の関数を定義していま す。<br /> +<table> + <tr> + <th>サンプル関数名</th> + <th>メニュータイトル</th> + <th>説明</th> + </tr> + <tr> + <td>phpmenuitem_contribute</td> + <td>記事投稿</td> + <td>話題に応じてURLを変化させる例です。</td> + </tr> + <tr> + <td>phpmenuitem_login</td> + <td>ログイン(ログアウト)</td> + <td>ユーザがログインしているかどうかに応じて、タイトルとURLを変化させ る例です。</td> + </tr> +</table></td> + <td>難しい</td> + <td>高</td> + </tr> + </table> + </div> + + <p class="goto"><a href="#_top">Goto Top</a></p> + + + + + + + + <h3><a name="_multilanguage">4) 多言語切り替え機能について</a></h3> + <p>バージョン0.2.3より多言語切り替え機能への対応を強化しました。</p> + <p>バージョン0.2.2以前のバージョンでは、多言語切り替えのために「可変モー ド」を用意していましたが、メニューアイテムの表示を切り替えることはできるもの の、リンク先まで切り替えることはできませんでした。(そこまでやるにはPHPモー ドを活用する必要がありました。)</p> + <p>バージョン0.2.3からはGeeklog1.5.1から追加された「ブロックの多言語切り 替え機能」と同様の機能をサポートします。</p> + <p>「ブロックの多言語切り替え機能」の詳細については以下のWikiを参照してく ださい。</p> + <ul> + <li><a href="http://wiki.geeklog.jp/index.php/Multi-Language_Support#.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF">http://wiki.geeklog.jp/index.php/Multi-Language_Support#.E3.83.96.E3.83.AD.E3.83.83.E3.82.AF</a></li> + <li><a href="http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support#Blocks">http://wiki.geeklog.net/wiki/index.php/Multi-Language_Support#Blocks</a></li> + </ul> + <p>一例として、英語と日本語を切り替える場合の使用方法を示します。</p> + <ul> + <li>カスタムメニュー管理画面で言語数+1つ(つまり合計3つ)で1セットの メニューアイテムを作成します。</li> + <li>そして「メニューアイテムID」を、例えば次のように設定します。</li> + </ul> + <pre><code>about +about_en +about_ja</code></pre> + <ul> + <li>ここで添字"_en"を付加したものは英語モードで、添字"_ja"を付加したもの は日本語モードで用いるアイテムにします。</li> + <li>そして、それぞれの「有効」オプションを次のように設定します。</li> + </ul> + <pre><code>about 有効 +about_en 無効 +about_ja 無効</code></pre> + <ul> + <li>「タイトル(固定)」や「URL」はそれぞれの言語に応じて、表示させたいリ ンク先のURLを指定します。(「モード」が「固定」の場合)</li> + <li>これで完了です。言語モードを切り替えてみてください。</li> + <li>メニューアイテム"about"の情報が、システムの言語モードに応じて、メニ ューアイテム"about_en"やメニューアイテム"about_ja"の情報でオーバーライドされ る仕組みです。システムの多言語モードがオフの時には、メニューアイテ ム"about"の情報がそのまま使われます。</li> + </ul> + <p class="goto"><a href="#_top">Goto Top</a></p> + + <h3><a name="_urlmatching">5) URLの照合機能について</a></h3> + <p>バージョン0.3.0よりURLの照合機能を追加しました。</p> + <p>URLの照合機能とは、Geeklogサイトの表示中のページのURLをメニューアイテ ムごとに照合し、マッチしたメニューアイテムのスタイルを変化させるものです。 </p> + <p>例えば、リンクのページを開いているときに、リンクのメニューアイテムを反 転させて表示させることが可能となります。</p> + <p>ただし、別途、システムの一部(lib-common.php)とテーマの一部を変更する 必要があります。</p> + <p>一例として、リンクのメニューアイテムを反転させる方法を示します。ここで は、professionalテーマを用います。</p> + <ul> + <li>カスタムメニューの管理画面で「リンク」を編集します。</li> + <li>項目「URL照合文字列」へ"/links/"を入力し、更新ボタンをクリックしま す。カスタムメニューエディタでの作業はこれだけです。<br /> +これは、「表示ページのURLに"/links/"が含まれていたときに、メニューアイテム 「リンク」のスタイルを変化させる。」という意味の設定です。</li> + <li>なお、「正規表現」を有効にすると、PHPがサポートしている正規表現で照合 することができます。照合の条件が複雑な場合に使用することを想定した機能であ り、使用する場面は少ないでしょう。照合にはpreg_match関数を使用しています。 <br /> +正規表現の詳細については <a href="http://jp.php.net/manual/ja/regexp.reference.php">http://jp.php.net/manual/ja/regexp.reference.php</a> を参照してください。</li> + <li>lib-common.phpの変更は実質2行追加するだけの簡単なものであり、副作用も ありません。同梱の/bonus/lib-common.phpの623行目および681行目を参考にしてく ださい。Geeklog1.5.1用ですので該当バージョンをお使いの方はそのまま使用されて もよいでしょう。</li> + <li>テーマの変更は、menuitem.thtml、menuitem_last.thtml、style.css の3つ のファイルを対象とします。<br /> +/bonus/layout/professonal 内のファイルを参照してください。<br /> +<li>タグに class="{menuitem_selected}" が追加されていることに注目して ください。</li> + <li>style.cssは1031行目から1033行目の3行を加えるだけです。(サンプルなので 単純に背景色を変えただけ)</li> + <li>これで完了です。メニューアイテム「リンク」をクリックして効果を確認し てみてください。<br /> +テーマをさらに変更してハイセンスなメインメニューを構築してください。</li> + </ul> + <p class="goto"><a href="#_top">Goto Top</a></p> + + <h3><a name="_originalmenulender">6) 多階層メニューに対応した独自メニ ューレンダラについて</a></h3> + <p>バージョン0.4.0より多階層メニューや画像を使ったメニューに対応した独自 メニューレンダラを搭載しました。</p> + <p>比較的大規模なサイトに多くみられるプルダウンメニューなどを実装可能な HTMLを出力できるようになりました。</p> + <p>Geeklog標準のメニューレンダラが出力するヘッダーメニュー部のHTMLは次の ようなものです。</p> + <pre><code><div class="header-navigation-container"> + <ul> + <li class="menuitem"><a href="index1.php">text1</a></li> + <li class="menuitem"><a href="index2.php">text2</a></li> + <li class="menuitem"><a href="index3.php">text3</a></li> + : + : + : + <li class="menuitem last"><a href="indexx.php">textx</a></li> + </ul> +</div></code></pre> + <p>これに対して、今回搭載した独自メニューレンダラでは、次のような入れ子構 造のHTMLを出力することができます。</p> + <pre><code><div class="header-navigation-container"> + <ul> + <li id="menu_id1" class="menuitem"><a href="index1.php">text1</a></li> + <li id="menu_id2" class="menuitem"><a href="index2.php">text2</a> + <ul> + <li id="submenu_id1" class="menuitem"><a href="index_s1.php">text1</a></li> + <li id="submenu_id2" class="menuitem"><a href="index_s2.php">text2</a></li> + <li id="submenu_id3" class="menuitem"><a href="index_s3.php">text3</a></li> + : + : + : + <li id="submenu_idx" class="menuitem"><a href="index_sx.php">textx</a></li> + </ul> + </li> + <li id="menu_id3" class="menuitem"><a href="index3.php">text3</a></li> + : + : + : + <li id="menu_idx" class="menuitem last"><a href="indexx.php">textx</a></li> + </ul> +</div></code></pre> + <p>また、メニューアイテムごとに次のテンプレート変数をサポートします。</p> + <div style="margin-left:3em"> + <table> + <tr> + <th>テンプレート変数名</th> + <th>説明</th> + </tr> + <tr> + <td>menuitem_url</td> + <td>メニューアイテムのリンク先URL</td> + </tr> + <tr> + <td>menuitem_text</td> + <td>メニューアイテムのタイトル</td> + </tr> + <tr> + <td>menuitem_id</td> + <td>メニューアイテムのID</td> + </tr> + <tr> + <td>menuitem_class</td> + <td>メニューアイテムのクラス名 (例:'last')</td> + </tr> + <tr> + <td>class_property</td> + <td>メニューアイテムのクラスプロパティ (例:'class="last"')</td> + </tr> + <tr> + <td>menuitem_icon_url</td> + <td>メニューアイテムのアイコンとして用いる画像のURL</td> + </tr> + </table> + </div> + <p>多階層メニューを試すには、次の操作を行って下さい。</p> + <ul> + <li>/bonus/lib-common.phpの657行〜666行のように、lib-common.phpを修正す る必要があります。</li> + <li>コンフィギュレーション -> カスタムメニュー -> メニューレンダラ を「 階層メニュー対応」に設定します。</li> + <li>/bonus/layout/テーマ名 のファイル群を、テーマディレクトリにコピーし ます。(professional と ProfessionalCSS のみ対応)<br /> +この操作で、各テーマの menuitem.thtml, menuitem_last.thtml, style.css, custom.css を上書きしますので、事前のバックアップをお忘れなく。</li> + <li>「メニューアイテムの編集」で「親アイテムID」を使って階層を設定しま す。</li> + <li>階層メニューの起点になるメニューアイテムのクラス名に 'drop' や 'fly' を設定してみて下さい。(アローアイコンが出現します)</li> + <li>子階層メニューの最初のアイテム、孫階層メニューの最初のアイテム、親 階層メニューの最後のアイテムのクラス名に 'enclose' を設定して下さい。</li> + </ul> + <p>画像を使ったメニューを試すには、テンプレート変数 menuitem_icon_url を 使って、/layout/テーマ名/custommenu 内の menuitem.thtml, menuitem_drop.thtml を修正します。加えて、CSSを使ってレイアウトを調整してく ださい。</p> + <p class="goto"><a href="#_top">Goto Top</a></p> + + <h3><a name="_license">7) 著作権について</a></h3> <p>本作品で、削除および矢印アイコンとして使用している delete.png, arrow-dn.png, arrow-up.pngは Joseph North さんの著作物です。<br />ライセンス は次のリンクをご覧ください。</p> <p>Sweetie Icon Set<br />----------------<br />Author: Joseph North<br />Email: subli****@gmail*****<br />License: <a href="http://creativecommons.org/licenses/by-sa/2.0/jp/">Creative Commons Attribution-ShareAlike 2.0</a><br /> Year: 2005</p> <p class="goto"><a href="#_top">Goto Top</a></p> - <h3><a name="_history">4) 改訂履歴</a></h3> + + <h3><a name="_history">8) 改訂履歴</a></h3> <table> <tr> <th>バージョン</th> <th>公開日</th> <th>説明</th> + </tr> + <tr> + <td class="center">0.4.1</td> + <td class="center">2009.1.4</td> + <td><span class="new">追加</span> PHPモードで、ID、クラス名、子 メニューエントリの配列を設定できるようにしました。<br /> + <span class="fix">修正</span> メニューアイテムの編集における バリデーションを強化しました。<br /> + <span class="fix">修正</span> 0.4.0以降へのバージョンアップ が正常に行えない問題に対応しました。<br /> + <span class="fix">修正</span> メニューアイテムIDの変更に伴い 親アイテムIDが更新されない問題に対応しました。<br /> + <span class="fix">修正</span> テンプレートとCSSを一部修正し ました。<br /> + <span class="fix">修正</span> 説明書(readme_jp.thml, readme_jp_1.5.html)を充実させました。<br /> + </td> </tr> <tr> <td class="center">0.4.0</td> Modified: trunk/geeklog-1-jp-extended/public_html/admin/plugins/custommenu/index.php ============================================================================== --- trunk/geeklog-1-jp-extended/public_html/admin/plugins/custommenu/index.php (original) +++ trunk/geeklog-1-jp-extended/public_html/admin/plugins/custommenu/index.php Sun Jan 4 05:06:49 2009 @@ -57,6 +57,17 @@ exit; } +$pi_version = DB_getItem($_TABLES['plugins'], 'pi_version', "(pi_name = 'custommenu')"); +if (version_compare($pi_version, $_CMED_CONF['version']) < 0) { + $display = COM_siteHeader(); + $display .= COM_startBlock($LANG_CMED['warning_updated']); + $display .= $LANG_CMED['instructions_update']; + $display .= COM_endBlock(); + $display .= COM_siteFooter(true); + echo $display; + exit; +} + /** * Sanitize a URL * @@ -118,8 +129,9 @@ { global $_CONF, $MI; - $url = $_POST['url']; - $icon_url = $_POST['icon_url']; + $url = trim($_POST['url']); + $icon_url = trim($_POST['icon_url']); + $menuorder = trim($_POST['menuorder']); $MI = array( 'mid' => COM_applyFilter($_POST['mid']), 'pmid' => COM_applyFilter($_POST['pmid']), @@ -131,15 +143,13 @@ 'php_function' => $_POST['php_function'], // 'url' => isset ($url) ? CMED_sanitizeUrl($url, array('http', 'https')) : '', // 'icon_url' => isset ($icon_url) ? CMED_sanitizeUrl($icon_url, array('http', 'https')) : '', - 'url' => isset ($url) ? strip_tags($url) : '', - 'icon_url' => isset ($icon_url) ? strip_tags($icon_url) : '', + 'url' => empty($url) ? '' : strip_tags($url), + 'icon_url' => empty($icon_url) ? '' : strip_tags($icon_url), 'tid' => COM_applyFilter ($_POST['tid']), - 'menuorder' => $_POST['menuorder'], - + 'menuorder' => empty($menuorder) ? 0 : COM_applyFilter($menuorder, true), 'pattern' => $_POST['pattern'], 'is_preg' => ($_POST['is_preg'] == 'on') ? 1 : 0, 'class_name' => COM_applyFilter($_POST['class_name']), - 'owner_id' => COM_applyFilter($_POST['owner_id'], true), 'group_id' => COM_applyFilter($_POST['group_id'], true), 'perm_owner' => $_POST['perm_owner'], @@ -190,6 +200,10 @@ } } + if (empty($MI['url']) && ($MI['mode'] != 'php')) { + $retval .= $LANG_CMED_EDITOR['validate_message_7'] . '<br' . XHTML . '>'; + } + return $retval; } @@ -555,6 +569,12 @@ . $MI['is_preg'] . ",'" . $MI['pmid'] . "','" . $MI['class_name'] . "')"; DB_query($sql); + // With a change of mid, I change pmid. + $result = DB_query("SELECT mid FROM {$_TABLES['menuitems']} WHERE pmid ='{$MI['old_mid']}'"); + while ($B = DB_fetchArray($result)) { + DB_query("UPDATE {$_TABLES['menuitems']} SET pmid = '{$MI['mid']}' WHERE mid = '{$B['mid']}'"); + } + } else { DB_save($_TABLES['menuitems'], 'mid, is_enabled, type, mode, label, label_var, php_function, url, ' @@ -730,6 +750,11 @@ } DB_delete($_TABLES['menuitems'], 'mid', $mid); + + $result = DB_query("SELECT mid FROM {$_TABLES['menuitems']} WHERE pmid ='$mid'"); + while ($B = DB_fetchArray($result)) { + DB_query("UPDATE {$_TABLES['menuitems']} SET pmid = '' WHERE mid = '{$B['mid']}'"); + } return $retval; } Modified: trunk/geeklog-1-jp-extended/public_html/custommenu/templates/menueditor.thtml ============================================================================== --- trunk/geeklog-1-jp-extended/public_html/custommenu/templates/menueditor.thtml (original) +++ trunk/geeklog-1-jp-extended/public_html/custommenu/templates/menueditor.thtml Sun Jan 4 05:06:49 2009 @@ -2,7 +2,7 @@ <form action="{site_admin_url}/plugins/custommenu/index.php" method="post"> <table cellspacing="0" cellpadding="3" width="100%"> <tr> - <td width="180" class="alignright" style="vertical-align:top">{lang_mode}:</td> + <td class="alignright" style="width:180px; vertical-align:top">{lang_mode}:</td> <td> <select name="mmode"> <option value="fixation" {val_mode_fixation}>{lang_mode_fixation}</option>