トピック このトピックは解決済みです
TOPIC 登録画面の複数化をした後,編集ページに飛べない
Posted by タカ
at 2013/01/21(月) 15:56
分類: カスタマイズトラブル | AmigoDatabaseバージョン: ver9.85

お世話になります。
ユーザ登録とデータ登録の複数化に挑戦しております。
AユーザはA'データに、BユーザはB'データに登録するという形です。
おかげさまでいずれも正常に動いているのですが、ひとつだけ問題があります。
ユーザ管理室(user-room.html)からユーザ編集を選択すると画面が真っ白になってしまうのです。

user-room.htmlのソースをみてみたら、
<input type="hidden" name="UserGroups" value="">

と空白で、どうやらUserGroupsのデータの受け渡しがうまく行ってないのが原因というところまでは分かりましたが、これの解決方法がわかりません。

おそらくdatabase.cgiの _UserMenu を修正する必要があるかと思うのですが,残念ながら私にはそこまでの技術的知識はございません。

たいへん恐れ入りますが,ご教示いただけますとたいへん助かります。

ちなみに現在の_UserMenuは以下の通りで「情報編集」以外は問題なく動いております。

sub _UserMenu{ my$sel=shift;
$select{$sel}='selected';
print qq(<OPTION value="pc" $select{pc}>パスワード変更</OPTION>
<OPTION value="ue" $select{ue}>$CNF{Set}{UserName}情報編集</OPTION>\n);
if($TargetUser[$REC{User}{UserType}]=~/^v/ or $FORM{AdminPass} ne ''){
print qq(<OPTION value="dr" $select{dr}>$CNF{Set}{DataName}登録A</OPTION>
<OPTION value="dr2" $select{dr2}>$CNF{Set}{DataName}登録B</OPTION>
<OPTION value="dl" $select{dl}>登録$CNF{Set}{DataName}一覧</OPTION>);
}print qq(<OPTION value="uro" $select{uro}>メニュートップへ戻る</OPTION>
<OPTION value="lo" $select{lo}>ログアウト</OPTION>\n);}

ここの「情報編集」をユーザーの属性であるUserGroups(A)とUserGroups(B)にしたがって自動的に振り分けるようしたいと考えております。

なにとぞよろしくお願いします。


編集: 2013/02/02(土) 17:06
トピック このトピックは解決済みです
レス表示 古い順 新しい順 | 6件のレス 1-6 表示中
RES レスメッセージ
Posted by タカ
at 2013/01/22(火) 14:04
Re:登録画面の複数化をした後,編集ページに飛べない
失礼しました。過去ログを再度探してみたら、該当するものがみつかりました。
No3890です。

しかしながら、どうもうまくいきません。
試しに$FORM{UserGroups} = $TargetUser[$REC{User}{UserGroups}];
の$TargetUser[$REC{User}{UserGroups}]に登録時の「A」や「B」を直接入れてみたら大丈夫でした。
この場合、どのあたりに原因があるのでしょうか?
ヒントなりとも教えていただけると幸いです。
Posted by KUDO CGI WORKS
at 2013/01/27(日) 12:06
Re:登録画面の複数化をした後,編集ページに飛べない
たとえば
Aユーザーのユーザー編集画面のテンプレートを
./lib/template/user-edit_a.html、
Bユーザーのユーザー編集画面のテンプレートを
./lib/template/user-edit_b.htmlとしたとしますと、
./lib/template/user-edit.htmlを下記内容で記述しますと
それぞれのユーザーグループのユーザー編集画面へ
切り替えることができるかと思います。

-----./lib/template/user-edit.html-----
if ($DATA{UserGroups} eq "A") {
require "./lib/template/user-edit_a.html";
} elsif ($DATA{UserGroups} eq "B") {
require "./lib/template/user-edit_b.html";
}

1;

----------------------------------------

プレビュー画面も同様となります。
参考になれば幸いです。

┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏

┏━━━┓各種CGIスクリプト設置代行・カスタマイズ
┃\_/┃KUDO CGI WORKS
┗━━━┛
┏┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌┌
┏┌
┏┌ URL http://www.kudocgiworks.net
┏┌ E-mail info@kudocgiworks.net
┏┌
┏┌ 最新情報・お得情報・便利情報を発信中!!
┏┌ Facebook http://www.facebook.com/kudocgiworks
┏┌ ★★★facebookのアカウントをお持ちの方は
┏┌ ★★★是非『いいね』のクリックをお願いします!
Posted by タカ
at 2013/01/28(月) 22:14
Re:登録画面の複数化をした後,編集ページに飛べない
> No4631への引用返信
> たとえば
> Aユーザーのユーザー編集画面のテンプレートを
> ./lib/template/user-edit_a.html、
> Bユーザーのユーザー編集画面のテンプレートを
> ./lib/template/user-edit_b.htmlとしたとしますと、

