app/helpers/roroacms/general_helper.rb in roroacms-0.0.6.9 vs app/helpers/roroacms/general_helper.rb in roroacms-0.0.7

- old
+ new

@@ -1,145 +1,145 @@ -module Roroacms - module GeneralHelper - - # get a value from the theme yaml file by the key - # Params: - # +key+:: YAML key of the value that you want to retrive - - def theme_yaml(key = nil) - if File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml") - theme_yaml = YAML.load(File.read("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml")) - theme_yaml[key] - else - 'html.erb' - end - end - - # rewrite the theme helper to use the themes function file - - def rewrite_theme_helper - - if File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme_helper.rb") - - # get the theme helper from the theme folder - file = File.open("#{Rails.root}/app/views/themes/#{current_theme}/theme_helper.rb", "rb") - contents = file.read - - # check if the first line starts with the module name or not - parts = contents.split(/[\r\n]+/) - - if parts[0] != 'module ThemeHelper' - contents = "module ThemeHelper\n\n" + contents + "\n\nend" - end - - # write the contents to the actual file file - File.open("#{Rails.root}/app/helpers/theme_helper.rb", 'w') { |file| file.write(contents) } - - - else - contents = "module ThemeHelper\n\nend" - File.open("#{Rails.root}/app/helpers/theme_helper.rb", 'w') { |file| file.write(contents) } - end - - load("#{Rails.root}/app/helpers/theme_helper.rb") - end - - # do a check to see if theme has theme.yml file - - def check_theme_folder - if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml") - render :inline => I18n.t("helpers.general_helper.check_theme_folder.message") and return - end - end - - def check_necessaries - change = false - hash = {'theme.yml' => 'Y', 'layout.html.erb' => 'Y', 'page.html.erb' => 'Y'} - - if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml") - hash['theme.yml'] = 'N' - change = true - end - - if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/layout.html.erb") - hash['layout.html.erb'] = 'N' - change = true - end - - if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/page.html.erb") - hash['page.html.erb'] = 'N' - change = true - end - - change ? hash : nil - end - - # capitalizes all words in a string - # Params: - # +str+:: the string - - def ucwords(str = nil) - return '' if str.blank? - str.split(' ').select {|w| w.capitalize! || w }.join(' ') - end - - # set the session data for the admin to allow/restrict the necessary areas - - def set_sessions(session, admin) - session[:admin_id] = admin.id - session[:username] = admin.username - end - - # destroy the session data - logging them out of the admin panel - - def destroy_session(session) - session[:admin_id] = nil - session[:username] = nil - end - - # strips the url of all the variable data so that the URLs are always the same - # Params: - # +url+:: the URL that you want to strip down - - def strip_url(url) - - Setting.strip_url(url) - - end - - # reutrns a nested menu - # Params: - # +item+:: hash of menu items - # +text+:: the hash value that you want to use as the title text - - def nested_dropdown(items, text = 'post_title') - result = [] - items.map do |item, sub_items| - name = text == 'post_title' && !item.parent.blank? && item.parent.disabled == 'Y' ? item[text.to_sym] + " (parent: #{item.parent.post_title})" : item[text.to_sym] - result << [('- ' * item.depth) + name.html_safe, item[:id]] - result += nested_dropdown(sub_items, text) unless sub_items.blank? - end - result - end - - - # returns the closest revision to the current revision been displayed - this is an internal functon that no-body should have to worry about or touch - # Params: - # +revisions+:: ActiveRecord hash of revisions - # +current+:: integer of the current record - # +status+:: what status of the revisions you want to check against - - def get_closest_revision(revisions, current, status) - if status == 'user-autosave' - revisions.each_with_index do |f, index| - return f if f.post_status.downcase == 'user-autosave' && index > current - end - return nil - end - - return revisions[current+1] if !revisions[current+1].blank? - return revisions[0].parent - end - - end - +module Roroacms + module GeneralHelper + + # get a value from the theme yaml file by the key + # Params: + # +key+:: YAML key of the value that you want to retrive + + def theme_yaml(key = nil) + if File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml") + theme_yaml = YAML.load(File.read("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml")) + theme_yaml[key] + else + 'html.erb' + end + end + + # rewrite the theme helper to use the themes function file + + def rewrite_theme_helper + + if File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme_helper.rb") + + # get the theme helper from the theme folder + file = File.open("#{Rails.root}/app/views/themes/#{current_theme}/theme_helper.rb", "rb") + contents = file.read + + # check if the first line starts with the module name or not + parts = contents.split(/[\r\n]+/) + + if parts[0] != 'module ThemeHelper' + contents = "module ThemeHelper\n\n" + contents + "\n\nend" + end + + # write the contents to the actual file file + File.open("#{Rails.root}/app/helpers/theme_helper.rb", 'w') { |file| file.write(contents) } + + + else + contents = "module ThemeHelper\n\nend" + File.open("#{Rails.root}/app/helpers/theme_helper.rb", 'w') { |file| file.write(contents) } + end + + load("#{Rails.root}/app/helpers/theme_helper.rb") + end + + # do a check to see if theme has theme.yml file + + def check_theme_folder + if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml") + render :inline => I18n.t("helpers.general_helper.check_theme_folder.message") and return + end + end + + def check_necessaries + change = false + hash = {'theme.yml' => 'Y', 'layout.html.erb' => 'Y', 'page.html.erb' => 'Y'} + + if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/theme.yml") + hash['theme.yml'] = 'N' + change = true + end + + if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/layout.html.erb") + hash['layout.html.erb'] = 'N' + change = true + end + + if !File.exists?("#{Rails.root}/app/views/themes/#{current_theme}/page.html.erb") + hash['page.html.erb'] = 'N' + change = true + end + + change ? hash : nil + end + + # capitalizes all words in a string + # Params: + # +str+:: the string + + def ucwords(str = nil) + return '' if str.blank? + str.split(' ').select {|w| w.capitalize! || w }.join(' ') + end + + # set the session data for the admin to allow/restrict the necessary areas + + def set_sessions(session, admin) + session[:admin_id] = admin.id + session[:username] = admin.username + end + + # destroy the session data - logging them out of the admin panel + + def destroy_session(session) + session[:admin_id] = nil + session[:username] = nil + end + + # strips the url of all the variable data so that the URLs are always the same + # Params: + # +url+:: the URL that you want to strip down + + def strip_url(url) + + Setting.strip_url(url) + + end + + # reutrns a nested menu + # Params: + # +item+:: hash of menu items + # +text+:: the hash value that you want to use as the title text + + def nested_dropdown(items, text = 'post_title') + result = [] + items.map do |item, sub_items| + name = text == 'post_title' && !item.parent.blank? && item.parent.disabled == 'Y' ? item[text.to_sym] + " (parent: #{item.parent.post_title})" : item[text.to_sym] + result << [('- ' * item.depth) + name.html_safe, item[:id]] + result += nested_dropdown(sub_items, text) unless sub_items.blank? + end + result + end + + + # returns the closest revision to the current revision been displayed - this is an internal functon that no-body should have to worry about or touch + # Params: + # +revisions+:: ActiveRecord hash of revisions + # +current+:: integer of the current record + # +status+:: what status of the revisions you want to check against + + def get_closest_revision(revisions, current, status) + if status == 'user-autosave' + revisions.each_with_index do |f, index| + return f if f.post_status.downcase == 'user-autosave' && index > current + end + return nil + end + + return revisions[current+1] if !revisions[current+1].blank? + return revisions[0].parent + end + + end + end \ No newline at end of file