- PR -

ユーザーが画面背景色を変更できるようにしたい。

投稿者投稿内容
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2008-12-11 16:04
いつも、お世話になっております。

ASP.NET1.1で開発中のシステムが有るのですが、ユーザーが自由に画面(body)やラベルの色を変更できるようにしたいです。

現在はスタイルシートを使用してるので、そのスタイルシートを変更すれば全ての画面に適用されるのですが、そのスタイルシート自体をユーザーの何らかのアクション(色選択画面で選択するなど)により変更させたいのです。

どういった方法が望ましいのか知恵をお貸しください。

よろしくお願いいたします。


ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-12-11 16:20
設定変更できる画面を用意すればいいのでは?
各画面に共通で読み込ますCSSファイルを用意
して、設定画面で更新された情報を元にその
CSSファイルを再構築すればよいと思います。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-12-11 16:47
似たようなことをやったことあります。

某役所内のCMS(コンテンツ・マネジメント・システム)で、ゲストユーザーはクッキー+Javascriptで切り替え、登録ユーザーはサーバーサイドでCSS書き出してました。

参考になれば・・・。
なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-12-11 16:54
ユーザー編集用のスタイルシートと
アプリ既定のスタイルシート(編集不可)の2種類用意し、
この2つを読み込む方法はどうでしょうか?

確か、.Text のカスタム CSS がこの仕組みでした。

_________________
Nakamura Blog
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2008-12-11 19:44
皆様、ご回答ありがとうございます。

CSSを再構築(CSSの書き出し)を行う方向で考えていますが
どのような方法でCSSを再構築するのがベターなのでしょうか?

ご伝授、よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-12-11 19:56
cssを、HTMLと同様にテンプレートから動的に生成すれば良いのでは。

カスタマイズがほんの数箇所なら、単にHTMLにstyle=""等を埋め込むだけでも良いですが。
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2008-12-11 20:44
動的に作成するのが分からないので
1行ずつ出力する形にしてみました。
考え方間違ってますか?


----------------------------------------------------------------------------
FileOpen(1, FilePath & "test.css", OpenMode.Output)

PrintLine(1, "body()")
PrintLine(1, "{")
PrintLine(1, SPC(8), "font-size: 11pt;")
PrintLine(1, SPC(8), "color: black;")
PrintLine(1, SPC(8), "Font-family 'MS 明朝';")
PrintLine(1, SPC(8), "background-color: #e5d2ce;")
PrintLine(1, "}")
FileClose(1)


[ メッセージ編集済み 編集者: お獅子 編集日時 2008-12-12 09:06 ]
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-12-12 00:45
>考え方間違ってますか?
間違ってはいませんが普通やらないかな。

ユーザーが変更可能な HTML 要素に対して
<input type=text class="DefaultTextCss UserExtendTextCss">
と2つのCSSを定義しておきます。ユーザー拡張のCSSは必ず後ろに記述します。

コード:
//  Default.css の中身
.DefaultTextCss {
   text-align:center;
   border:solid 1px #DDFFEE;
   color:black;
}



とかしておいて、
コード:
//  ユーザー拡張用 文字の色と太さ背景色が変更可能
.UserExtendTextCss {}



CSS変更画面で
コード:
■テキストBOX
 ■背景色  ○赤 ○緑 ○黄色
 ■文字色  ○赤 ○緑 ○黄色
 ■文字太さ ○細 ○太 ○極太



こんな形式でやっといて、

コード:
public class TextboxCss {
   Map map = new HashMap();

   public TextboxCss(HttpRequest r) {
      map.put("color" , r.getParameter("TextColor"));
      map.put("background-color", r.getParameter("TextBackColor"));
      map.put("font-weight", r.getParameter("TextFontWeight"));
   }
   public String toString() {
      String s = ".UserExtendTextCss {\n";
      Iterator it = map.keySet().iterator();
      while (it.hasNext()) {
          String key = (String)it.next();
          s += "  " + key + ":'" + map.get(key) + "';\n";
      }
      s += "}\n";
      return s;
   }
}



なんてなクラスこさえて、こいつを画面の項目分用意して、リストに格納して
ファイルに纏めて書き出せばいいんじゃないかな。
なんかJavaチックでごめんなさいね。

リストに格納したクラスは、

PrintLine(item);
ってやれば、自動的に toString() が呼ばれるのでそこで
コード:
.UserExtendTextCss {
  font-weight:'bolder';
  color:'red';
  background-color:'orange';
}


なんて形に展開されるでしょう。

健闘を祈ります。

スキルアップ/キャリアアップ(JOB@IT)