aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/help_page.rb
diff options
context:
space:
mode:
authorAlban Peignier2012-04-16 14:56:38 +0200
committerAlban Peignier2012-04-16 14:56:38 +0200
commitcda5d74c245e03c194996a3cfe5221785474d12b (patch)
treef43323e16d0d60c54e645db1ae1c63e1b4f611b1 /app/models/help_page.rb
parenta3b6f1c459e409023a1ef531e4f6f8084731a8f9 (diff)
downloadchouette-core-cda5d74c245e03c194996a3cfe5221785474d12b.tar.bz2
Manage help texts with a dedicated HelpController. Refs #12
Diffstat (limited to 'app/models/help_page.rb')
-rw-r--r--app/models/help_page.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/app/models/help_page.rb b/app/models/help_page.rb
new file mode 100644
index 000000000..1207c5198
--- /dev/null
+++ b/app/models/help_page.rb
@@ -0,0 +1,46 @@
+class HelpPage
+
+ attr_accessor :slug, :content, :data
+
+ def initialize(slug)
+ @slug = slug
+ @data = {}.with_indifferent_access
+ end
+
+ def filename
+ "#{Rails.root}/app/views/help/#{slug}.textile"
+ end
+
+ def exists?
+ File.exists? filename
+ end
+
+ def load
+ self.content = File.read(filename)
+ self.data ||= {}
+
+ if self.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
+ self.content = $POSTMATCH
+ self.data.merge! YAML.load($1)
+ end
+ end
+
+ def method_missing(method, *arguments)
+ if arguments.empty? and data.has_key?(method)
+ data[method]
+ else
+ super
+ end
+ end
+
+ def self.find(slug)
+ new(slug).tap do |page|
+ if page.exists?
+ page.load
+ else
+ raise ActiveRecord::RecordNotFound
+ end
+ end
+ end
+
+end