puffer_pages 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -1
- data/Gemfile.lock +11 -11
- data/README.md +63 -0
- data/VERSION +1 -1
- data/app/controllers/pages_controller.rb +2 -2
- data/app/controllers/puffer_pages/layouts_controller.rb +5 -1
- data/app/controllers/puffer_pages/pages_controller.rb +15 -13
- data/app/controllers/puffer_pages/snippets_controller.rb +5 -1
- data/app/helpers/puffer_pages_helper.rb +8 -0
- data/app/helpers/puffer_tree_helper.rb +11 -0
- data/app/models/page.rb +8 -9
- data/app/models/page_part.rb +1 -1
- data/app/views/puffer_pages/_page_part_builder.html.erb +3 -0
- data/app/views/puffer_pages/_page_parts.html.erb +26 -0
- data/app/views/puffer_pages/_tree_page.html.erb +2 -0
- data/app/views/puffer_tree/tree.html.erb +55 -0
- data/lib/generators/puffer_pages/install/install_generator.rb +8 -0
- data/lib/generators/puffer_pages/install/templates/puffer/javascripts/puffer_pages.js +35 -0
- data/lib/generators/puffer_pages/install/templates/puffer/javascripts/right-dialog.js +764 -0
- data/{spec/dummy/public/puffer/javascripts/right-tabs-src.js → lib/generators/puffer_pages/install/templates/puffer/javascripts/right-tabs.js} +1 -2
- data/lib/generators/puffer_pages/install/templates/puffer/stylesheets/puffer_pages.css +4 -0
- data/lib/generators/puffer_pages/install/templates/puffer/stylesheets/puffer_tree.css +51 -0
- data/lib/generators/puffer_pages/install/templates/puffer_pages.rb +16 -0
- data/lib/puffer/inputs/page_parts.rb +12 -0
- data/lib/puffer/inputs/page_parts_body.rb +13 -0
- data/lib/puffer/tree_base.rb +31 -0
- data/lib/puffer_pages/extensions/mapper.rb +2 -2
- data/lib/puffer_pages/liquid/tags/yield.rb +1 -1
- data/lib/puffer_pages.rb +15 -1
- data/puffer_pages.gemspec +31 -29
- data/spec/dummy/config/initializers/puffer.rb +12 -0
- data/spec/dummy/config/initializers/puffer_pages.rb +16 -0
- data/spec/dummy/db/migrate/20090422092419_create_pages.rb +0 -1
- data/spec/dummy/db/schema.rb +0 -1
- data/spec/dummy/public/puffer/javascripts/{application.js → puffer.js} +0 -0
- data/spec/dummy/public/puffer/javascripts/puffer_pages.js +35 -0
- data/spec/dummy/public/puffer/javascripts/{rails-src.js → rails.js} +0 -0
- data/spec/dummy/public/puffer/javascripts/right-autocompleter.js +615 -12
- data/spec/dummy/public/puffer/javascripts/right-calendar.js +1454 -29
- data/spec/dummy/public/puffer/javascripts/right-dialog.js +764 -0
- data/spec/dummy/public/puffer/javascripts/right-tabs.js +1139 -24
- data/spec/dummy/public/puffer/javascripts/right.js +5886 -89
- data/spec/dummy/public/puffer/stylesheets/puffer.css +1 -12
- data/spec/dummy/public/puffer/stylesheets/puffer_pages.css +4 -0
- data/spec/dummy/public/puffer/stylesheets/puffer_tree.css +51 -0
- data/spec/fabricators/pages_fabricator.rb +1 -1
- data/spec/models/page_spec.rb +15 -15
- metadata +33 -31
- data/README.rdoc +0 -3
- data/lib/puffer_pages/base.rb +0 -10
- data/spec/dummy/config/puffer.rb +0 -0
- data/spec/dummy/public/puffer/javascripts/right-autocompleter-src.js +0 -621
- data/spec/dummy/public/puffer/javascripts/right-autocompleter.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-calendar-src.js +0 -1461
- data/spec/dummy/public/puffer/javascripts/right-calendar.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-in-edit-src.js +0 -369
- data/spec/dummy/public/puffer/javascripts/right-in-edit.js +0 -13
- data/spec/dummy/public/puffer/javascripts/right-in-edit.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-lightbox-src.js +0 -905
- data/spec/dummy/public/puffer/javascripts/right-lightbox.js +0 -24
- data/spec/dummy/public/puffer/javascripts/right-lightbox.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-sortable-src.js +0 -428
- data/spec/dummy/public/puffer/javascripts/right-sortable.js +0 -17
- data/spec/dummy/public/puffer/javascripts/right-sortable.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right-src.js +0 -5892
- data/spec/dummy/public/puffer/javascripts/right-tabs.js.gz +0 -0
- data/spec/dummy/public/puffer/javascripts/right.js.gz +0 -0
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -82,7 +82,7 @@ GEM
|
|
|
82
82
|
railties (>= 3.0.0)
|
|
83
83
|
nokogiri (1.4.4)
|
|
84
84
|
polyglot (0.3.1)
|
|
85
|
-
puffer (0.0.
|
|
85
|
+
puffer (0.0.13)
|
|
86
86
|
cells (~> 3.4.4)
|
|
87
87
|
rails (~> 3.0.3)
|
|
88
88
|
will_paginate (~> 3.0.pre2)
|
|
@@ -105,19 +105,19 @@ GEM
|
|
|
105
105
|
rake (>= 0.8.7)
|
|
106
106
|
thor (~> 0.14.4)
|
|
107
107
|
rake (0.8.7)
|
|
108
|
-
rspec (2.
|
|
109
|
-
rspec-core (~> 2.
|
|
110
|
-
rspec-expectations (~> 2.
|
|
111
|
-
rspec-mocks (~> 2.
|
|
112
|
-
rspec-core (2.
|
|
113
|
-
rspec-expectations (2.
|
|
108
|
+
rspec (2.5.0)
|
|
109
|
+
rspec-core (~> 2.5.0)
|
|
110
|
+
rspec-expectations (~> 2.5.0)
|
|
111
|
+
rspec-mocks (~> 2.5.0)
|
|
112
|
+
rspec-core (2.5.1)
|
|
113
|
+
rspec-expectations (2.5.0)
|
|
114
114
|
diff-lcs (~> 1.1.2)
|
|
115
|
-
rspec-mocks (2.
|
|
116
|
-
rspec-rails (2.
|
|
115
|
+
rspec-mocks (2.5.0)
|
|
116
|
+
rspec-rails (2.5.0)
|
|
117
117
|
actionpack (~> 3.0)
|
|
118
118
|
activesupport (~> 3.0)
|
|
119
119
|
railties (~> 3.0)
|
|
120
|
-
rspec (~> 2.
|
|
120
|
+
rspec (~> 2.5.0)
|
|
121
121
|
rubyzip (0.9.4)
|
|
122
122
|
selenium-webdriver (0.1.2)
|
|
123
123
|
childprocess (~> 0.1.5)
|
|
@@ -148,7 +148,7 @@ DEPENDENCIES
|
|
|
148
148
|
liquid
|
|
149
149
|
mongrel
|
|
150
150
|
nested_set
|
|
151
|
-
puffer (>= 0.0.
|
|
151
|
+
puffer (>= 0.0.13)
|
|
152
152
|
rails (~> 3.0.3)
|
|
153
153
|
rspec-rails
|
|
154
154
|
sqlite3-ruby
|
data/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Puffer pages is lightweight rails 3 CMS
|
|
2
|
+
|
|
3
|
+
Interface of pages based on [puffer](https://github.com/puffer/puffer)
|
|
4
|
+
|
|
5
|
+
## Keyfeatures
|
|
6
|
+
|
|
7
|
+
* Full rails integration. Puffer pages is part of rails and you can different features related to pages in rails application directly
|
|
8
|
+
* Flexibility. Puffer designed to be as flexible as possible, so you can create your own functionality easily.
|
|
9
|
+
* Layouts. You can use rails layouts for pages and you can use pages as action layouts!
|
|
10
|
+
|
|
11
|
+
## Installation.
|
|
12
|
+
|
|
13
|
+
You can instal puffer as a gem:
|
|
14
|
+
<pre>gem install puffer_pages</pre>
|
|
15
|
+
Or in Gemfile:
|
|
16
|
+
<pre>gem "puffer_pages"</pre>
|
|
17
|
+
Next step is:
|
|
18
|
+
<pre>rails g puffer_pages:install</pre>
|
|
19
|
+
This will install puffer pages config file in your initializers, some css/js, controllers and migrations
|
|
20
|
+
<pre>rake db:migrate</pre>
|
|
21
|
+
|
|
22
|
+
## Introduction.
|
|
23
|
+
|
|
24
|
+
The first thing, you should do - setup routes if you want pages path different from /(*path).
|
|
25
|
+
Just put in your routes.rb:
|
|
26
|
+
<pre>puffer_page "pages/(*path)" => 'whatever#show'</pre>
|
|
27
|
+
Default pages route you can see with rake routes.
|
|
28
|
+
|
|
29
|
+
Puffer pages is radiant-like cms, so it has layouts, snippets and pages.
|
|
30
|
+
Puffer pages use liquid as template language.
|
|
31
|
+
|
|
32
|
+
## Pages.
|
|
33
|
+
Pages - tree-based structure of site.
|
|
34
|
+
Every page has one or more page parts.
|
|
35
|
+
|
|
36
|
+
## Layouts.
|
|
37
|
+
Layout is page canvas, so you can draw page parts on it.
|
|
38
|
+
In puffer pages you can use puffer pages layouts or applcation layouts.
|
|
39
|
+
|
|
40
|
+
### Puffer pages layouts
|
|
41
|
+
For puffer pages layouts page parts placeholder is liquid tag yield.
|
|
42
|
+
<pre>{% yield [page_part_name] %}</pre>
|
|
43
|
+
|
|
44
|
+
If no page_part_name specified, puffer layout will use page part with default name (`body`). You can change defaul page part name in puffer pages setup initializer.
|
|
45
|
+
|
|
46
|
+
### Application layouts.
|
|
47
|
+
For application layout page part body will be inserted instead of SUDDENLY! <%= yield %>
|
|
48
|
+
Rules are the same. If no page part name specified puffer will use page part with default name.
|
|
49
|
+
|
|
50
|
+
So, main page part is action view and other are partials. So easy.
|
|
51
|
+
|
|
52
|
+
## Liquid.
|
|
53
|
+
|
|
54
|
+
The first tag was {% yield %}
|
|
55
|
+
Also, you can acces current page and root page from puffer pages templates.
|
|
56
|
+
Page named `self` in templates:
|
|
57
|
+
<pre>{{ self.name }}</pre>
|
|
58
|
+
And root page:
|
|
59
|
+
<pre>{{ root.name }}</pre>
|
|
60
|
+
|
|
61
|
+
Also you can do anything you can do with [liquid](http://github.com/tobi/liquid/)
|
|
62
|
+
|
|
63
|
+
`self` and `root` are both instances of page drop. View [this](https://github.com/puffer/puffer_pages/blob/master/lib/puffer_pages/liquid/page_drop.rb) to find list of possible page drop methods
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0.
|
|
1
|
+
0.0.3
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
class PagesController < ApplicationController
|
|
2
2
|
|
|
3
3
|
def index
|
|
4
|
-
@page = Page.find_page
|
|
5
|
-
render :inline => @page.render(drops), :layout => @page.render_layout, :content_type => page.content_type
|
|
4
|
+
@page = Page.find_page params[:path]
|
|
5
|
+
render :inline => @page.render(drops), :layout => @page.render_layout, :content_type => @page.content_type
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
private
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
class PufferPages::PagesController <
|
|
1
|
+
class PufferPages::PagesController < Puffer::TreeBase
|
|
2
2
|
unloadable
|
|
3
3
|
|
|
4
|
+
view_paths_fallbacks_prepend :puffer_pages
|
|
5
|
+
helper :puffer_pages
|
|
6
|
+
|
|
7
|
+
configure do
|
|
8
|
+
group :cms
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
tree do
|
|
12
|
+
field :name, :render => :tree_page
|
|
13
|
+
end
|
|
14
|
+
|
|
4
15
|
index do
|
|
5
16
|
field :name
|
|
6
17
|
field :slug
|
|
@@ -9,24 +20,15 @@ class PufferPages::PagesController < PufferPages::Base
|
|
|
9
20
|
end
|
|
10
21
|
|
|
11
22
|
form do
|
|
12
|
-
field :parent_id, :type => :hidden
|
|
13
23
|
field :name
|
|
14
24
|
field :slug
|
|
25
|
+
field :page_parts, :type => :page_parts
|
|
15
26
|
field :layout_name, :select => :possible_layouts
|
|
16
|
-
field :status, :select =>
|
|
27
|
+
field :status, :select => :possible_statuses
|
|
17
28
|
field :title
|
|
18
29
|
field :description
|
|
19
30
|
field :keywords
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
member do
|
|
23
|
-
get :inherit
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def inherit
|
|
27
|
-
@parent = resource.member
|
|
28
|
-
@page = @parent.children.new
|
|
29
|
-
render 'new'
|
|
31
|
+
field :parent_id, :type => :hidden
|
|
30
32
|
end
|
|
31
33
|
|
|
32
34
|
end
|
|
@@ -16,4 +16,12 @@ module PufferPagesHelper
|
|
|
16
16
|
record.inherited_layout_name ? [[t('puffer.inherited_layout', :name => record.inherited_layout_name), '']] : []
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
+
def possible_statuses
|
|
20
|
+
Page.statuses
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def tree_page record
|
|
24
|
+
render :partial => 'tree_page', :object => record
|
|
25
|
+
end
|
|
26
|
+
|
|
19
27
|
end
|
data/app/models/page.rb
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
class LayoutError < StandardError
|
|
2
|
-
end
|
|
3
|
-
|
|
4
1
|
class Page < ActiveRecord::Base
|
|
5
2
|
|
|
6
3
|
acts_as_nested_set
|
|
@@ -20,9 +17,11 @@ class Page < ActiveRecord::Base
|
|
|
20
17
|
def self.find_page location
|
|
21
18
|
page = Page.find_by_location location
|
|
22
19
|
raise ActiveRecord::RecordNotFound if page.nil? || page.draft?
|
|
20
|
+
page
|
|
23
21
|
end
|
|
24
22
|
|
|
25
|
-
has_many :page_parts, :order => "name = '#{PufferPages
|
|
23
|
+
has_many :page_parts, :order => "name = '#{PufferPages.primary_page_part_name}' desc, name", :dependent => :destroy
|
|
24
|
+
accepts_nested_attributes_for :page_parts, :allow_destroy => true
|
|
26
25
|
belongs_to :layout, :primary_key => :name, :foreign_key => :layout_name
|
|
27
26
|
|
|
28
27
|
validates_presence_of :name
|
|
@@ -31,11 +30,11 @@ class Page < ActiveRecord::Base
|
|
|
31
30
|
end
|
|
32
31
|
validates_uniqueness_of :slug, :scope => :parent_id
|
|
33
32
|
validates_format_of :slug,
|
|
34
|
-
:with => /\A([
|
|
33
|
+
:with => /\A([\w]+[\w-]*(\.[\w]+)?|\*)\Z/,
|
|
35
34
|
:message => :slug_format,
|
|
36
35
|
:unless => :root?
|
|
37
36
|
validates_format_of :slug,
|
|
38
|
-
:with => /\A
|
|
37
|
+
:with => /\A\Z/,
|
|
39
38
|
:message => :root_slug_format,
|
|
40
39
|
:if => :root?
|
|
41
40
|
validates_inclusion_of :status, :in => Page.statuses
|
|
@@ -49,7 +48,7 @@ class Page < ActiveRecord::Base
|
|
|
49
48
|
|
|
50
49
|
before_save :update_location
|
|
51
50
|
def update_location
|
|
52
|
-
self.location = [
|
|
51
|
+
self.location = [swallow_nil{parent.location}, slug].compact.join('/').presence
|
|
53
52
|
end
|
|
54
53
|
|
|
55
54
|
before_update :update_locations
|
|
@@ -59,7 +58,7 @@ class Page < ActiveRecord::Base
|
|
|
59
58
|
|
|
60
59
|
after_save :create_main_part
|
|
61
60
|
def create_main_part
|
|
62
|
-
page_parts.create(:name => PufferPages
|
|
61
|
+
page_parts.create(:name => PufferPages.primary_page_part_name) if root?
|
|
63
62
|
end
|
|
64
63
|
|
|
65
64
|
statuses.each do |status_name|
|
|
@@ -96,7 +95,7 @@ class Page < ActiveRecord::Base
|
|
|
96
95
|
end
|
|
97
96
|
|
|
98
97
|
def inherited_page_parts
|
|
99
|
-
PagePart.where(:page_id => self_and_ancestors.map(&:id).reverse).group('name').order("name = '#{PufferPages
|
|
98
|
+
PagePart.where(:page_id => self_and_ancestors.map(&:id).reverse).group('name').order("name = '#{PufferPages.primary_page_part_name}' desc, name")
|
|
100
99
|
end
|
|
101
100
|
|
|
102
101
|
def part name
|
data/app/models/page_part.rb
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<ul id="page_parts" data-tabs="{closable: true, onRemove: page_part_tab_remove, addButton: page_part_tab_add}">
|
|
2
|
+
<ul>
|
|
3
|
+
<% builder.object.page_parts.each_with_index do |page_part, index| %>
|
|
4
|
+
<li><%= link_to page_part.name, "#page_part_tab_#{index}" %></li>
|
|
5
|
+
<% end %>
|
|
6
|
+
</ul>
|
|
7
|
+
<% builder.object.page_parts.each_with_index do |page_part, index| %>
|
|
8
|
+
<li id="<%= "page_part_tab_#{index}" %>">
|
|
9
|
+
<%= builder.fields_for :page_parts, page_part do |page_part_builder| %>
|
|
10
|
+
<%= render :partial => 'page_part_builder', :object => page_part_builder %>
|
|
11
|
+
<% end %>
|
|
12
|
+
</li>
|
|
13
|
+
<% end %>
|
|
14
|
+
</ul>
|
|
15
|
+
<div id="page_parts_marked_for_destroy">
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<% new_page_part_tab_panel = capture do %>
|
|
19
|
+
<%= builder.fields_for :page_parts, PagePart.new, :child_index => 'new_page_part_tab_panel_index' do |page_part_builder| %>
|
|
20
|
+
<%= render :partial => 'page_part_builder', :object => page_part_builder %>
|
|
21
|
+
<% end %>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
24
|
+
<%= javascript_tag do %>
|
|
25
|
+
var new_page_part_tab_panel = '<%= escape_javascript new_page_part_tab_panel.strip %>'
|
|
26
|
+
<% end %>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<% @title = resource.human %>
|
|
2
|
+
<h1><%= @title %> Tree</h1>
|
|
3
|
+
<% if records.present? %>
|
|
4
|
+
<%= puffer_tree records, :class => 'puffer_tree' do |record, children| %>
|
|
5
|
+
<li id="<%= dom_id(record) %>">
|
|
6
|
+
<dl class="record columns">
|
|
7
|
+
<dt class="column">
|
|
8
|
+
<span class="handle">⇅</span>
|
|
9
|
+
<% tree_fields.each do |field| -%>
|
|
10
|
+
<span><%= render_field field, record %></span>
|
|
11
|
+
<% end -%>
|
|
12
|
+
</dt>
|
|
13
|
+
<dd class="column">
|
|
14
|
+
<%= link_to 'edit', resource.edit_path(record) if update_fields.present? %>
|
|
15
|
+
<% controller._members.each do |member| %>
|
|
16
|
+
<%= link_to member.label, resource.member_path(record, :action => member.action) if member.display? %>
|
|
17
|
+
<% end %>
|
|
18
|
+
<%= link_to 'destroy', resource.member_path(record), :confirm => "Are you sure?", :method => :delete if configuration.destroy %>
|
|
19
|
+
</dd>
|
|
20
|
+
</dl>
|
|
21
|
+
<%= children %>
|
|
22
|
+
</li>
|
|
23
|
+
<% end %>
|
|
24
|
+
<% else %>
|
|
25
|
+
<p>Sorry, but there is no records in <%= resource.human %></p>
|
|
26
|
+
<% end %>
|
|
27
|
+
|
|
28
|
+
<% if false %>
|
|
29
|
+
<table class="list_table">
|
|
30
|
+
<thead>
|
|
31
|
+
<tr>
|
|
32
|
+
<% index_fields.each do |field| -%>
|
|
33
|
+
<th><%= render_head field %></th>
|
|
34
|
+
<% end -%>
|
|
35
|
+
<th class="actions">Actions</th>
|
|
36
|
+
</tr>
|
|
37
|
+
</thead>
|
|
38
|
+
<tbody>
|
|
39
|
+
<% records.each do |record| -%>
|
|
40
|
+
<tr>
|
|
41
|
+
<% index_fields.each do |field| -%>
|
|
42
|
+
<td><%= render_field field, record %></td>
|
|
43
|
+
<% end -%>
|
|
44
|
+
<td class="actions">
|
|
45
|
+
<%= link_to 'edit', resource.edit_path(record) if update_fields.present? %>
|
|
46
|
+
<% controller._members.each do |member| %>
|
|
47
|
+
<%= link_to member.label, resource.member_path(record, :action => member.action) if member.display? %>
|
|
48
|
+
<% end %>
|
|
49
|
+
<%= link_to 'destroy', resource.member_path(record), :confirm => "Are you sure?", :method => :delete if configuration.destroy %>
|
|
50
|
+
</td>
|
|
51
|
+
</tr>
|
|
52
|
+
<% end -%>
|
|
53
|
+
</tbody>
|
|
54
|
+
</table>
|
|
55
|
+
<% end %>
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
class PufferPages::InstallGenerator < Rails::Generators::Base
|
|
2
2
|
source_root File.expand_path('../templates', __FILE__)
|
|
3
3
|
|
|
4
|
+
def generate_assets
|
|
5
|
+
directory 'puffer', 'public/puffer'
|
|
6
|
+
end
|
|
7
|
+
|
|
4
8
|
def generate_migrations
|
|
5
9
|
directory 'migrate', 'db/migrate'
|
|
6
10
|
end
|
|
@@ -9,4 +13,8 @@ class PufferPages::InstallGenerator < Rails::Generators::Base
|
|
|
9
13
|
directory 'controllers', 'app/controllers/admin'
|
|
10
14
|
end
|
|
11
15
|
|
|
16
|
+
def generate_config
|
|
17
|
+
copy_file 'puffer_pages.rb', 'config/initializers/puffer_pages.rb'
|
|
18
|
+
end
|
|
19
|
+
|
|
12
20
|
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Tabs.include({
|
|
2
|
+
initialize: function(options) {
|
|
3
|
+
this.$super(options);
|
|
4
|
+
this.buildAddButton();
|
|
5
|
+
},
|
|
6
|
+
|
|
7
|
+
buildAddButton: function() {
|
|
8
|
+
if (isFunction(this.options.addButton)) {
|
|
9
|
+
this.addButton = $E('a', {'class': 'rui-tabs-tab rui-tabs-add', 'html': '<a href="#">+</a>'}).insertTo(this.tabsList);
|
|
10
|
+
this.addButton.onClick(this.options.addButton.bind(this));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
var page_part_tab_remove = function(event) {
|
|
16
|
+
var destroy_mark = event.target.panel.first('.destroy_mark');
|
|
17
|
+
var page_part_param = destroy_mark.next();
|
|
18
|
+
$('page_parts_marked_for_destroy').append(destroy_mark.value('1'))
|
|
19
|
+
if (page_part_param) {
|
|
20
|
+
$('page_parts_marked_for_destroy').append(page_part_param);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
var page_part_tab_add = function(event) {
|
|
25
|
+
event.stop();
|
|
26
|
+
var new_id = new Date().getTime();
|
|
27
|
+
var _this = this;
|
|
28
|
+
new Dialog.Prompt({label: 'Enter new page part name'}).onOk(function() {
|
|
29
|
+
_this.add(this.input.value(), new_page_part_tab_panel.replace(/new_page_part_tab_panel_index/g, new_id), {id: new_id});
|
|
30
|
+
_this.tabs.last().panel.first('input[type=hidden]').value(this.input.value());
|
|
31
|
+
_this.tabs.last().select();
|
|
32
|
+
_this.addButton.insertTo(_this.tabsList);
|
|
33
|
+
this.hide();
|
|
34
|
+
}).show();
|
|
35
|
+
}
|