はい、テンプレートをそのようにAユーザーとBユーザーに分けました。

> ./lib/template/user-edit.htmlを下記内容で記述しますと
> それぞれのユーザーグループのユーザー編集画面へ
> 切り替えることができるかと思います。
>
> -----./lib/template/user-edit.html-----
> if ($DATA{UserGroups} eq "A") {
> require "./lib/template/user-edit_a.html";
> } elsif ($DATA{UserGroups} eq "B") {
> require "./lib/template/user-edit_b.html";
> }
>
> 1;
これはどこに記述すればよいのでしょうか?
db-ue.cgiでしょうか?
理解力が足りず申し訳ありません。できればもう少し具体的に教えていただけませんでしょうか?
ちなみにdb-ue.cgiのUserEditサブルーチンの部分は以下のように記述しております。
sub UserEdit{
&Secure(scalar@MyUrl,$MethodChkMode,$FORM{AdminPass});
&UserCheck;
&ViewConvert(\%{$CNF{UserItem}},'User',\@TargetUser);
$FORM{UserGroups} = $TargetUser[$REC{User}{UserGroups}];
my$html;
if($FORM{UserGroups} eq 'M'){
$html = ($FORM{AdminPass} ne '')?'user-edit-admin-M.html':'user-edit-M.html';
}elsif($FORM{UserGroups} eq 'F'){
$html = ($FORM{AdminPass} ne '')?'user-edit-admin-F.html':'user-edit-F.html';
}
&Html($html);}

基本的にこれでAとBの振り分けはできております。ただ問題は,
user-room.htmlから「ユーザー編集」のセレクトボタンを選択すると、画面が真っ白になってしまうという部分です。

なお、$FORM{UserGroups} = $TargetUser[$REC{User}{UserGroups}];

$FORM{UserGroups} = A;

と記述すると、Aの編集画面が表示されますので、たんに@TargetUserにUserGroupsのデータ(AまたはB)がうまく格納されていないのが原因なのではないかとにらんでおります。しかしながら、どこをどういじればきちんと格納できるのかわからず途方に暮れているところです。
勉強不足を棚にあげてたいへん恐縮ですが、なにとぞご教示のほど、よろしくお願いいたします。
Posted by タカ
at 2013/01/28(月) 22:17
Re:登録画面の複数化をした後,編集ページに飛べない
追伸です。上記コードでMをA、FをBと読み替えてください。
Posted by KUDO CGI WORKS
at 2013/02/01(金) 05:56
Re:登録画面の複数化をした後,編集ページに飛べない

> -----./lib/template/user-edit.html-----
> if ($DATA{UserGroups} eq "A") {
> require "./lib/template/user-edit_a.html";
> } elsif ($DATA{UserGroups} eq "B") {
> require "./lib/template/user-edit_b.html";
> }
>
> 1;

上記はuser-edit.htmlへ記述します。
なお、画面が真っ白になってしまうということですと
Perlの記述に間違いがあるということになりますので
誤った記述がないかご確認ください。
Posted by タカ
at 2013/02/02(土) 17:06
Re:登録画面の複数化をした後,編集ページに飛べない
試しにデータベースを調べてみたら、ユーザーグループの振り分けがファイルに記録されていませんでした。おそらく作業途中における記述の不備による不具合だったようです。現在は正常に動作しております。お騒がせして申し訳ありませんでした。

> No4637への引用返信
>
>> -----./lib/template/user-edit.html-----
>> if ($DATA{UserGroups} eq "A") {
>> require "./lib/template/user-edit_a.html";
>> } elsif ($DATA{UserGroups} eq "B") {
>> require "./lib/template/user-edit_b.html";
>> }
>>
>> 1;
>
> 上記はuser-edit.htmlへ記述します。
> なお、画面が真っ白になってしまうということですと
> Perlの記述に間違いがあるということになりますので
> 誤った記述がないかご確認ください。
Access: 1,220,089
 
ソーシャルブックマーク: Yahoo!ブックマーク Google Bookmarks はてなブックマーク Livedoorクリップ @niftyクリップ FC2ブックマーク Buzzurl Delicious トピックイット newsing it!