Add link_to_edit for modules frontend(Announcement, Archive, Faq, PageContent)

This commit is contained in:
manson 2014-08-05 14:45:52 +08:00
parent ef1dda757a
commit 2ca408294e
6 changed files with 49 additions and 7 deletions

View File

@ -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 || []

View File

@ -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 + "<p class='admin-edit text-right'><a class='btn btn-primary' href='#{url_to_edit}'><i class='icon-edit'></i> #{t(:edit)}</a></p>"
else
html = url_to_edit.blank? ? html.gsub("{{link_to_edit}}","") : html.gsub("{{link_to_edit}}","<p class='admin-edit text-right'><a class='btn btn-primary' href='#{url_to_edit}'><i class='icon-edit'></i> #{t(:edit)}</a></p>")
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

View File

@ -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

View File

@ -41,6 +41,9 @@
<a href="https://twitter.com/share" class="twitter-share-button" data-dnt="true" data-count="none">Tweet</a>
</div>
</article>
{{link_to_edit}}
<script>
$(function() {

View File

@ -28,6 +28,7 @@
</dl>
</dl>
</div>
{{link_to_edit}}
</div>
</div>
</div>

View File

@ -16,3 +16,5 @@
<a href="{{link_url}}" target="_blank">{{link_title}}</a><br/>
</div>
</article>
{{link_to_edit}}