it-logica-application-backbone 0.1.12 → 0.1.13

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.12
1
+ 0.1.13
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "it-logica-application-backbone"
8
- s.version = "0.1.12"
8
+ s.version = "0.1.13"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ladas"]
@@ -72,7 +72,10 @@ Gem::Specification.new do |s|
72
72
  "lib/initializers/initialize.rb",
73
73
  "lib/it-logica-application-backbone.rb",
74
74
  "lib/model_mixins/table_builder_class_methods.rb",
75
+ "lib/model_mixins/tree_node_class_methods.rb",
76
+ "lib/model_mixins/tree_node_instance_methods.rb",
75
77
  "lib/view_mixins/breadcrumb.rb",
78
+ "lib/view_mixins/datafiles_for.rb",
76
79
  "lib/view_mixins/form.rb",
77
80
  "lib/view_mixins/link.rb",
78
81
  "lib/view_mixins/table.rb",
@@ -1,9 +1,12 @@
1
1
  require 'view_mixins/link'
2
2
  require 'view_mixins/form'
3
3
  require 'view_mixins/breadcrumb'
4
+ require 'view_mixins/datafiles_for'
4
5
  require 'view_mixins/table'
5
6
 
6
7
  require 'model_mixins/table_builder_class_methods'
8
+ require 'model_mixins/tree_node_class_methods'
9
+ require 'model_mixins/tree_node_instance_methods'
7
10
 
8
11
  require 'controller_mixins/renderer_instance_methods'
9
12
 
@@ -14,10 +17,13 @@ module Initializers
14
17
  ActionView::Base.send :include, ViewMixins::Form
15
18
  ActionView::Base.send :include, ViewMixins::Breadcrumb
16
19
  ActionView::Base.send :include, ViewMixins::Table
20
+ ActionView::Base.send :include, ViewMixins::DatafilesFor
17
21
 
18
22
  ActionController::Base.send :include, ControllerMixins::RendererInstanceMethods
19
23
 
20
24
  ActiveRecord::Base.send :extend, ModelMixins::TableBuilderClassMethods
25
+ ActiveRecord::Base.send :extend, ModelMixins::TreeNodeInstanceMethods
26
+ ActiveRecord::Base.send :extend, ModelMixins::TreeNodeClassMethods
21
27
  end
22
28
  end
23
29
  end
@@ -0,0 +1,67 @@
1
+ module ModelMixins
2
+ module TreeNodeClassMethods
3
+ def child_nodes(id)
4
+ where(:parent_node_id => id.to_i).order("position ASC")
5
+ end
6
+
7
+
8
+ def get_children(id)
9
+ nodes = []
10
+ self.child_nodes(id).each do |tree_node|
11
+ tree_node_name = tree_node.name.blank? ? I18.t('name_missing') : tree_node.name
12
+ tree_node_state = tree_node.has_children? ? "closed" : ""
13
+ nodes << {:attr => {:id => tree_node.id, :rel => "default", "data-settings" => tree_node.to_json}, :data => tree_node_name, :state => tree_node_state}
14
+ end
15
+ nodes
16
+ end
17
+
18
+ def search_node
19
+
20
+ end
21
+
22
+ def create_node(params)
23
+ node = self.create(:parent_node_id => params['id'].to_i, :position => params['position'].to_i, :name => params['title'])
24
+
25
+ {:status => "ok", :id => node.id, "data-settings" => node.to_json}
26
+ end
27
+
28
+
29
+ def remove_node(id)
30
+ node = self.find(id)
31
+ node.deleting_root = true
32
+ node.remove_child_nodes
33
+
34
+ {:status => "ok"}
35
+ end
36
+
37
+ def rename_node(params)
38
+ node = self.find(params['id'].to_i)
39
+ node.name = params['title']
40
+ node.save
41
+
42
+ {:status => "ok"}
43
+ end
44
+
45
+ def move_node(params)
46
+ node = self.find(params['id'].to_i)
47
+
48
+ # backup for control if something changed
49
+ node.old_position = node.position
50
+ node.old_parent_node_id = node.parent_node_id
51
+
52
+ if params['ref'].to_i == 0
53
+ #root
54
+ node.parent_node_id = 0
55
+ else
56
+ new_parent_node = self.find(params['ref'].to_i)
57
+ node.parent_node = new_parent_node
58
+ end
59
+ node.position = params['position'].to_i
60
+ node.save
61
+
62
+ {:status => "ok"}
63
+ end
64
+
65
+
66
+ end
67
+ end
@@ -0,0 +1,76 @@
1
+ module ModelMixins
2
+ module TreeNodeInstanceMethods
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ attr_accessible :symlink_controller, :symlink_action, :symlink_id, :symlink_params, :symlink_subdomain, :resource_type, :resource_id, :symlink_remote, :symlink_new_tab
7
+ attr_accessible :name, :parent_node_id, :position
8
+ attr_accessor :old_position, :old_parent_node_id, :deleting_root
9
+
10
+ belongs_to :resource, :polymorphic => true, :dependent => :destroy
11
+
12
+ #belongs_to :parent_node , :class_name => "Intranet::TreeNode"
13
+ belongs_to :parent_node, :class_name => "TreeNode"
14
+
15
+
16
+ before_create :create_resource
17
+
18
+ before_save :set_positions_after_move
19
+ before_destroy :set_positions_after_destroy
20
+ end
21
+
22
+ def create_resource
23
+ if self.symlink_controller.blank?
24
+ node_resource = Intranet::TextPage.create(:name => self.name)
25
+ self.resource = node_resource
26
+ self.symlink_controller = "text_pages"
27
+ self.symlink_id = node_resource.id.to_s
28
+ end
29
+ end
30
+
31
+ def set_positions_after_move
32
+ if !old_position.blank? && !old_parent_node_id.blank?
33
+ self.class.child_nodes(old_parent_node_id).where("position > ?", old_position).each do |node|
34
+ node.position -= 1
35
+ node.save
36
+ end
37
+ self.class.child_nodes(parent_node_id).where("position >= ?", position).each do |node|
38
+ node.position += 1
39
+ node.save
40
+ end
41
+ end
42
+ end
43
+
44
+ def set_positions_after_destroy
45
+ if !deleting_root.blank? && deleting_root
46
+ self.class.child_nodes(parent_node_id).where("position > ?", position).each do |node|
47
+ node.position -= 1
48
+ node.save
49
+ end
50
+ end
51
+ end
52
+
53
+
54
+ def child_nodes
55
+ self.class.child_nodes(self.id)
56
+ end
57
+
58
+ def has_children?
59
+ self.class.child_nodes(self.id).count > 0
60
+ end
61
+
62
+
63
+ def remove_child_nodes
64
+ if has_children?
65
+ child_nodes.each do |child_node|
66
+ child_node.remove_child_nodes
67
+ end
68
+ end
69
+ remove_one_node
70
+ end
71
+
72
+ def remove_one_node
73
+ destroy
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,7 @@
1
+ module ViewMixins
2
+ module DatafilesFor
3
+ def datafiles_for(object, tiny_mce_selector = ".datafile_tinymce", can_upload = true)
4
+ render :partial => '/helpers/build_datafiles', :layout => false, :locals => {:object => object, :tiny_mce_selector => tiny_mce_selector, :can_upload => can_upload}
5
+ end
6
+ end
7
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: it-logica-application-backbone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.13
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
16
- requirement: &69263740 !ruby/object:Gem::Requirement
16
+ requirement: &81628740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *69263740
24
+ version_requirements: *81628740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &69263420 !ruby/object:Gem::Requirement
27
+ requirement: &81628500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.12'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *69263420
35
+ version_requirements: *81628500
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &69263160 !ruby/object:Gem::Requirement
38
+ requirement: &81628210 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.1.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *69263160
46
+ version_requirements: *81628210
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &69262860 !ruby/object:Gem::Requirement
49
+ requirement: &81627680 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *69262860
57
+ version_requirements: *81627680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
- requirement: &69262390 !ruby/object:Gem::Requirement
60
+ requirement: &81626280 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *69262390
68
+ version_requirements: *81626280
69
69
  description: longer description of your gem
70
70
  email: ladislav.smola@it-logica.cz
71
71
  executables: []
@@ -129,7 +129,10 @@ files:
129
129
  - lib/initializers/initialize.rb
130
130
  - lib/it-logica-application-backbone.rb
131
131
  - lib/model_mixins/table_builder_class_methods.rb
132
+ - lib/model_mixins/tree_node_class_methods.rb
133
+ - lib/model_mixins/tree_node_instance_methods.rb
132
134
  - lib/view_mixins/breadcrumb.rb
135
+ - lib/view_mixins/datafiles_for.rb
133
136
  - lib/view_mixins/form.rb
134
137
  - lib/view_mixins/link.rb
135
138
  - lib/view_mixins/table.rb
@@ -150,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
153
  version: '0'
151
154
  segments:
152
155
  - 0
153
- hash: -609359667
156
+ hash: 300299217
154
157
  required_rubygems_version: !ruby/object:Gem::Requirement
155
158
  none: false
156
159
  requirements: