base_helper.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:8k
源码类别:

Ajax

开发平台:

Others

  1. module Admin::BaseHelper
  2.   include ActionView::Helpers::DateHelper
  3.   def subtabs_for(current_module)
  4.     output = []
  5.     AccessControl.project_module(current_user.profile.label, current_module).submenus.each_with_index do |m,i| 
  6.       current = 
  7.       output << subtab(_(m.name), (m.url[:controller] == params[:controller] && m.url[:action] == params[:action]) ? '' : m.url)
  8.     end     
  9.     content_for(:tasks) { output.join("n") }
  10.   end
  11.   def subtab(label, options = {})
  12.     return content_tag :li, "<span class='subtabs'>#{label}</span>" if options.empty?
  13.     content_tag :li, link_to(label, options)
  14.   end
  15.   def show_page_heading
  16.     heading = ""
  17.     heading << content_tag(:div, @link_to_new, :class => 'page_new') unless @link_to_new.blank?
  18.     heading << content_tag(:h2, @page_heading, :class => 'page_heading') unless @page_heading.blank?
  19.     
  20.   end
  21.   def cancel(url = {:action => 'index'})
  22.     link_to _("Cancel"), url
  23.   end
  24.   def save(val = _("Store"))
  25.     '<input type="submit" value="' + val + '" class="save" />'
  26.   end
  27.   def confirm_delete(val = _("Delete"))
  28.    '<input type="submit" value="' + val + '" />'
  29.   end
  30.   def link_to_edit(label, record, controller = @controller.controller_name)
  31.     link_to label, :controller => controller, :action => 'edit', :id => record.id
  32.   end
  33.   
  34.   def link_to_edit_with_profiles(label, record, controller = @controller.controller_name)
  35.     if current_user.admin? || current_user.id == record.user_id
  36.       link_to label, :controller => controller, :action => 'edit', :id => record.id 
  37.     end
  38.   end
  39.   def link_to_destroy(record, controller = @controller.controller_name)
  40.     link_to image_tag('admin/delete.png', :alt => _("delete"), :title => _("Delete content")),
  41.       :controller => controller, :action => 'destroy', :id => record.id
  42.   end
  43.   def link_to_destroy_with_profiles(record, controller = @controller.controller_name)
  44.     if current_user.admin? || current_user.id == record.user_id
  45.       link_to(_("delete"), 
  46.         { :controller => controller, :action => 'destroy', :id => record.id }, :confirm => _("Are you sure?"), :method => :post, :title => _("Delete content"))
  47.       end
  48.   end
  49.   def text_filter_options
  50.     TextFilter.find(:all).collect do |filter|
  51.       [ filter.description, filter ]
  52.     end
  53.   end
  54.   def text_filter_options_with_id
  55.     TextFilter.find(:all).collect do |filter|
  56.       [ filter.description, filter.id ]
  57.     end
  58.   end
  59.   def alternate_class
  60.     @class = @class != '' ? '' : 'class="shade"'
  61.   end
  62.   def reset_alternation
  63.     @class = nil
  64.   end
  65.   def task_quickpost(title)
  66.     link_to_function(title, toggle_effect('quick-post', 'Effect.BlindUp', "duration:0.4", "Effect.BlindDown", "duration:0.4"))
  67.   end
  68.   def task_overview
  69.     content_tag :li, link_to(_('Back to overview'), :action => 'index')
  70.   end
  71.   def task_edit_resource_mime(title,id)
  72.     link_to_function(title, toggle_effect('edit-resource-mime-' + id.to_s, 'Effect.BlindUp', "duration:0.4", "Effect.BlindDown", "duration:0.4"))
  73.   end
  74.   def class_tab
  75.     'ui-state-default ui-corner-top'
  76.   end
  77.   def class_selected_tab
  78.     'ui-state-default ui-corner-top ui-tabs-selected ui-state-active'
  79.   end
  80.   def class_write
  81.     if controller.controller_name == "content" or controller.controller_name == "pages"
  82.       return class_selected_tab if controller.action_name == 'new' || controller.action_name == 'edit'
  83.     end
  84.     class_tab
  85.   end
  86.   
  87.   def class_content
  88.     if controller.controller_name  =~ /content|pages|categories|resources|feedback/
  89.       return class_selected_tab if controller.action_name =~ /list|index|show|article/
  90.     end
  91.     class_tab
  92.   end
  93.   def class_themes
  94.     return class_selected_tab if controller.controller_name  =~ /themes|sidebar/
  95.     class_tab
  96.   end
  97.   
  98.   def class_dashboard
  99.     return class_selected_tab if controller.controller_name  =~ /dashboard/ 
  100.     class_tab
  101.   end    
  102.   def class_settings
  103.     return class_selected_tab if controller.controller_name  =~ /settings|users/ 
  104.     class_tab
  105.   end
  106.   
  107.   def class_profile
  108.     return class_selected_tab if controller.controller_name  =~ /profiles/ 
  109.     class_tab
  110.   end
  111.   
  112.   def alternate_editor
  113.     return 'visual' if current_user.editor == 'simple'
  114.     return 'simple'
  115.   end
  116.   
  117.   def collection_select_with_current(object, method, collection, value_method, text_method, current_value, prompt=false)
  118.     result = "<select name='#{object}[#{method}]'>n" 
  119.       
  120.     if prompt == true
  121.       result << "<option value=''>" << _("Please select") << "</option>"
  122.     end
  123.     for element in collection
  124.       if current_value and current_value == element.send(value_method)
  125.         result << "<option value='#{element.send(value_method)}' selected='selected'>#{element.send(text_method)}</option>n" 
  126.       else
  127.         result << "<option value='#{element.send(value_method)}'>#{element.send(text_method)}</option>n" 
  128.       end
  129.     end
  130.     result << "</select>n" 
  131.     return result
  132.   end
  133.   def render_void_table(size, cols)
  134.     if size == 0
  135.       "<tr>n<td colspan=#{cols}>" + _("There are no %s yet. Why don't you start and create one?", _(controller.controller_name)) + "</td>n</tr>n"
  136.     end
  137.   end
  138.   
  139.   def cancel_or_save
  140.     result = '<p>'
  141.     result << cancel 
  142.     result << " "
  143.     result << _("or") 
  144.     result << " "
  145.     result << save( _("Save") + " &raquo")
  146.     result << '</p>'
  147.     return result
  148.   end
  149.   def show_actions item
  150.     html = <<-HTML 
  151.       <div class='action' style='margin-top: 10px;'>
  152.         <small>#{link_to _("Edit"), :action => 'edit', :id => item.id}</small> |
  153.         <small>#{link_to_published item}</small> |
  154.         <small>#{link_to _("Delete"), :action => 'destroy', :id => item.id}</small>
  155.     </div>
  156.     HTML
  157.   end
  158.     
  159.   def format_date(date)
  160.     date.strftime('%d/%m/%Y')
  161.   end
  162.     
  163.   def link_to_published(item)
  164.     return link_to_permalink(item,  _("Show"), '', 'published') if item.published
  165.     link_to(_("Preview"), {:controller => '/articles', :action => 'preview', :id => item.id}, {:class => 'unpublished', :target => '_new'})
  166.   end
  167.   
  168.   def published_or_not(item)
  169.     return "<small class='published'>#{_("Published")}</small>" if item.published
  170.     "<small class='unpublished'>#{_("Unpublished")}</small>"
  171.   end
  172.   
  173.   def macro_help_popup(macro, text)
  174.     unless current_user.editor == 'visual'
  175.       "<a rel='lightbox' href="#{url_for :controller => 'textfilters', :action => 'macro_help', :id => macro.short_name}" onclick="return popup(this, 'Typo Macro Help')">#{text}</a>"
  176.     end    
  177.   end
  178.   
  179.   def render_macros(macros)
  180.     result = link_to_function _("Show help on Typo macros") + " (+/-)",update_page { |page| page.visual_effect(:toggle_blind, "macros", :duration => 0.2) }
  181.     result << "<table id='macros' style='display: none;'>"
  182.     result << "<tr>"
  183.     result << "<th>#{_('Name')}</th>"
  184.     result << "<th>#{_('Description')}</th>"
  185.     result << "<th>#{_('Tag')}</th>"
  186.     result << "</tr>"
  187.     
  188.     for macro in macros.sort_by { |f| f.short_name }
  189.       result << "<tr #{alternate_class}>"
  190.       result << "<td>#{macro_help_popup macro, macro.display_name}</td>"
  191.       result << "<td>#{h macro.description}</td>"
  192.       result << "<td><code>&lt;typo:#{h macro.short_name}&gt;</code></td>"
  193.       result << "</tr>"
  194.     end
  195.     result << "</table>"
  196.   end
  197.   
  198.   def build_editor_link(label, action, id, update, editor)
  199.     link = link_to_remote(label, 
  200.             :url => { :action => action, 'editor' => editor}, 
  201.             :loading => "new Element.show('update_spinner_#{id}')",
  202.             :success => "new Element.toggle('update_spinner_#{id}')",
  203.             :update => "#{update}")
  204.     link << image_tag("spinner-blue.gif", :id => "update_spinner_#{id}", :style => 'display:none;')
  205.   end
  206.   def display_pagination(collection, cols)
  207.     if WillPaginate::ViewHelpers.total_pages_for_collection(collection) > 1
  208.       return "<tr><td colspan=#{cols} class='paginate'>#{will_paginate(collection)}</td></tr>"
  209.     end
  210.   end 
  211.   
  212.   def show_thumbnail_for_editor(image)
  213.     thumb = "#{RAILS_ROOT}/public/files/thumb_#{image.filename}"
  214.     picture = "#{this_blog.base_url}/files/#{image.filename}"
  215.     
  216.     image.create_thumbnail unless File.exists? thumb
  217.     
  218.     # If something went wrong with thumbnail generation, we just display a place holder
  219.     thumbnail = (File.exists? thumb) ? "#{this_blog.base_url}/files/thumb_#{image.filename}" : "#{this_blog.base_url}/images/thumb_blank.jpg" 
  220.     
  221.     picture = "<img class='tumb' src='#{thumbnail}' "
  222.     picture << "alt='#{this_blog.base_url}/files/#{image.filename}' "
  223.     picture << " onclick="edInsertImageFromCarousel('article_body_and_extended', '#{this_blog.base_url}/files/#{image.filename}');" />"
  224.     return picture
  225.   end
  226.   
  227. end