LOGIN ID Password Auto Login Register Now! Lost Password?
Xoops Q&A

XoopsXでXwordsが正しく動かない

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています

投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2017/3/3 10:37
rodeo  2nd Class 居住地: ☆  投稿数: 14
お世話になります。

サーバ移管に伴い、現在稼動しているXOOPS 2.0.16a JP から XoopsX への更新を検討しており、現在ローカル環境で検証しています。

こちらのXwords 0.47.3 を入れたのですが、サブメニューが正しく表示されずに困っています。

原因を調査したところ、xoops_version.phpの中で$xoopsModuleConfigの値が取得できていない事が原因という所まではわかり、色々調べてみましたが解決できませんでした。

global $xoopsUser, $xoopsModuleConfig;

の後で、var_dump($xoopsModuleConfig); を入れるとNULLとなり値が取得できていません($xoopsUserは取得できてます)。
XOOPS 2.0.16aの環境では$xoopsModuleConfigの値が取得できてました。

■環境
OS:Win7
PHP:5.6.30
Distribution : XOOPS X(ten) 20170103

よろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/5 9:47
pcboy  2nd Class   投稿数: 9
rodeoさん、こん**は、pcboyです。

XWORDSが正常に動いているXOOPS X(ten)+XWORDS(改造版)環境と
XOOPS X(ten) 20170103+XWORDS(通常版)の新規インストール環境でテストして見ました。

どちらのテスト環境でも、var_dump($xoopsModuleConfig); するとNULLになっています。
サブメニューとはメインメニューに表示される
XWORDS
 管理メニュー
 データ追加
 データ検索
ならば、どちらのテスト環境でも表示されますので、表示の問題は別にある様に思います。

テスト環境
OS:Windows Server 2008 R2
IIS 7.5
PHP:5.6.30と7.0.16
MySQL 5.7.17
Distribution : XOOPS X(ten) 20170103

当方のテスト環境だとXWORDS(通常版)を新規インストール環境で以下の2点が問題となりました。
いずれも、UTF-8対応に関連した問題です。
1.xwords_entに頭文字(イニシャル)が登録されない問題で、
include/functions.phpの修正
L151
$init_t = substr($term, 0, 2);

$init_t = mb_substr($term, 0, 1);
に変更。
L161
$init_p = substr($proc, 0, 2);

$init_p = mb_substr($proc, 0, 1);
に変更。

2.頭文字(イニシャル)別のリンクが機能しない問題で、少し古い情報ですが、
language/ja_utf8/letter_format01.php
から
language/ja_utf8/letter_format11.php
のUTF-8データへの対応

letter_formatXX.phpを修正
XWORDSの一般設定で「23.頭文字別リンクのフォーマット」に対応する
ファイルを修正して保存する。デフォルトのままだったら
xwords\language\ja_utf8\letter_format01.phpになります。
このファイル中の"^([^\x21-\x7e]{2}|[\x21-\x7e]{1})(A|a)",
のように {2} となっている部分を全て {3}に変更して保存します。
参考サイト
http://www.xugj.org/modules/QandA/index.php?post_id=4828

XUGJの'XOOPS Dictionary'について
http://www.xugj.org/modules/QandA/index.php?topic_id=777

以上
#少しでも、お役に立てば幸いです。
#では、また。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/3/5 11:53
rodeo  2nd Class 居住地: ☆  投稿数: 14
pcboyさん、ご確認いただきましてありがとうございます。

引用:
サブメニューとはメインメニューに表示される
XWORDS
 管理メニュー
 データ追加
 データ検索

上記は管理者ユーザでアクセスした場合だと思います。説明が不十分でしたが、管理者ユーザの場合は$xoopsUser->isAdmin()で判定してますので、こちらでも正しく表示されます。
正しく表示されないのは登録ユーザおよびゲストの場合で、XoopsXの場合に$xoopsModuleConfigが取得できず$xoopsModuleConfig['allowsubmit']の判定が正しく行われない事が原因となってます。

「1.xwords_entに頭文字(イニシャル)が登録されない問題」「2.頭文字(イニシャル)別のリンクが機能しない問題」の対応については、当方もUTF-8対応として実装済みとなっております。

よろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/5 21:27
pcboy  2nd Class   投稿数: 9
rodeoさん、こん**は、pcboyです。

たしかに。
「データ検索」
のメニューは表示されるが、

登録ユーザにデータの追加を許可し、
ゲストにリクエストを許可しても、

「データ追加」※登録ユーザ
「リクエスト」※閲覧者

のメニューは当方のテスト環境でも表示されません。
今まで使っていなかったので気付きませんでした。..(^^;

# お役に立てず、すみません。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/7 10:51
rodeo  2nd Class 居住地: ☆  投稿数: 14
pcboyさん、ご確認ありがとうございます。

とりあえず当方の環境依存の問題ではないという事までは判明しましたので一歩前進です。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/10 21:05
pcboy  2nd Class   投稿数: 9
rodeoさん、こん**は、pcboyです。

$xoopsModuleConfigが取得できないので、以下の情報参考にして、

XOOPS Cubeで特定のモジュールの一般設定を取得する方法
http://qiita.com/RyujiAMANO/items/7bdbf6cffff5e974ac5b

xwordsのconfigを取得する様に改造して見ました。

html/modules/xwords/xoops_version.phpの
L55
global $xoopsUser, $xoopsModuleConfig;
$i = 1;

global $xoopsUser, $xoopsModuleConfig;

$moduleHandler = xoops_gethandler('module');
// モジュール指定 target_module_dirname を一般設定を取得したいモジュールのディレクトリ名に変更してください
$targetModule = $moduleHandler->getByDirname($mydirname);
// コンフィグ取得
$configHandler =& xoops_gethandler('config');
// targetModuleConfigに対象モジュールの一般設定が入る
$targetModuleConfig = $configHandler->getConfigsByCat(0, $targetModule->get('mid'));

$i = 1;
に変更

L68
elseif ( isset($xoopsModuleConfig['allowsubmit']) && $xoopsModuleConfig["allowsubmit"] )

elseif ( isset($targetModuleConfig['allowsubmit']) && $targetModuleConfig["allowsubmit"] )
に変更

L76
if ( isset($xoopsModuleConfig['allowreq']) && $xoopsModuleConfig["allowreq"])

if ( isset($targetModuleConfig['allowreq']) && $targetModuleConfig["allowreq"])
に変更
以上

#この改造で、期待する動作になると思います。
#では、また。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/13 12:18
rodeo  2nd Class 居住地: ☆  投稿数: 14
Pcboyさん、ご連絡ありがとうございます。

記載頂いた方法で試してみたところ、正しく動く事が確認できました!

ありがとうございました!!
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/15 22:53
pcboy  2nd Class   投稿数: 9
rodeoさん、こん**は、pcboyです。

なぜ、$xoopsModuleConfigが取得出来ないのか?
別のサイトのフォーラムで質問して、解決策の回答を頂きました。

$xoopsModuleConfigがNULLになる現象
https://xoops.hypweb.net/modules/forum/index.php?topic_id=3562

html/modules/xwords/xoops_version.phpを修正すること無く、
html/modules/xwords/index.phpを修正することで、$xoopsModuleConfigを正常に取得できること確認しました。

#高速化のためのモジュール情報をキャッシュが裏目に出ていた様ですね。
#では、また。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017/3/15 23:36
pcboy  2nd Class   投稿数: 9
rodeoさん、こん**は、pcboyです。

修正する箇所の変更です。
html/modules/xwords/index.phpから
html/modules/xwords/header.phpの方が良い様です。

#XoopsX の GitHub リポジトリの XWordsが修正されてからの方が良いと想います。
#投稿がちょっと速すぎました。..m(_ _)m
#では、また。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017/3/16 21:28
rodeo  2nd Class 居住地: ☆  投稿数: 14
pcboyさん、こんばんは。

XoopsX の GitHub リポジトリの方が修正されたらそちらを利用したいと思います。
色々調査いただきましてありがとうございました!!
投票数:0 平均点:0.00
  条件検索へ

Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities