SpinelzのWindowのオプション

JavaScriptライブラリのSpinelzのWindowを使うときに、
利用できるオプション一覧のメモ。

Windowのオプション一覧

左がオプション名、右がデフォルト値です。

className:         Window.className.window,
width:             300,
height:            300,
minWidth:          200,
minHeight:         40,
drag:              true,
resize:            true,
resizeX:           true,
resizeY:           true,
modal:             false,
closeButton:       true,
maxButton:         true,
minButton:         true,
cssPrefix:         'custom_',
restriction:       false,
endDrag:           Prototype.emptyFunction,
endResize:         Prototype.emptyFunction,
addButton:         Prototype.emptyFunction,
preMaximize:       function() {return true},
preMinimize:       function() {return true},
preRevertMaximize: function() {return true},
preRevertMinimize: function() {return true},
preClose:          function() {return true},
endMaximize:       Prototype.emptyFunction,
endMinimize:       Prototype.emptyFunction,
endRevertMaximize: Prototype.emptyFunction,
endRevertMinimize: Prototype.emptyFunction,
endClose:          Prototype.emptyFunction,
dragOptions:       {},
appendToBody:      false

Rails用Helper

Railsで利用するときのHelperのサンプルです。

def window(name, options = {})
  options.stringify_keys!
  options["cssPrefix"]   = %Q!'#{options["cssPrefix"]}'! if options["cssPrefix"]
  win = %Q!var win = new Window('#{name}', {#{hash_to_javascript_options(options)}});!
  javascript_tag(win)
end

private

def hash_to_javascript_options(hash_options)
  ary = Array.new
  hash_options.each do |key, value|
    ary << %Q!#{key}:#{value}!
  end
  ary.join(',')
end

Helper利用法

こんな感じに使います。

<div id=window1>
  <div>
    Title
  </div>
  <div>
    Body
  </div>
</div>

<%= submit_tag("実行", :onclick => "win.open();") %>

<%= window("window1", {:width => 500, :height => 450} %>

ただ、このHelperだとWindowが一つしか作れないんで、

def window(name, options = {}, id = nil)
  options.stringify_keys!
  options["cssPrefix"]   = %Q!'#{options["cssPrefix"]}'! if options["cssPrefix"]
  win = %Q!var win#{id} = new Window('#{name}', {#{hash_to_javascript_options(options)}});!
  javascript_tag(win)
end

とか、

def win(name, options = {})
  options.stringify_keys!
  options["cssPrefix"]   = %Q!'#{options["cssPrefix"]}'! if options["cssPrefix"]
  win = %Q!var #{name} = new Window('#{name}', {#{hash_to_javascript_options(options)}});!
  javascript_tag(win)
end

とかにしたほうがいいかも。
それと、hash_to_javascript_optionsメソッドを書くのを忘れずに。

ただし、下のほうを使うときは、nameに"window"を指定すると、エラーになるのでご注意ください。
ライブラリ内でこの名前を使用しているためです。

こんなとこです

オプションの内容は、オプション名からわかると思います。


はい、すいません。めんどいだけですw


というか、まだちゃんと調べてないんで、書けないってのが本音ですけど><