nesta-plugin-metadata-extensions 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/lib/nesta-plugin-metadata-extensions.rb +3 -0
- data/lib/nesta-plugin-metadata-extensions/init.rb +129 -0
- data/lib/nesta-plugin-metadata-extensions/version.rb +9 -0
- data/nesta-plugin-metadata-extensions.gemspec +22 -0
- metadata +101 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
@@ -0,0 +1,129 @@
|
|
1
|
+
module Nesta
|
2
|
+
module Plugin
|
3
|
+
module Metadata::Extensions
|
4
|
+
module Helpers
|
5
|
+
# If your plugin needs any helper methods, add them here...
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Config
|
11
|
+
# expose any definitions of a support contact
|
12
|
+
def self.support
|
13
|
+
environment_config = {}
|
14
|
+
%w[name uri email].each do |setting|
|
15
|
+
variable = "NESTA_SUPPORT__#{setting.upcase}"
|
16
|
+
ENV[variable] && environment_config[setting] = ENV[variable]
|
17
|
+
end
|
18
|
+
environment_config.empty? ? from_yaml("support") : environment_config
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class App
|
23
|
+
helpers Nesta::Plugin::Metadata::Extensions::Helpers
|
24
|
+
|
25
|
+
# Override not_found to include additional config variables
|
26
|
+
not_found do
|
27
|
+
set_common_variables
|
28
|
+
set_from_config(:support)
|
29
|
+
haml(:not_found)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Override error to include additional config variables
|
33
|
+
error do
|
34
|
+
set_common_variables
|
35
|
+
set_from_config(:support)
|
36
|
+
haml(:error)
|
37
|
+
end unless Nesta::App.development?
|
38
|
+
end
|
39
|
+
|
40
|
+
class Page
|
41
|
+
|
42
|
+
# Custom login to infer the page title, useful if you want to template
|
43
|
+
# the page heading
|
44
|
+
def full_title
|
45
|
+
@full_title ||= if inferred_heading
|
46
|
+
inferred_heading
|
47
|
+
elsif h1
|
48
|
+
h1
|
49
|
+
elsif menu_label
|
50
|
+
menu_label
|
51
|
+
else
|
52
|
+
"<unknown>"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# A label for this page to be used in menus
|
57
|
+
def menu_label
|
58
|
+
@menu_label ||= if metadata('menu label')
|
59
|
+
metadata('menu label')
|
60
|
+
elsif inferred_heading
|
61
|
+
inferred_heading
|
62
|
+
elsif h1
|
63
|
+
h1
|
64
|
+
else
|
65
|
+
"<unknown>"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def h1
|
70
|
+
metadata('h1')
|
71
|
+
end
|
72
|
+
|
73
|
+
def inferred_heading
|
74
|
+
regex = case @format
|
75
|
+
when :mdown
|
76
|
+
/^#\s*(.*?)(\s*#+|$)/
|
77
|
+
when :haml
|
78
|
+
/^\s*%h1\s+(.*)/
|
79
|
+
when :textile
|
80
|
+
/^\s*h1\.\s+(.*)/
|
81
|
+
end
|
82
|
+
markup =~ regex
|
83
|
+
Regexp.last_match(1)
|
84
|
+
end
|
85
|
+
|
86
|
+
def heading
|
87
|
+
full_title
|
88
|
+
end
|
89
|
+
|
90
|
+
def url
|
91
|
+
metadata('url')
|
92
|
+
end
|
93
|
+
|
94
|
+
def contact
|
95
|
+
metadata('contact')
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
module Navigation
|
101
|
+
module Renderers
|
102
|
+
# Override nesta's display_menu_item to show the menu attribute
|
103
|
+
# in the menu, if given
|
104
|
+
def display_menu_item(item, options = {})
|
105
|
+
if item.respond_to?(:each)
|
106
|
+
if (options[:levels] - 1) > 0
|
107
|
+
haml_tag :li do
|
108
|
+
display_menu(item, :levels => (options[:levels] - 1))
|
109
|
+
end
|
110
|
+
end
|
111
|
+
else
|
112
|
+
html_class = (request.path == item.abspath) ? "current" : nil
|
113
|
+
haml_tag :li, :class => html_class do
|
114
|
+
haml_tag :a, :<, :href => item.abspath do
|
115
|
+
haml_concat item.menu_label
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
# Override nesta's breadcrumb_label to show the menu attribute
|
122
|
+
# in the breadcrumbs, if given
|
123
|
+
def breadcrumb_label(page)
|
124
|
+
(page.abspath == '/') ? 'Home' : ( page.metadata('menu').nil? ? page.heading : page.metadata('menu') )
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "nesta-plugin-metadata-extensions/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "nesta-plugin-metadata-extensions"
|
7
|
+
s.version = Nesta::Plugin::Metadata::Extensions::VERSION
|
8
|
+
s.authors = ["Craig Rindt"]
|
9
|
+
s.email = ["crindt@gmail.com"]
|
10
|
+
s.homepage = "http://crindt.heroku.com"
|
11
|
+
s.summary = %q{Some simple extensions to expose and use more metadata in nesta.}
|
12
|
+
s.description = %q{Some simple extensions to expose and use more metadata in nesta.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "nesta-plugin-metadata-extensions"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.add_dependency("nesta", ">= 0.9.11")
|
21
|
+
s.add_development_dependency("rake")
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nesta-plugin-metadata-extensions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Craig Rindt
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-12-15 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: nesta
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 45
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 9
|
32
|
+
- 11
|
33
|
+
version: 0.9.11
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
description: Some simple extensions to expose and use more metadata in nesta.
|
51
|
+
email:
|
52
|
+
- crindt@gmail.com
|
53
|
+
executables: []
|
54
|
+
|
55
|
+
extensions: []
|
56
|
+
|
57
|
+
extra_rdoc_files: []
|
58
|
+
|
59
|
+
files:
|
60
|
+
- .gitignore
|
61
|
+
- Gemfile
|
62
|
+
- Rakefile
|
63
|
+
- lib/nesta-plugin-metadata-extensions.rb
|
64
|
+
- lib/nesta-plugin-metadata-extensions/init.rb
|
65
|
+
- lib/nesta-plugin-metadata-extensions/version.rb
|
66
|
+
- nesta-plugin-metadata-extensions.gemspec
|
67
|
+
homepage: http://crindt.heroku.com
|
68
|
+
licenses: []
|
69
|
+
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
hash: 3
|
81
|
+
segments:
|
82
|
+
- 0
|
83
|
+
version: "0"
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
hash: 3
|
90
|
+
segments:
|
91
|
+
- 0
|
92
|
+
version: "0"
|
93
|
+
requirements: []
|
94
|
+
|
95
|
+
rubyforge_project: nesta-plugin-metadata-extensions
|
96
|
+
rubygems_version: 1.8.10
|
97
|
+
signing_key:
|
98
|
+
specification_version: 3
|
99
|
+
summary: Some simple extensions to expose and use more metadata in nesta.
|
100
|
+
test_files: []
|
101
|
+
|