summaryrefslogtreecommitdiffstats
path: root/app/views/my/page_layout.rhtml
blob: 59a38567db7172534a1c24d0c84d1273fcd45c2e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<script language="JavaScript">

function recreateSortables() {
    Sortable.destroy('list-top');
    Sortable.destroy('list-left');
    Sortable.destroy('list-right');
    
	Sortable.create("list-top", {constraint:false, containment:['list-top','list-left','list-right'], dropOnEmpty:true, handle:'handle', onUpdate:function(){new Ajax.Request('/my/order_blocks?group=top', {asynchronous:true, evalScripts:true, onComplete:function(request){new Effect.Highlight("list-top",{});}, onLoaded:function(request){Element.hide('indicator')}, onLoading:function(request){Element.show('indicator')}, parameters:Sortable.serialize("list-top")})}, only:'mypage-box', tag:'div'})
	Sortable.create("list-left", {constraint:false, containment:['list-top','list-left','list-right'], dropOnEmpty:true, handle:'handle', onUpdate:function(){new Ajax.Request('/my/order_blocks?group=left', {asynchronous:true, evalScripts:true, onComplete:function(request){new Effect.Highlight("list-left",{});}, onLoaded:function(request){Element.hide('indicator')}, onLoading:function(request){Element.show('indicator')}, parameters:Sortable.serialize("list-left")})}, only:'mypage-box', tag:'div'})
	Sortable.create("list-right", {constraint:false, containment:['list-top','list-left','list-right'], dropOnEmpty:true, handle:'handle', onUpdate:function(){new Ajax.Request('/my/order_blocks?group=right', {asynchronous:true, evalScripts:true, onComplete:function(request){new Effect.Highlight("list-right",{});}, onLoaded:function(request){Element.hide('indicator')}, onLoading:function(request){Element.show('indicator')}, parameters:Sortable.serialize("list-right")})}, only:'mypage-box', tag:'div'})
}

function updateSelect() {
    s = $('block-select')
    for (var i = 0; i < s.options.length; i++) {
        if ($('block_' + s.options[i].value)) {
            s.options[i].disabled = true;
        } else {
            s.options[i].disabled = false;
        }
    }
    s.options[0].selected = true;
}

function afterAddBlock() {
    recreateSortables();
    updateSelect();
}

function removeBlock(block) {
    $(block).parentNode.removeChild($(block));
    updateSelect();
}

</script>

<div style="float:right;">
<%= start_form_tag({:action => "add_block"}, :id => "block-form") %>

<%= select_tag 'block', "<option></option>" + options_for_select(@block_options), :id => "block-select", :class => "select-small" %>
<small>
<%= link_to_remote l(:button_add),
            :url => { :action => "add_block" },
            :with => "Form.serialize('block-form')",
            :update => "list-top",
            :position => :top,
            :complete => "afterAddBlock();",
            :loading => "Element.show('indicator')",
            :loaded => "Element.hide('indicator')"
             %>
</small>
<%= end_form_tag %> 
<small>|
<%= link_to l(:button_save), :action => 'page_layout_save' %> |
<%= link_to l(:button_cancel), :action => 'page' %>
</small>
</div>

<div style="float:right;margin-right:20px;">
<span id="indicator" style="display:none"><%= image_tag "loading.gif" %></span>
</div>

<h2><%=l(:label_my_page)%></h2>

<div id="list-top" class="block-receiver">
	<% @blocks['top'].each do |b| %>
	<%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %>
	<% end if @blocks['top'] %>
</div>

<div id="list-left" class="splitcontentleft block-receiver">
	<% @blocks['left'].each do |b| %>
	<%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %>
	<% end if @blocks['left'] %>
</div>

<div id="list-right" class="splitcontentright block-receiver">
	<% @blocks['right'].each do |b| %>
	<%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %>
	<% end if @blocks['right'] %>
</div>

<%= sortable_element 'list-top',
      :tag => 'div',
      :only => 'mypage-box',
      :handle => "handle",
      :dropOnEmpty => true,
      :containment => ['list-top', 'list-left', 'list-right'],
      :constraint => false,
      :complete => visual_effect(:highlight, 'list-top'), 
      :url => { :action => "order_blocks", :group => "top" },
      :loading => "Element.show('indicator')",
      :loaded => "Element.hide('indicator')"
       %>
      
      
<%= sortable_element 'list-left', 
      :tag => 'div',
      :only => 'mypage-box',
      :handle => "handle",
      :dropOnEmpty => true,
      :containment => ['list-top', 'list-left', 'list-right'],
      :constraint => false,
      :complete => visual_effect(:highlight, 'list-left'), 
      :url => { :action => "order_blocks", :group => "left" },
      :loading => "Element.show('indicator')",
      :loaded => "Element.hide('indicator')" %>
      
<%= sortable_element 'list-right', 
      :tag => 'div',
      :only => 'mypage-box',
      :handle => "handle",
      :dropOnEmpty => true,
      :containment => ['list-top', 'list-left', 'list-right'],
      :constraint => false,
      :complete => visual_effect(:highlight, 'list-right'), 
      :url => { :action => "order_blocks", :group => "right" },
      :loading => "Element.show('indicator')",
      :loaded => "Element.hide('indicator')" %>
      
<%= javascript_tag "updateSelect()" %>