From 2ca408294e7bcb6bea9a18bab413830ce5c3aba5 Mon Sep 17 00:00:00 2001 From: manson Date: Tue, 5 Aug 2014 14:45:52 +0800 Subject: [PATCH] Add link_to_edit for modules frontend(Announcement, Archive, Faq, PageContent) --- app/controllers/pages_controller.rb | 4 +-- app/helpers/application_helper.rb | 17 +++++++++--- app/helpers/orbit_helper.rb | 27 ++++++++++++++++++- .../modules/announcement/show.html.erb | 3 +++ .../modules/archive/index1.html.erb | 1 + .../orbit_bootstrap/modules/faq/show.html.erb | 4 ++- 6 files changed, 49 insertions(+), 7 deletions(-) diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 1d8f0a5..39d07f7 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -28,7 +28,7 @@ class PagesController < ApplicationController @manifest = @key page = Page.first impressionist(page) - OrbitHelper.set_params params + OrbitHelper.set_params params,current_user OrbitHelper.set_site_locale locale render :html => render_final_page("home",page,true).html_safe end @@ -76,7 +76,7 @@ class PagesController < ApplicationController params[:url] = page.url @manifest = @key - OrbitHelper.set_params params + OrbitHelper.set_params params,current_user OrbitHelper.set_site_locale locale OrbitHelper.set_this_module_app module_app.singularize OrbitHelper.set_page_categories page.categories || [] diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bdd9853..04d97ad 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -166,6 +166,15 @@ module ApplicationHelper def render_view + def render_link_to_edit(html, url_to_edit) + if html.scan("{{link_to_edit}}").length == 0 + html = url_to_edit.blank? ? html : html + "

#{t(:edit)}

" + else + html = url_to_edit.blank? ? html.gsub("{{link_to_edit}}","") : html.gsub("{{link_to_edit}}","

#{t(:edit)}

") + end + return html + end + def parsing_repeats_again(elements,d,level) newhtml = [] oldhtml = [] @@ -173,11 +182,12 @@ module ApplicationHelper html_to_render = "" data_name = el.attr("data-list") wrap_elements = el.css("*[data-list][data-level='#{level}']") - if d["#{data_name}"] - d["#{data_name}"].each_with_index do |item,i| + if d[data_name] + d[data_name].each_with_index do |item,i| element = el.inner_html + element = render_link_to_edit(element, item['url_to_edit']) if !item['url_to_edit'].nil? if wrap_elements.count > 0 - htmls = parsing_repeats_again(wrap_elements,d["#{data_name}"][i], level + 1) + htmls = parsing_repeats_again(wrap_elements,d[data_name][i], level + 1) htmls[0].each_with_index do |html,i| element = element.gsub(html,htmls[1][i]) end @@ -299,6 +309,7 @@ module ApplicationHelper html = html.gsub("{{#{key}}}",value.to_s) html = html.gsub("%7B%7B#{key}%7D%7D",value.to_s) end + html = render_link_to_edit(html, data["url_to_edit"]) if !data["url_to_edit"].nil? html.html_safe end end diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb index 7e0c00d..b76f62d 100644 --- a/app/helpers/orbit_helper.rb +++ b/app/helpers/orbit_helper.rb @@ -1,6 +1,7 @@ module OrbitHelper - def self.set_params(params) + def self.set_params(params,current_user) @params = params + @current_user = current_user end def self.set_page_categories(categories) @@ -54,6 +55,10 @@ module OrbitHelper @sort_position end + def self.current_user + @current_user + end + def self.page_for_tag(tag) page_for_tag = nil pages = Page.where(:module => @module_app.key) @@ -120,6 +125,26 @@ module OrbitHelper @tags end + def self.user_can_edit?(obj) + return false if @current_user.nil? + return true if @current_user.is_admin? + + if obj.class.to_s == "PageContext" + return @current_user.is_manager?(@module_app) + else + return @current_user.nil? ? false : user_has_cateogry?(obj.category_id) + end + end + + def self.user_has_cateogry?(cat) + return false if @current_user.nil? + if @current_user.is_admin? or @current_user.is_manager?(@module_app) + return true + else + return @current_user.approved_categories.include?cat rescue false + end + end + def self.params @params end diff --git a/app/templates/orbit_bootstrap/modules/announcement/show.html.erb b/app/templates/orbit_bootstrap/modules/announcement/show.html.erb index 6fa9d9d..e1c1adc 100644 --- a/app/templates/orbit_bootstrap/modules/announcement/show.html.erb +++ b/app/templates/orbit_bootstrap/modules/announcement/show.html.erb @@ -41,6 +41,9 @@ Tweet + +{{link_to_edit}} +