knitkit 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/GPL-3-LICENSE +674 -0
- data/README.md +6 -0
- data/Rakefile +30 -0
- data/app/assets/javascripts/knitkit/application.js +9 -0
- data/app/assets/stylesheets/knitkit/application.css +7 -0
- data/app/controllers/knitkit/articles_controller.rb +7 -0
- data/app/controllers/knitkit/base_controller.rb +45 -0
- data/app/controllers/knitkit/blogs_controller.rb +27 -0
- data/app/controllers/knitkit/comments_controller.rb +18 -0
- data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +135 -0
- data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +144 -0
- data/app/controllers/knitkit/erp_app/desktop/comments_controller.rb +43 -0
- data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +27 -0
- data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +145 -0
- data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +28 -0
- data/app/controllers/knitkit/erp_app/desktop/inquiries_controller.rb +68 -0
- data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +20 -0
- data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +272 -0
- data/app/controllers/knitkit/erp_app/desktop/versions_controller.rb +135 -0
- data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +177 -0
- data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +143 -0
- data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +116 -0
- data/app/controllers/knitkit/unauthorized_controller.rb +8 -0
- data/app/controllers/knitkit/website_sections_controller.rb +17 -0
- data/app/helpers/application_helper.rb +132 -0
- data/app/models/article.rb +14 -0
- data/app/models/blog.rb +21 -0
- data/app/models/comment.rb +24 -0
- data/app/models/content.rb +158 -0
- data/app/models/extensions/user.rb +5 -0
- data/app/models/published_element.rb +9 -0
- data/app/models/published_website.rb +118 -0
- data/app/models/theme.rb +239 -0
- data/app/models/website.rb +457 -0
- data/app/models/website_host.rb +3 -0
- data/app/models/website_inquiry.rb +11 -0
- data/app/models/website_inquiry_mailer.rb +12 -0
- data/app/models/website_nav.rb +17 -0
- data/app/models/website_nav_item.rb +21 -0
- data/app/models/website_section.rb +152 -0
- data/app/models/website_section_content.rb +4 -0
- data/app/views/knitkit/articles/index.html.erb +3 -0
- data/app/views/knitkit/articles/show.html.erb +4 -0
- data/app/views/knitkit/blogs/_add_comment.html.erb +28 -0
- data/app/views/knitkit/blogs/_comment.html.erb +8 -0
- data/app/views/knitkit/blogs/index.html.erb +51 -0
- data/app/views/knitkit/blogs/index.rss.builder +23 -0
- data/app/views/knitkit/blogs/show.html.erb +22 -0
- data/app/views/knitkit/unauthorized/index.html.erb +4 -0
- data/app/views/knitkit/website_sections/index.html.erb +6 -0
- data/app/views/layouts/knitkit/base.html.erb +59 -0
- data/app/views/menus/knitkit/_default_menu.html.erb +23 -0
- data/app/views/menus/knitkit/_default_section_menu.html.erb +27 -0
- data/app/views/menus/knitkit/_default_sub_menu.html.erb +45 -0
- data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +49 -0
- data/app/views/shared/knitkit/_bread_crumb.html.erb +7 -0
- data/app/views/shared/knitkit/_footer.html.erb +3 -0
- data/app/views/website_inquiry_mailer/inquiry.erb +3 -0
- data/app/widgets/contact_us/base.rb +86 -0
- data/app/widgets/contact_us/javascript/contact_us.js +13 -0
- data/app/widgets/contact_us/views/_contact_form.html.erb +36 -0
- data/app/widgets/contact_us/views/error.html.erb +10 -0
- data/app/widgets/contact_us/views/index.html.erb +1 -0
- data/app/widgets/contact_us/views/layouts/base.html.erb +7 -0
- data/app/widgets/contact_us/views/success.html.erb +4 -0
- data/app/widgets/google_map/base.rb +48 -0
- data/app/widgets/google_map/javascript/google_map.js +174 -0
- data/app/widgets/google_map/views/index.html.erb +41 -0
- data/app/widgets/login/base.rb +61 -0
- data/app/widgets/login/javascript/login.js +162 -0
- data/app/widgets/login/views/index.html.erb +37 -0
- data/app/widgets/login/views/layouts/base.html.erb +14 -0
- data/app/widgets/login/views/login_header.html.erb +9 -0
- data/app/widgets/login/views/reset_password.html.erb +26 -0
- data/app/widgets/manage_profile/base.rb +327 -0
- data/app/widgets/manage_profile/javascript/manage_profile.js +11 -0
- data/app/widgets/manage_profile/views/_contact_information_form.html.erb +180 -0
- data/app/widgets/manage_profile/views/_password_form.html.erb +20 -0
- data/app/widgets/manage_profile/views/_user_information_form.html.erb +30 -0
- data/app/widgets/manage_profile/views/contact_type_in_use.html.erb +4 -0
- data/app/widgets/manage_profile/views/default_type_error.html.erb +5 -0
- data/app/widgets/manage_profile/views/error.html.erb +3 -0
- data/app/widgets/manage_profile/views/index.html.erb +46 -0
- data/app/widgets/manage_profile/views/layouts/base.html.erb +1 -0
- data/app/widgets/manage_profile/views/password_blank.html.erb +4 -0
- data/app/widgets/manage_profile/views/password_invalid.html.erb +4 -0
- data/app/widgets/manage_profile/views/password_success.html.erb +3 -0
- data/app/widgets/manage_profile/views/success.html.erb +3 -0
- data/app/widgets/reset_password/base.rb +42 -0
- data/app/widgets/reset_password/javascript/reset_password.js +13 -0
- data/app/widgets/reset_password/views/index.html.erb +31 -0
- data/app/widgets/reset_password/views/layouts/base.html.erb +1 -0
- data/app/widgets/search/base.rb +80 -0
- data/app/widgets/search/javascript/search.js +31 -0
- data/app/widgets/search/views/_search.html.erb +39 -0
- data/app/widgets/search/views/index.html.erb +3 -0
- data/app/widgets/search/views/layouts/base.html.erb +24 -0
- data/app/widgets/search/views/show.html.erb +48 -0
- data/app/widgets/signup/base.rb +72 -0
- data/app/widgets/signup/javascript/signup.js +13 -0
- data/app/widgets/signup/views/_signup_form.html.erb +36 -0
- data/app/widgets/signup/views/error.html.erb +11 -0
- data/app/widgets/signup/views/index.html.erb +1 -0
- data/app/widgets/signup/views/layouts/base.html.erb +7 -0
- data/app/widgets/signup/views/success.html.erb +4 -0
- data/config/environment.rb +0 -0
- data/config/routes.rb +41 -0
- data/db/data_migrations/20110509223702_add_publisher_role.rb +11 -0
- data/db/data_migrations/20110816153456_add_knitkit_application.rb +31 -0
- data/db/data_migrations/upgrade/20111011203718_create_paths_for_sections.rb +13 -0
- data/db/data_migrations/upgrade/20111216192114_add_secured_models_to_menu_items.rb +18 -0
- data/db/data_migrations/upgrade/20111216202819_set_contents_iid_to_permalink_where_null.rb +12 -0
- data/db/migrate/20110211002317_setup_knitkit.rb +259 -0
- data/db/migrate/upgrade/20111014190442_update_contents.rb +25 -0
- data/db/migrate/upgrade/20111014201502_add_published_by_to_published_elements.rb +22 -0
- data/db/migrate/upgrade/20111017133851_add_iid_to_section.rb +21 -0
- data/db/migrate/upgrade/20111027145006_add_in_menu_to_section.rb +19 -0
- data/lib/knitkit.rb +12 -0
- data/lib/knitkit/engine.rb +26 -0
- data/lib/knitkit/extensions.rb +18 -0
- data/lib/knitkit/extensions/action_controller/theme_support/acts_as_themed_controller.rb +88 -0
- data/lib/knitkit/extensions/active_record/acts_as_commentable.rb +28 -0
- data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +38 -0
- data/lib/knitkit/extensions/active_record/theme_support/has_many_themes.rb +34 -0
- data/lib/knitkit/extensions/compass/widgets/base.rb +53 -0
- data/lib/knitkit/extensions/core/array.rb +5 -0
- data/lib/knitkit/extensions/railties/action_view.rb +187 -0
- data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +198 -0
- data/lib/knitkit/extensions/railties/theme_support/theme_file_resolver.rb +44 -0
- data/lib/knitkit/routing_filter/section_router.rb +55 -0
- data/lib/knitkit/syntax_validator.rb +32 -0
- data/lib/knitkit/version.rb +3 -0
- data/lib/tasks/knitkit_tasks.rake +4 -0
- data/public/images/knitkit/bullet.png +0 -0
- data/public/images/knitkit/content.png +0 -0
- data/public/images/knitkit/footer.png +0 -0
- data/public/images/knitkit/graphic.png +0 -0
- data/public/images/knitkit/greyFadeDown.png +0 -0
- data/public/images/knitkit/link.png +0 -0
- data/public/images/knitkit/logo.png +0 -0
- data/public/images/knitkit/menu.png +0 -0
- data/public/images/knitkit/menu_select.png +0 -0
- data/public/images/knitkit/search.png +0 -0
- data/public/javascripts/datepicker.js +440 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +473 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +576 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/comments_grid_panel.js +217 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/east_region.js +26 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +109 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +30 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +160 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +46 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +46 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +92 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +220 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +613 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +573 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +664 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/west_region.js +2161 -0
- data/public/javascripts/erp_app/desktop/applications/knitkit/widgets_panel.js +52 -0
- data/public/stylesheets/datepicker.css +121 -0
- data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +114 -0
- data/public/stylesheets/extjs/resources/css/knitkit_extjs_4.css +219 -0
- data/public/stylesheets/knitkit/style.css +394 -0
- metadata +289 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module ErpApp
|
3
|
+
module Desktop
|
4
|
+
class VersionsController < Knitkit::ErpApp::Desktop::AppController
|
5
|
+
#content
|
6
|
+
|
7
|
+
def content_versions
|
8
|
+
content = Content.find(params[:id])
|
9
|
+
website = Website.find(params[:site_id])
|
10
|
+
sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
|
11
|
+
sort = sort_hash[:property] || 'version'
|
12
|
+
dir = sort_hash[:direction] || 'DESC'
|
13
|
+
limit = params[:limit] || 15
|
14
|
+
start = params[:start] || 0
|
15
|
+
|
16
|
+
versions = content.versions.order("#{sort} #{dir}").offset(start).limit(limit)
|
17
|
+
|
18
|
+
Content::Version.class_exec(website) do
|
19
|
+
cattr_accessor :website
|
20
|
+
self.website = website
|
21
|
+
def active
|
22
|
+
published_site_id = self.website.active_publication.id
|
23
|
+
!PublishedElement.includes([:published_website]).where('published_websites.id = ? and published_element_record_id = ? and published_element_record_type = ? and published_elements.version = ?', published_site_id, self.content_id, 'Content', self.version).first.nil?
|
24
|
+
end
|
25
|
+
|
26
|
+
def published_element
|
27
|
+
PublishedElement.where('published_element_record_id = ? and published_element_record_type = ? and published_elements.version = ?', self.content_id, 'Content', self.version).first
|
28
|
+
end
|
29
|
+
|
30
|
+
def published
|
31
|
+
!published_element.nil?
|
32
|
+
end
|
33
|
+
|
34
|
+
def publisher
|
35
|
+
published_element.published_by_username if published
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
render :inline => "{\"totalCount\":#{content.versions.count},data:#{versions.to_json(
|
40
|
+
:only => [:id, :version, :title, :body_html, :excerpt_html, :updated_at],
|
41
|
+
:methods => [:active, :published, :publisher])}}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def non_published_content_versions
|
45
|
+
content = Content.find(params[:id])
|
46
|
+
sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
|
47
|
+
sort = sort_hash[:property] || 'version'
|
48
|
+
dir = sort_hash[:direction] || 'DESC'
|
49
|
+
limit = params[:limit] || 15
|
50
|
+
start = params[:start] || 0
|
51
|
+
|
52
|
+
versions = content.versions.order("#{sort} #{dir}").offset(start).limit(limit)
|
53
|
+
|
54
|
+
render :inline => "{\"totalCount\":#{content.versions.count},data:#{versions.to_json(:only => [:id, :version, :title, :body_html, :excerpt_html, :updated_at])}}"
|
55
|
+
end
|
56
|
+
|
57
|
+
def publish_content
|
58
|
+
content = Content.find(Content::Version.find(params[:id]).content_id)
|
59
|
+
content.publish(Website.find(params[:site_id]), params[:comment], params[:version], current_user)
|
60
|
+
|
61
|
+
render :json => {:success => true}
|
62
|
+
end
|
63
|
+
|
64
|
+
def revert_content
|
65
|
+
content = Content.find(Content::Version.find(params[:id]).content_id)
|
66
|
+
version = params[:version]
|
67
|
+
content.revert_to(version)
|
68
|
+
content.save!
|
69
|
+
|
70
|
+
render :json => {:success => true}
|
71
|
+
end
|
72
|
+
|
73
|
+
#website section layouts
|
74
|
+
|
75
|
+
def website_section_layout_versions
|
76
|
+
website_section = WebsiteSection.find(params[:id])
|
77
|
+
website = Website.find(params[:site_id])
|
78
|
+
sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
|
79
|
+
sort = sort_hash[:property] || 'version'
|
80
|
+
dir = sort_hash[:direction] || 'DESC'
|
81
|
+
limit = params[:limit] || 15
|
82
|
+
start = params[:start] || 0
|
83
|
+
|
84
|
+
versions = website_section.versions.order("#{sort} #{dir}").offset(start).limit(limit)
|
85
|
+
|
86
|
+
WebsiteSection::Version.class_exec(website) do
|
87
|
+
cattr_accessor :website
|
88
|
+
self.website = website
|
89
|
+
def active
|
90
|
+
published_site_id = self.website.active_publication.id
|
91
|
+
!PublishedElement.includes([:published_website]).where('published_websites.id = ? and published_element_record_id = ? and published_element_record_type = ? and published_elements.version = ?', published_site_id, self.website_section_id, 'WebsiteSection', self.version).first.nil?
|
92
|
+
end
|
93
|
+
|
94
|
+
def published_element
|
95
|
+
PublishedElement.where('published_element_record_id = ? and published_element_record_type = ? and published_elements.version = ?', self.website_section_id, 'WebsiteSection', self.version).first
|
96
|
+
end
|
97
|
+
|
98
|
+
def published
|
99
|
+
!published_element.nil?
|
100
|
+
end
|
101
|
+
|
102
|
+
def publisher
|
103
|
+
published_element.published_by_username if published
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
render :inline => "{\"totalCount\":#{website_section.versions.count},data:#{versions.to_json(
|
108
|
+
:only => [:id, :version, :title, :updated_at],
|
109
|
+
:methods => [:active, :published, :publisher])}}"
|
110
|
+
end
|
111
|
+
|
112
|
+
def get_website_section_version
|
113
|
+
render :text => WebsiteSection::Version.find(params[:id]).layout
|
114
|
+
end
|
115
|
+
|
116
|
+
def publish_website_section
|
117
|
+
website_section = WebsiteSection.find(WebsiteSection::Version.find(params[:id]).website_section_id)
|
118
|
+
website_section.publish(Website.find(params[:site_id]), params[:comment], params[:version], current_user)
|
119
|
+
|
120
|
+
render :json => {:success => true}
|
121
|
+
end
|
122
|
+
|
123
|
+
def revert_website_section
|
124
|
+
website_section = WebsiteSection.find(WebsiteSection::Version.find(params[:id]).website_section_id)
|
125
|
+
version = params[:version]
|
126
|
+
website_section.revert_to(version)
|
127
|
+
website_section.save!
|
128
|
+
|
129
|
+
render :text => {:success => true, :body_html => website_section.layout}.to_json
|
130
|
+
end
|
131
|
+
|
132
|
+
end#VersionsController
|
133
|
+
end#Desktop
|
134
|
+
end#ErpApp
|
135
|
+
end#Knitkit
|
@@ -0,0 +1,177 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module ErpApp
|
3
|
+
module Desktop
|
4
|
+
class WebsiteController < Knitkit::ErpApp::Desktop::AppController
|
5
|
+
IGNORED_PARAMS = %w{action controller id}
|
6
|
+
|
7
|
+
before_filter :set_website, :only => [:export, :website_publications, :set_viewing_version, :activate_publication, :publish, :update, :delete]
|
8
|
+
|
9
|
+
def index
|
10
|
+
render :json => {:sites => Website.all}
|
11
|
+
end
|
12
|
+
|
13
|
+
def website_publications
|
14
|
+
sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
|
15
|
+
sort = sort_hash[:property] || 'version'
|
16
|
+
dir = sort_hash[:direction] || 'DESC'
|
17
|
+
limit = params[:limit] || 9
|
18
|
+
start = params[:start] || 0
|
19
|
+
|
20
|
+
published_websites = @website.published_websites.order("#{sort} #{dir}").limit(limit).offset(start)
|
21
|
+
|
22
|
+
#set site_version. User can view different versions. Check if they are viewing another version
|
23
|
+
site_version = @website.active_publication.version
|
24
|
+
if !session[:website_version].blank? && !session[:website_version].empty?
|
25
|
+
site_version_hash = session[:website_version].find{|item| item[:website_id] == @website.id}
|
26
|
+
site_version = site_version_hash[:version].to_f unless site_version_hash.nil?
|
27
|
+
end
|
28
|
+
|
29
|
+
PublishedWebsite.class_exec(site_version) do
|
30
|
+
cattr_accessor :site_version
|
31
|
+
self.site_version = site_version
|
32
|
+
def viewing
|
33
|
+
self.version == self.site_version
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
render :inline => "{\"success\":true, \"results\":#{published_websites.count},
|
38
|
+
\"totalCount\":#{@website.published_websites.count},
|
39
|
+
\"data\":#{published_websites.to_json(
|
40
|
+
:only => [:comment, :id, :version, :created_at, :active],
|
41
|
+
:methods => [:viewing, :published_by_username])} }"
|
42
|
+
end
|
43
|
+
|
44
|
+
def activate_publication
|
45
|
+
@website.set_publication_version(params[:version].to_f, current_user)
|
46
|
+
|
47
|
+
render :json => {:success => true}
|
48
|
+
end
|
49
|
+
|
50
|
+
def set_viewing_version
|
51
|
+
if session[:website_version].blank?
|
52
|
+
session[:website_version] = []
|
53
|
+
session[:website_version] << {:website_id => @website.id, :version => params[:version]}
|
54
|
+
else
|
55
|
+
session[:website_version].delete_if{|item| item[:website_id] == @website.id}
|
56
|
+
session[:website_version] << {:website_id => @website.id, :version => params[:version]}
|
57
|
+
end
|
58
|
+
|
59
|
+
render :json => {:success => true}
|
60
|
+
end
|
61
|
+
|
62
|
+
def publish
|
63
|
+
@website.publish(params[:comment], current_user)
|
64
|
+
|
65
|
+
render :json => {:success => true}
|
66
|
+
end
|
67
|
+
|
68
|
+
def new
|
69
|
+
result = {}
|
70
|
+
website = Website.new
|
71
|
+
website.subtitle = params[:subtitle]
|
72
|
+
website.title = params[:title]
|
73
|
+
website.name = params[:name]
|
74
|
+
website.email = params[:email]
|
75
|
+
website.auto_activate_publication = params[:auto_activate_publication] == 'yes'
|
76
|
+
website.email_inquiries = params[:email_inquiries] == 'yes'
|
77
|
+
|
78
|
+
# create homepage
|
79
|
+
website_section = WebsiteSection.new
|
80
|
+
website_section.title = "Home"
|
81
|
+
website_section.in_menu = true
|
82
|
+
website.website_sections << website_section
|
83
|
+
if website.save
|
84
|
+
website.setup_default_pages
|
85
|
+
|
86
|
+
#set default publication published by user
|
87
|
+
first_publication = website.published_websites.first
|
88
|
+
first_publication.published_by = current_user
|
89
|
+
first_publication.save
|
90
|
+
|
91
|
+
website.hosts << WebsiteHost.create(:host => params[:host])
|
92
|
+
website.save
|
93
|
+
|
94
|
+
website.publish("Publish Default Sections", current_user)
|
95
|
+
PublishedWebsite.activate(website, 1, current_user)
|
96
|
+
|
97
|
+
result[:success] = true
|
98
|
+
else
|
99
|
+
result[:success] = false
|
100
|
+
end
|
101
|
+
|
102
|
+
render :json => result
|
103
|
+
end
|
104
|
+
|
105
|
+
def update
|
106
|
+
@website.email = params[:email]
|
107
|
+
@website.name = params[:name]
|
108
|
+
@website.title = params[:title]
|
109
|
+
@website.subtitle = params[:subtitle]
|
110
|
+
@website.auto_activate_publication = params[:auto_activate_publication] == 'yes'
|
111
|
+
@website.email_inquiries = params[:email_inquiries] == 'yes'
|
112
|
+
|
113
|
+
render :json => @website.save ? {:success => true} : {:success => false}
|
114
|
+
end
|
115
|
+
|
116
|
+
|
117
|
+
def delete
|
118
|
+
render :json => @website.destroy ? {:success => true} : {:success => false}
|
119
|
+
end
|
120
|
+
|
121
|
+
def export
|
122
|
+
zip_path = @website.export
|
123
|
+
send_file(zip_path.to_s, :stream => false) rescue raise "Error sending #{zip_path} file"
|
124
|
+
ensure
|
125
|
+
FileUtils.rm_r File.dirname(zip_path) rescue nil
|
126
|
+
end
|
127
|
+
|
128
|
+
def import
|
129
|
+
result, message = Website.import(params[:website_data], current_user)
|
130
|
+
|
131
|
+
render :inline => {:success => result, :message => message}.to_json
|
132
|
+
ensure
|
133
|
+
FileUtils.rm_r File.dirname(zip_path) rescue nil
|
134
|
+
end
|
135
|
+
|
136
|
+
def add_host
|
137
|
+
website = Website.find(params[:id])
|
138
|
+
website_host = WebsiteHost.create(:host => params[:host])
|
139
|
+
website.hosts << website_host
|
140
|
+
website.save
|
141
|
+
|
142
|
+
render :json => {
|
143
|
+
:success => true,
|
144
|
+
:node => {
|
145
|
+
:text => website_host.attributes['host'],
|
146
|
+
:websiteHostId => website_host.id,
|
147
|
+
:host => website_host.attributes['host'],
|
148
|
+
:iconCls => 'icon-globe',
|
149
|
+
:url => "http://#{website_host.attributes['host']}",
|
150
|
+
:isHost => true,
|
151
|
+
:leaf => true,
|
152
|
+
:children => []}
|
153
|
+
}
|
154
|
+
end
|
155
|
+
|
156
|
+
def update_host
|
157
|
+
website_host = WebsiteHost.find(params[:id])
|
158
|
+
website_host.host = params[:host]
|
159
|
+
website_host.save
|
160
|
+
|
161
|
+
render :json => {:success => true}
|
162
|
+
end
|
163
|
+
|
164
|
+
def delete_host
|
165
|
+
render :json => WebsiteHost.destroy(params[:id]) ? {:success => true} : {:success => false}
|
166
|
+
end
|
167
|
+
|
168
|
+
protected
|
169
|
+
|
170
|
+
def set_website
|
171
|
+
@website = Website.find(params[:id])
|
172
|
+
end
|
173
|
+
|
174
|
+
end#WebsiteController
|
175
|
+
end#Desktop
|
176
|
+
end#ErpApp
|
177
|
+
end#Knitkit
|
@@ -0,0 +1,143 @@
|
|
1
|
+
module Knitkit
|
2
|
+
module ErpApp
|
3
|
+
module Desktop
|
4
|
+
class WebsiteNavController < Knitkit::ErpApp::Desktop::AppController
|
5
|
+
def new
|
6
|
+
result = {}
|
7
|
+
website = Website.find(params[:website_id])
|
8
|
+
website_nav = WebsiteNav.new(:name => params[:name])
|
9
|
+
website.website_navs << website_nav
|
10
|
+
|
11
|
+
if website_nav.save
|
12
|
+
result[:success] = true
|
13
|
+
result[:node] = {:text => params[:name],
|
14
|
+
:websiteNavId => website_nav.id,
|
15
|
+
:websiteId => website.id,
|
16
|
+
:iconCls => 'icon-index',
|
17
|
+
:canAddMenuItems => true,
|
18
|
+
:isWebsiteNav => true,
|
19
|
+
:leaf => false,
|
20
|
+
:children => []}
|
21
|
+
else
|
22
|
+
result[:success] = false
|
23
|
+
end
|
24
|
+
|
25
|
+
render :json => result
|
26
|
+
end
|
27
|
+
|
28
|
+
def update
|
29
|
+
website_nav = WebsiteNav.find(params[:website_nav_id])
|
30
|
+
website_nav.name = params[:name]
|
31
|
+
|
32
|
+
render :json => (website_nav.save ? {:success => true} : {:success => false})
|
33
|
+
end
|
34
|
+
|
35
|
+
def delete
|
36
|
+
render :json => (WebsiteNav.destroy(params[:id]) ? {:success => true} : {:success => false})
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_menu_item
|
40
|
+
result = {}
|
41
|
+
klass = params[:klass].constantize
|
42
|
+
parent = klass.find(params[:id])
|
43
|
+
website_nav = parent.is_a?(WebsiteNav) ? parent : parent.website_nav
|
44
|
+
website_nav_item = WebsiteNavItem.new(:title => params[:title])
|
45
|
+
|
46
|
+
url = params[:url]
|
47
|
+
if(params[:link_to] != 'url')
|
48
|
+
#user wants to see Section so this is needed
|
49
|
+
params[:link_to] = 'WebsiteSection' if params[:link_to] == 'website_section'
|
50
|
+
|
51
|
+
#get link to item can be Article or Section
|
52
|
+
linked_to_id = params["#{params[:link_to].underscore}_id".to_sym]
|
53
|
+
link_to_item = params[:link_to].constantize.find(linked_to_id)
|
54
|
+
#setup link
|
55
|
+
website_nav_item.url = '/' + link_to_item.permalink
|
56
|
+
website_nav_item.linked_to_item = link_to_item
|
57
|
+
url = "http://#{website_nav.website.hosts.first.host}/" + link_to_item.permalink
|
58
|
+
else
|
59
|
+
website_nav_item.url = url
|
60
|
+
end
|
61
|
+
|
62
|
+
if website_nav_item.save
|
63
|
+
if parent.is_a?(WebsiteNav)
|
64
|
+
parent.website_nav_items << website_nav_item
|
65
|
+
else
|
66
|
+
website_nav_item.move_to_child_of(parent)
|
67
|
+
end
|
68
|
+
|
69
|
+
result[:success] = true
|
70
|
+
result[:node] = {:text => params[:title],
|
71
|
+
:linkToType => params[:link_to].underscore,
|
72
|
+
:linkedToId => linked_to_id,
|
73
|
+
:websiteId => website_nav.website.id,
|
74
|
+
:url => url,
|
75
|
+
:isSecure => false,
|
76
|
+
:canAddMenuItems => true,
|
77
|
+
:websiteNavItemId => website_nav_item.id,
|
78
|
+
:iconCls => 'icon-document',
|
79
|
+
:isWebsiteNavItem => true,
|
80
|
+
:leaf => false,
|
81
|
+
:children => []}
|
82
|
+
else
|
83
|
+
result[:success] = false
|
84
|
+
end
|
85
|
+
|
86
|
+
render :json => result
|
87
|
+
end
|
88
|
+
|
89
|
+
def update_menu_item
|
90
|
+
result = {}
|
91
|
+
website_nav_item = WebsiteNavItem.find(params[:website_nav_item_id])
|
92
|
+
website_nav_item.title = params[:title]
|
93
|
+
|
94
|
+
url = params[:url]
|
95
|
+
linked_to_id = nil
|
96
|
+
if(params[:link_to] != 'url')
|
97
|
+
#user wants to see Section so this is needed
|
98
|
+
params[:link_to] = 'WebsiteSection' if params[:link_to] == 'website_section'
|
99
|
+
|
100
|
+
#get link to item can be Article or Section
|
101
|
+
linked_to_id = params["#{params[:link_to].underscore}_id".to_sym]
|
102
|
+
link_to_item = params[:link_to].constantize.find(linked_to_id)
|
103
|
+
#setup link
|
104
|
+
website_nav_item.url = '/' + link_to_item.permalink
|
105
|
+
website_nav_item.linked_to_item = link_to_item
|
106
|
+
url = "http://#{website_nav_item.website_nav.website.hosts.first.host}/" + link_to_item.permalink
|
107
|
+
else
|
108
|
+
website_nav_item.url = url
|
109
|
+
end
|
110
|
+
|
111
|
+
if website_nav_item.save
|
112
|
+
result[:success] = true
|
113
|
+
result[:title] = params[:title]
|
114
|
+
result[:linkedToId] = linked_to_id
|
115
|
+
result[:linkToType] = params[:link_to].underscore
|
116
|
+
result[:url] = url
|
117
|
+
else
|
118
|
+
result[:success] = false
|
119
|
+
end
|
120
|
+
|
121
|
+
render :json => result
|
122
|
+
end
|
123
|
+
|
124
|
+
def update_security
|
125
|
+
website_nav_item = WebsiteNavItem.find(params[:id])
|
126
|
+
website = Website.find(params[:site_id])
|
127
|
+
if(params[:secure] == "true")
|
128
|
+
website_nav_item.add_role(website.role)
|
129
|
+
else
|
130
|
+
website_nav_item.remove_role(website.role)
|
131
|
+
end
|
132
|
+
|
133
|
+
render :json => {:success => true}
|
134
|
+
end
|
135
|
+
|
136
|
+
def delete_menu_item
|
137
|
+
render :json => (WebsiteNavItem.destroy(params[:id]) ? {:success => true} : {:success => false})
|
138
|
+
end
|
139
|
+
|
140
|
+
end#WebsiteNavController
|
141
|
+
end#Desktop
|
142
|
+
end#ErpApp
|
143
|
+
end#Knitkit
|