orange 0.2.6 → 0.2.7
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/README.markdown +1 -0
- data/lib/orange-core/middleware/restful_router.rb +63 -28
- data/lib/orange-core/middleware/route_context.rb +1 -1
- data/lib/orange-core/stack.rb +1 -1
- data/lib/orange-core/templates/exceptions.haml +1 -1
- data/lib/orange-more.rb +1 -0
- data/lib/orange-more/administration/assets/css/admin.css +12 -2
- data/lib/orange-more/administration/middleware/access_control.rb +1 -1
- data/lib/orange-more/administration/resources/user_resource.rb +1 -1
- data/lib/orange-more/adverts.rb +1 -0
- data/lib/orange-more/adverts/cartons/adverts_carton.rb +14 -0
- data/lib/orange-more/adverts/plugin.rb +13 -0
- data/lib/orange-more/adverts/resources/adverts_resource.rb +27 -0
- data/lib/orange-more/adverts/views/adverts/adverts.haml +2 -0
- data/lib/orange-more/assets/cartons/asset_carton.rb +1 -1
- data/lib/orange-more/assets/resources/asset_resource.rb +6 -1
- data/lib/orange-more/events/assets/js/events.js +55 -0
- data/lib/orange-more/events/cartons/orange_calendar.rb +1 -0
- data/lib/orange-more/events/cartons/orange_event.rb +8 -2
- data/lib/orange-more/events/plugin.rb +1 -1
- data/lib/orange-more/events/resources/calendar_resource.rb +21 -0
- data/lib/orange-more/events/resources/event_resource.rb +92 -7
- data/lib/orange-more/events/views/calendar/calendar.haml +5 -0
- data/lib/orange-more/events/views/events/create.haml +33 -1
- data/lib/orange-more/events/views/events/edit.haml +44 -11
- data/lib/orange-more/events/views/events/list.haml +13 -0
- data/lib/orange-more/events/views/events/table_row.haml +17 -0
- data/lib/orange-more/news/resources/news_resource.rb +3 -2
- data/lib/orange-more/pages/resources/page_resource.rb +18 -3
- data/lib/orange-more/pages/views/pages/edit.haml +7 -5
- data/lib/orange-more/pages/views/pages/show.haml +6 -0
- data/lib/orange-more/sitemap/resources/sitemap_resource.rb +17 -4
- data/lib/orange-more/sitemap/views/sitemap/breadcrumb.haml +5 -0
- data/lib/orange-more/sitemap/views/sitemap/one_level.haml +7 -0
- data/lib/orange-more/slices/resources/radius.rb +6 -0
- data/lib/orange-more/subsites/middleware/subsite_load.rb +1 -0
- data/lib/orange-more/subsites/resources/subsite_resource.rb +3 -0
- data/lib/orange-more/testimonials/cartons/testimonials_carton.rb +1 -1
- data/lib/orange-more/testimonials/resources/testimonials_resource.rb +16 -5
- metadata +15 -3
data/README.markdown
CHANGED
@@ -104,6 +104,7 @@ Required Gems
|
|
104
104
|
* openid_dm_store
|
105
105
|
* radius
|
106
106
|
* crack
|
107
|
+
* eventbright
|
107
108
|
|
108
109
|
All dependencies should be loaded if you install the gem except for the datamapper
|
109
110
|
adapter relevant to your set up. If, for example, you want to use a mysql database,
|
@@ -3,8 +3,9 @@ require 'orange-core/middleware/base'
|
|
3
3
|
module Orange::Middleware
|
4
4
|
class RestfulRouter < Base
|
5
5
|
def init(*args)
|
6
|
-
opts = args.extract_options!.with_defaults(:
|
7
|
-
@
|
6
|
+
opts = args.extract_options!.with_defaults(:restful_contexts => [:admin, :orange], :not_found => false, :exposed_actions => {:admin => :all, :orange => :all})
|
7
|
+
@exposed = opts[:exposed_actions]
|
8
|
+
@contexts = opts[:restful_contexts]
|
8
9
|
@not_found = opts[:not_found]
|
9
10
|
end
|
10
11
|
|
@@ -16,43 +17,77 @@ module Orange::Middleware
|
|
16
17
|
def packet_call(packet)
|
17
18
|
return (pass packet) if packet['route.router'] # Don't route if other middleware
|
18
19
|
# already has
|
19
|
-
|
20
|
-
|
21
|
-
parts
|
22
|
-
|
23
|
-
if
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
second = parts.shift
|
29
|
-
if second =~ /^\d+$/
|
30
|
-
packet['route.resource_id'] = second
|
31
|
-
if !parts.empty?
|
32
|
-
packet['route.resource_action'] = parts.shift.to_sym
|
33
|
-
end
|
34
|
-
else
|
35
|
-
packet['route.resource_action'] = second.to_sym
|
36
|
-
end
|
37
|
-
end # end check for second part
|
38
|
-
else
|
39
|
-
parts.unshift(resource)
|
40
|
-
end # end check for loaded resource
|
41
|
-
end # end check for nonempty route
|
20
|
+
parts = route_parts(packet)
|
21
|
+
if(should_route?(packet, parts))
|
22
|
+
# Take parts of route and set packet info
|
23
|
+
packet['route.resource'] = parts[:resource] if parts[:resource]
|
24
|
+
packet['route.resource_id'] = parts[:resource_id] if parts[:resource_id]
|
25
|
+
packet['route.resource_action'] = parts[:resource_action] if parts[:resource_action]
|
26
|
+
|
27
|
+
# Take remainder and set to resource_path
|
28
|
+
packet['route.resource_path'] = parts[:remainder]
|
42
29
|
|
30
|
+
# Set self as router if resource was found
|
43
31
|
if(packet['route.resource', false])
|
44
|
-
packet['route.resource_path'] = parts.unshift(pad).join('/')
|
45
32
|
packet['route.router'] = self
|
46
33
|
elsif(@not_found)
|
47
34
|
packet['route.resource'] = @not_found
|
48
|
-
packet['route.resource_path'] = parts.unshift(pad).join('/')
|
49
35
|
packet['route.router'] = self
|
50
36
|
end
|
51
|
-
end
|
37
|
+
end
|
52
38
|
|
53
39
|
pass packet
|
54
40
|
end
|
55
41
|
|
42
|
+
def route_parts(packet)
|
43
|
+
return_parts = {}
|
44
|
+
path = packet['route.path'] || packet.request.path_info
|
45
|
+
parts = path.split('/')
|
46
|
+
pad = parts.shift
|
47
|
+
if !parts.empty?
|
48
|
+
resource = parts.shift
|
49
|
+
if orange.loaded?(resource.to_sym)
|
50
|
+
return_parts[:resource] = resource.to_sym
|
51
|
+
if !parts.empty?
|
52
|
+
second = parts.shift
|
53
|
+
if second =~ /^\d+$/
|
54
|
+
return_parts[:resource_id] = second
|
55
|
+
if !parts.empty?
|
56
|
+
return_parts[:resource_action] = parts.shift.to_sym
|
57
|
+
else
|
58
|
+
return_parts[:resource_action] = :show
|
59
|
+
end
|
60
|
+
else
|
61
|
+
return_parts[:resource_action] = second.to_sym
|
62
|
+
end
|
63
|
+
else
|
64
|
+
return_parts[:resource_action] = :list
|
65
|
+
end # end check for second part
|
66
|
+
else
|
67
|
+
parts.unshift(resource)
|
68
|
+
end # end check for loaded resource
|
69
|
+
end # end check for nonempty route
|
70
|
+
return_parts[:remainder] = parts.unshift(pad).join('/')
|
71
|
+
return_parts
|
72
|
+
end
|
73
|
+
|
74
|
+
def should_route?(packet, parts)
|
75
|
+
return false unless @exposed.has_key?(packet['route.context'])
|
76
|
+
action_exposed?(@exposed[packet['route.context']], parts)
|
77
|
+
end
|
78
|
+
|
79
|
+
def action_exposed?(list, route_parts)
|
80
|
+
return true if list == :all
|
81
|
+
return true if list == route_parts[:resource_action]
|
82
|
+
return true if list.is_a?(Array) && list.include?(route_parts[:resource_action])
|
83
|
+
if list.is_a?(Hash)
|
84
|
+
all = list.has_key?(:all) ? action_exposed?(list[:all], route_parts) : false
|
85
|
+
one = list.has_key?(route_parts[:resource]) ? action_exposed?(list[route_parts[:resource]], route_parts) : false
|
86
|
+
return all || one
|
87
|
+
end
|
88
|
+
false
|
89
|
+
end
|
90
|
+
|
56
91
|
def route(packet)
|
57
92
|
resource = packet['route.resource']
|
58
93
|
raise 'resource not found' unless orange.loaded? resource
|
@@ -7,7 +7,7 @@ module Orange::Middleware
|
|
7
7
|
class RouteContext < Base
|
8
8
|
def initialize(app, core, *args)
|
9
9
|
opts = args.extract_options!
|
10
|
-
opts.with_defaults!(:contexts => [:live, :admin, :orange],
|
10
|
+
opts.with_defaults!(:contexts => [:preview, :live, :admin, :orange],
|
11
11
|
:default => :live,
|
12
12
|
:urls => {})
|
13
13
|
@app = app
|
data/lib/orange-core/stack.rb
CHANGED
@@ -140,12 +140,12 @@ module Orange
|
|
140
140
|
def routing(opts ={})
|
141
141
|
stack Orange::Middleware::RestfulRouter, opts.dup
|
142
142
|
Orange.plugins.each{|p| p.middleware(:routing).each{|m| stack m, opts.dup} if p.has_middleware?}
|
143
|
-
stack Orange::Middleware::FourOhFour, opts.dup
|
144
143
|
end
|
145
144
|
|
146
145
|
def postrouting(opts ={})
|
147
146
|
Orange.plugins.each{|p| p.middleware(:postrouting).each{|m| stack m, opts.dup} if p.has_middleware?}
|
148
147
|
stack Orange::Middleware::Template
|
148
|
+
stack Orange::Middleware::FourOhFour, opts.dup # Last ditch, send route to 404 page.
|
149
149
|
end
|
150
150
|
|
151
151
|
def responders(opts ={})
|
@@ -6,7 +6,7 @@
|
|
6
6
|
%html
|
7
7
|
%head
|
8
8
|
%meta{:name=>"robots", :content=>"NONE,NOARCHIVE"}
|
9
|
-
%title Orange
|
9
|
+
%title Orange raised #{h exception.class} at #{h path}
|
10
10
|
%link{:rel=>"stylesheet", :href=>"/assets/_orange_/css/exceptions.css", :type=>"text/css"}
|
11
11
|
%script{:type=>"text/javascript", :src=>"/assets/_orange_/js/exceptions.js"}
|
12
12
|
%body
|
data/lib/orange-more.rb
CHANGED
@@ -12,6 +12,7 @@ require File.join(libdir, 'orange-more', 'blog')
|
|
12
12
|
require File.join(libdir, 'orange-more', 'news')
|
13
13
|
require File.join(libdir, 'orange-more', 'disqus')
|
14
14
|
require File.join(libdir, 'orange-more', 'testimonials')
|
15
|
+
require File.join(libdir, 'orange-more', 'adverts')
|
15
16
|
require File.join(libdir, 'orange-more', 'cloud')
|
16
17
|
require File.join(libdir, 'orange-more', 'debugger')
|
17
18
|
require File.join(libdir, 'orange-more', 'subsites')
|
@@ -65,7 +65,7 @@ caption {background:#eee;}
|
|
65
65
|
.top {margin-top:0;padding-top:0;}
|
66
66
|
.bottom {margin-bottom:0;padding-bottom:0;}
|
67
67
|
li.nobullet {list-style-type: none;}
|
68
|
-
div.version_container {width:
|
68
|
+
div.version_container {width:377px;margin:2px 0;padding:10px;border:1px solid #CECECE;-moz-border-radius:4px;-webkit-border-radius:4px;background: #EFEFEF;}
|
69
69
|
span.version_info {padding: 0 5px;}
|
70
70
|
/* forms.css */
|
71
71
|
label {font-weight:bold;}
|
@@ -273,4 +273,14 @@ br.clear {
|
|
273
273
|
clear:both;
|
274
274
|
}
|
275
275
|
|
276
|
-
.sitemap_links_list{}
|
276
|
+
.sitemap_links_list{}
|
277
|
+
|
278
|
+
ul.version_list {
|
279
|
+
margin-left: 0;
|
280
|
+
padding-left: 0;
|
281
|
+
list-style-type: none;
|
282
|
+
}
|
283
|
+
|
284
|
+
ul.version_list li {
|
285
|
+
padding: 5px 0 0;
|
286
|
+
}
|
@@ -16,7 +16,7 @@ module Orange::Middleware
|
|
16
16
|
# @option opts [Boolean] :config_id Whether to use the id set in a config file
|
17
17
|
|
18
18
|
def init(opts = {})
|
19
|
-
defs = {:locked => [:admin, :orange], :login => '/login', :logout => '/logout',
|
19
|
+
defs = {:locked => [:preview, :admin, :orange], :login => '/login', :logout => '/logout',
|
20
20
|
:handle_login => true, :openid => true, :single_user => false}
|
21
21
|
opts = opts.with_defaults!(defs)
|
22
22
|
@openid = opts[:openid]
|
@@ -28,7 +28,7 @@ module Orange
|
|
28
28
|
def onSave(packet, obj, params ={})
|
29
29
|
sites = params.delete 'sites'
|
30
30
|
obj.update(params)
|
31
|
-
obj.orange_sites.
|
31
|
+
obj.orange_sites.delete_if{|i| true }
|
32
32
|
sites.each{|k,v| s = OrangeSite.first(:id => k); obj.orange_sites << s if s} if sites
|
33
33
|
obj.save
|
34
34
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require File.join('orange-more', 'adverts', 'plugin')
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Dir.glob(File.join(File.dirname(__FILE__), 'cartons', '*.rb')).each {|f| require f }
|
2
|
+
Dir.glob(File.join(File.dirname(__FILE__), 'resources', '*.rb')).each {|f| require f }
|
3
|
+
|
4
|
+
module Orange::Plugins
|
5
|
+
class Adverts < Base
|
6
|
+
views_dir File.join(File.dirname(__FILE__), 'views')
|
7
|
+
|
8
|
+
resource Orange::AdvertsResource.new
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
Orange.plugin(Orange::Plugins::Adverts.new)
|
13
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Orange
|
2
|
+
class AdvertsResource < Orange::ModelResource
|
3
|
+
use OrangeAdvert
|
4
|
+
call_me :adverts
|
5
|
+
def stack_init
|
6
|
+
orange[:admin, true].add_link("Content", :resource => @my_orange_name, :text => 'Advertisements')
|
7
|
+
orange[:radius].define_tag "adverts" do |tag|
|
8
|
+
if tag.attr["tag"] && model_class.with_tag(tag.attr["tag"]).count >0
|
9
|
+
m = model_class.with_tag(tag.attr["tag"]).first(:offset => rand(model_class.with_tag(tag.attr["tag"]).count)) #selects advert based on tag
|
10
|
+
elsif model_class.all.count > 0
|
11
|
+
m = model_class.first(:offset => rand(model_class.all.count)) #selects a random advert
|
12
|
+
end
|
13
|
+
unless m.nil?
|
14
|
+
template = tag.attr["template"] || "adverts"
|
15
|
+
orange[:adverts].advert(tag.locals.packet, {:model => m, :template => template})
|
16
|
+
else
|
17
|
+
""
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def advert(packet, opts = {})
|
23
|
+
template = opts[:template].to_sym || :adverts
|
24
|
+
do_view(packet, template, opts)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -6,7 +6,7 @@ module Orange
|
|
6
6
|
|
7
7
|
def stack_init
|
8
8
|
orange[:admin, true].add_link("Content", :resource => @my_orange_name, :text => 'Assets')
|
9
|
-
orange[:radius, true].
|
9
|
+
orange[:radius, true].define_tag "asset" do |tag|
|
10
10
|
if tag.attr['id']
|
11
11
|
(m = model_class.first(:id => tag.attr['id'])) ? m.to_asset_tag : 'Invalid Asset'
|
12
12
|
else
|
@@ -50,5 +50,10 @@ module Orange
|
|
50
50
|
end
|
51
51
|
m.destroy if m
|
52
52
|
end
|
53
|
+
|
54
|
+
def asset_html(packet, id)
|
55
|
+
m = model_class.get(id)
|
56
|
+
m ? m.to_asset_tag : false
|
57
|
+
end
|
53
58
|
end
|
54
59
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
$(function(){
|
2
|
+
$('.new-venue').hide();
|
3
|
+
$('.show-venue-details').toggle(venue_details_show, venue_details_hide);
|
4
|
+
$("#events-venue").change(function(){
|
5
|
+
if($(this).val() == "new"){
|
6
|
+
venue_details_blank();
|
7
|
+
if($('.new-venue').css('display') == 'none') $('.show-venue-details').click();
|
8
|
+
}
|
9
|
+
else{
|
10
|
+
load_venue_details($(this).val());
|
11
|
+
}
|
12
|
+
});
|
13
|
+
$('input[name*=link_to_eventbrite]').change(function(){
|
14
|
+
if($(this).attr('checked')){
|
15
|
+
$('p.eventbrite-link').show();
|
16
|
+
}
|
17
|
+
else{
|
18
|
+
$('p.eventbrite-link').hide();
|
19
|
+
}
|
20
|
+
});
|
21
|
+
$('#events-eventbrite-id').change(function(){
|
22
|
+
load_event_details($(this).val());
|
23
|
+
});
|
24
|
+
$("input[name*='location']").change(function(){$("#events-venue").val("new")});
|
25
|
+
});
|
26
|
+
|
27
|
+
function venue_details_show(){
|
28
|
+
$('.show-venue-details').text('Hide');
|
29
|
+
$('.new-venue').show();
|
30
|
+
}
|
31
|
+
|
32
|
+
function venue_details_hide(){
|
33
|
+
$('.show-venue-details').text('(Details)');
|
34
|
+
$('.new-venue').hide();
|
35
|
+
}
|
36
|
+
|
37
|
+
function load_venue_details(id){
|
38
|
+
var obj = venues[id];
|
39
|
+
$("input[name*=location_name]").val(obj.name);
|
40
|
+
$("input[name*=location_address]").val(obj.address);
|
41
|
+
$("input[name*=location_address2]").val(obj.address_2);
|
42
|
+
$("input[name*=location_city]").val(obj.city);
|
43
|
+
$("input[name*=location_state]").val(obj.region);
|
44
|
+
$("input[name*=location_zip]").val(obj.postal_code);
|
45
|
+
}
|
46
|
+
|
47
|
+
function load_event_details(id){
|
48
|
+
var obj = events[id];
|
49
|
+
$("input[name*='events[name]']").val(obj.title);
|
50
|
+
$("textarea[name*=description]").val(obj.description);
|
51
|
+
}
|
52
|
+
|
53
|
+
function venue_details_blank(){
|
54
|
+
$("input[name*='location']").val('');
|
55
|
+
}
|
@@ -8,6 +8,9 @@ class OrangeEvent < Orange::Carton
|
|
8
8
|
text :location_city
|
9
9
|
text :location_state
|
10
10
|
text :location_zip
|
11
|
+
boolean :link_to_eventbrite, :default => false
|
12
|
+
text :eventbrite_id
|
13
|
+
fulltext :blurb
|
11
14
|
fulltext :description
|
12
15
|
end
|
13
16
|
orange do
|
@@ -31,9 +34,12 @@ class OrangeEvent < Orange::Carton
|
|
31
34
|
time_attr(attribute, false, datestr)
|
32
35
|
end
|
33
36
|
|
37
|
+
def attribute_time_get(attribute)
|
38
|
+
attribute_get(attribute) || Time.now
|
39
|
+
end
|
34
40
|
def time_attr(attribute, timestr = false, datestr = false)
|
35
|
-
date = datestr ||
|
36
|
-
time = timestr ||
|
41
|
+
date = datestr || attribute_time_get(attribute).strftime("%m/%d/%Y")
|
42
|
+
time = timestr || attribute_time_get(attribute).strftime("%I:%M %p")
|
37
43
|
attribute_set(attribute, Time.parse(date + " " + time))
|
38
44
|
end
|
39
45
|
|
@@ -4,7 +4,7 @@ Dir.glob(File.join(File.dirname(__FILE__), 'resources', '*.rb')).each {|f| requi
|
|
4
4
|
module Orange::Plugins
|
5
5
|
class Events < Base
|
6
6
|
views_dir File.join(File.dirname(__FILE__), 'views')
|
7
|
-
|
7
|
+
assets_dir File.join(File.dirname(__FILE__), 'assets')
|
8
8
|
resource Orange::CalendarResource.new
|
9
9
|
resource Orange::EventResource.new
|
10
10
|
end
|
@@ -2,6 +2,27 @@ module Orange
|
|
2
2
|
class CalendarResource < ModelResource
|
3
3
|
use OrangeCalendar
|
4
4
|
call_me :calendar
|
5
|
+
def stack_init
|
6
|
+
orange[:admin, true].add_link("Settings", :resource => @my_orange_name, :text => 'Calendars')
|
7
|
+
orange[:radius].define_tag "calendar" do |tag|
|
8
|
+
template = tag.attr["template"] || false
|
9
|
+
if tag.attr["name"]
|
10
|
+
calendars = tag.attr["name"].split.map{|x| model_class.first(:name => x)}
|
11
|
+
unless tag.attr["main"] && tag.attr["main"] == "false"
|
12
|
+
calendars << model_class.all(:main => true)
|
13
|
+
end
|
14
|
+
else
|
15
|
+
calendars = model_class.all
|
16
|
+
end
|
17
|
+
events = OrangeEvent.all(:calendar => calendars, :order => [:starts.asc], :limit => 10)
|
18
|
+
orange[:calendar].calendar(tag.locals.packet, {:list => events, :template => template})
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def calendar(packet, opts = {})
|
23
|
+
template = (opts[:template] || "calendar").to_sym
|
24
|
+
do_list_view(packet, template, opts)
|
25
|
+
end
|
5
26
|
|
6
27
|
def afterNew(packet, obj, opts = {})
|
7
28
|
obj.orange_site = packet['site'] unless obj.orange_site
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require '
|
2
|
-
|
1
|
+
require 'eventbright'
|
2
|
+
require 'json'
|
3
3
|
module Orange
|
4
4
|
class EventResource < ModelResource
|
5
5
|
# For integration with Eventbrite. Application key needs user
|
@@ -10,19 +10,96 @@ module Orange
|
|
10
10
|
call_me :events
|
11
11
|
|
12
12
|
def stack_init
|
13
|
+
orange[:admin, true].add_link("Content", :resource => @my_orange_name, :text => 'Events')
|
14
|
+
EventBright.setup(ORANGE_EVENTBRITE_KEY)
|
13
15
|
options[:eventbrite_key] = orange.options['eventbrite_key'] || false
|
14
16
|
end
|
15
17
|
|
18
|
+
def eventbrite_user
|
19
|
+
return false unless options[:eventbrite_key]
|
20
|
+
begin
|
21
|
+
@eventbrite_user = EventBright::User.new(options[:eventbrite_key])
|
22
|
+
rescue # If EventBright gem throws error, we're probably having issues connecting
|
23
|
+
false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
16
27
|
def find_extras(packet, mode, opts = {})
|
17
28
|
extras = {:calendars => OrangeCalendar.all}
|
18
29
|
case mode
|
19
|
-
when :create
|
30
|
+
when :create, :edit
|
20
31
|
ev = eventbrite_venues
|
21
|
-
|
32
|
+
ee = eventbrite_events
|
33
|
+
ev_json = {} if ev
|
34
|
+
ev.each{|v| ev_json[v.id] = v.attributes.merge(:id => v.id)} if ev
|
35
|
+
ee_json = {} if ee
|
36
|
+
ee.each{|v| ee_json[v.id] = v.attributes.merge(:id => v.id)} if ee
|
37
|
+
extras.merge!(:eventbrite_venues => ev, :venues_json => ev_json.to_json,
|
38
|
+
:eventbrite_events => ee, :events_json => ee_json.to_json
|
39
|
+
) if options[:eventbrite_key]
|
40
|
+
|
22
41
|
end
|
23
42
|
extras
|
24
43
|
end
|
25
44
|
|
45
|
+
def beforeNew(packet, params = {})
|
46
|
+
eventbrite_synchronize(packet, params)
|
47
|
+
end
|
48
|
+
|
49
|
+
def beforeSave(packet, model, params = {})
|
50
|
+
eventbrite_synchronize(packet, params)
|
51
|
+
end
|
52
|
+
|
53
|
+
def eventbrite_synchronize(packet, params = {})
|
54
|
+
venue_id = params.delete('orange_venue_id')
|
55
|
+
if params['link_to_eventbrite'] != "0"
|
56
|
+
if venue_id == "new"
|
57
|
+
v = EventBright::Venue.new(eventbrite_user)
|
58
|
+
v.organizer_id = eventbrite_user.organizers.first.id
|
59
|
+
else
|
60
|
+
v = eventbrite_user.venues.select{|v| v.id == venue_id.to_i }.first
|
61
|
+
end
|
62
|
+
update_venue(v, params)
|
63
|
+
if params['eventbrite_id'] == "new"
|
64
|
+
e = EventBright::Event.new(eventbrite_user)
|
65
|
+
e.organizer = eventbrite_user.organizers.first
|
66
|
+
else
|
67
|
+
e = eventbrite_user.events.select{|e| e.id == params['eventbrite_id'].to_i }.first
|
68
|
+
end
|
69
|
+
params['eventbrite_id'] = update_event(e, params, v)
|
70
|
+
else
|
71
|
+
params['eventbrite_id'] = nil
|
72
|
+
end
|
73
|
+
params
|
74
|
+
end
|
75
|
+
|
76
|
+
def update_event(event, params, venue)
|
77
|
+
event.venue = venue
|
78
|
+
event.title = params["name"]
|
79
|
+
event.description = params["description"]
|
80
|
+
event.start_date = params["starts_date"] + " " + params["starts_time"]
|
81
|
+
event.end_date = params["ends_date"] + " " + params["ends_time"]
|
82
|
+
if(event.start_date > event.end_date)
|
83
|
+
raise "An event can't end before it starts."
|
84
|
+
else
|
85
|
+
event.status = "live"
|
86
|
+
event.save
|
87
|
+
end
|
88
|
+
return event.id
|
89
|
+
end
|
90
|
+
|
91
|
+
def update_venue(venue, params)
|
92
|
+
venue.name = params["location_name"]
|
93
|
+
venue.address = params["location_address"]
|
94
|
+
venue.address_2 = params["location_address2"]
|
95
|
+
venue.city = params["location_city"]
|
96
|
+
venue.region = params["location_state"]
|
97
|
+
venue.postal_code = params["location_zip"]
|
98
|
+
venue.country_code = "US"
|
99
|
+
venue.save
|
100
|
+
end
|
101
|
+
|
102
|
+
|
26
103
|
def post_to_eventbrite
|
27
104
|
|
28
105
|
end
|
@@ -30,9 +107,17 @@ module Orange
|
|
30
107
|
def eventbrite_venues
|
31
108
|
list = []
|
32
109
|
begin
|
33
|
-
|
34
|
-
|
35
|
-
|
110
|
+
list = eventbrite_user.venues
|
111
|
+
rescue
|
112
|
+
return false
|
113
|
+
end
|
114
|
+
list
|
115
|
+
end
|
116
|
+
|
117
|
+
def eventbrite_events
|
118
|
+
list = []
|
119
|
+
begin
|
120
|
+
list = eventbrite_user.events
|
36
121
|
rescue
|
37
122
|
return false
|
38
123
|
end
|
@@ -1,6 +1,38 @@
|
|
1
|
+
- packet.add_js('events.js', :module => '_events_')
|
1
2
|
%form{:action => "#{packet.route_to(model_name, 'new')}", :method => 'post'}
|
2
|
-
- for prop in props
|
3
|
+
- for prop in props.reject{|v| v[:name].to_s =~ /location_/ || v[:name].to_s =~ /eventbrite/}
|
3
4
|
%p= view_attribute(prop, model_name, :label => true)
|
5
|
+
%fieldset
|
6
|
+
%legend Venue
|
7
|
+
%p
|
8
|
+
%select{:id => "#{model_name}-venue", :name => "#{model_name}[orange_venue_id]"}
|
9
|
+
%option(disabled) Choose a venue
|
10
|
+
- for venue in eventbrite_venues
|
11
|
+
%option{:value => venue.id}= venue.name
|
12
|
+
%option{:value => "new"} New...
|
13
|
+
%a.show-venue-details{:href=>"#"} (Details)
|
14
|
+
.new-venue
|
15
|
+
:javascript
|
16
|
+
var venues = #{venues_json};
|
17
|
+
- for prop in props.select{|v| v[:name].to_s =~ /location_/}
|
18
|
+
%p= view_attribute(prop, model_name, :label => true)
|
19
|
+
%fieldset
|
20
|
+
%legend EventBrite
|
21
|
+
%p
|
22
|
+
%label Link to EventBrite?
|
23
|
+
%input(type="hidden" value="0" name="events[link_to_eventbrite]")
|
24
|
+
%input(type="checkbox" value="1" name="events[link_to_eventbrite]")
|
25
|
+
%p.eventbrite-link(style="display:none;")
|
26
|
+
:javascript
|
27
|
+
var events = #{events_json};
|
28
|
+
%label Which EventBrite Event?
|
29
|
+
%br
|
30
|
+
%select{:id => "#{model_name}-eventbrite-id", :name => "#{model_name}[eventbrite_id]"}
|
31
|
+
%optgroup(label="Create a new event")
|
32
|
+
%option{:value => "new"} New...
|
33
|
+
%optgroup(label="Existing event")
|
34
|
+
- for event in eventbrite_events
|
35
|
+
%option{:value => event.id}= event.title
|
4
36
|
%p
|
5
37
|
%label{:for => "#{model_name}-calendar"} Calendar
|
6
38
|
%br
|
@@ -1,25 +1,58 @@
|
|
1
|
-
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
-if model
|
2
|
+
- my_event = eventbrite_events.select{|e| e.id == model.eventbrite_id.to_i }.first || nil
|
3
|
+
- packet.add_js('events.js', :module => '_events_')
|
4
|
+
%form{:action => "#{packet.route_to(model_name, model[:id], 'save')}", :method => 'post'}
|
5
|
+
- for prop in props.reject{|v| v[:name].to_s =~ /location_/ || v[:name].to_s =~ /eventbrite/}
|
6
|
+
%p= view_attribute(prop, model_name, :label => true, :value => model.attribute_get(prop[:name]))
|
7
|
+
%fieldset
|
8
|
+
%legend Venue
|
9
|
+
%p
|
10
|
+
%select{:id => "#{model_name}-venue", :name => "#{model_name}[orange_venue_id]"}
|
11
|
+
%option(disabled) Choose a venue
|
12
|
+
- for venue in eventbrite_venues
|
13
|
+
%option{:value => venue.id, :selected => ((my_event && (venue.id == my_event.venue.id)) || venue.name == model.location_name)}= venue.name
|
14
|
+
%option{:value => "new"} New...
|
15
|
+
%a.show-venue-details{:href=>"#"} (Details)
|
16
|
+
.new-venue
|
17
|
+
:javascript
|
18
|
+
var venues = #{venues_json};
|
19
|
+
- for prop in props.select{|v| v[:name].to_s =~ /location_/}
|
20
|
+
%p= view_attribute(prop, model_name, :label => true, :value => model.attribute_get(prop[:name]))
|
21
|
+
%fieldset
|
22
|
+
%legend EventBrite
|
23
|
+
%p
|
24
|
+
%label Link to EventBrite?
|
25
|
+
%input(type="hidden" value="0" name="events[link_to_eventbrite]")
|
26
|
+
%input{:type=>"checkbox", :value=>"1", :name=>"events[link_to_eventbrite]", :checked=>(model.link_to_eventbrite ? true : false)}
|
27
|
+
%p.eventbrite-link{:style => (model.link_to_eventbrite ? "" : "display:none;")}
|
28
|
+
:javascript
|
29
|
+
var events = #{events_json};
|
30
|
+
%label Which EventBrite Event?
|
31
|
+
%br
|
32
|
+
%select{:id => "#{model_name}-eventbrite-id", :name => "#{model_name}[eventbrite_id]"}
|
33
|
+
%optgroup(label="Create a new event")
|
34
|
+
%option{:value => "new"} New...
|
35
|
+
%optgroup(label="Existing event")
|
36
|
+
- for event in eventbrite_events
|
37
|
+
%option{:value => event.id, :selected => (my_event && (my_event.id == event.id))}= event.title
|
5
38
|
%p
|
6
39
|
%label{:for => "#{model_name}-calendar"} Calendar
|
7
40
|
%br
|
8
41
|
%select{:id => "#{model_name}-calendar", :name => "#{model_name}[orange_calendar_id]"}
|
9
42
|
- for calendar in calendars
|
10
|
-
%option{:value => calendar.id}= calendar.name
|
43
|
+
%option{:value => calendar.id, :selected => (model.calendar.id == calendar.id)}= calendar.name
|
11
44
|
%p
|
12
45
|
%label{:for => "#{model_name}-starts"} Starts
|
13
46
|
%br
|
14
|
-
%input{:type => 'text', :id => "#{model_name}-starts", :
|
47
|
+
%input{:type => 'text', :id => "#{model_name}-starts", :class => 'date', :name => "#{model_name}[starts_date]", :size => 10, :value => model.starts_date }
|
15
48
|
at
|
16
|
-
%input{:type => 'text', :name => "#{model_name}[starts_time]", :size => 8, :value => model.starts_time}
|
49
|
+
%input{:type => 'text', :name => "#{model_name}[starts_time]", :size => 8, :value => model.starts_time }
|
17
50
|
%p
|
18
51
|
%label{:for => "#{model_name}-ends"} Ends
|
19
52
|
%br
|
20
|
-
%input{:type => 'text', :id => "#{model_name}-ends", :size => 10, :class => 'date', :name => "#{model_name}[ends_date]", :value => model.ends_date}
|
53
|
+
%input{:type => 'text', :id => "#{model_name}-ends", :size => 10, :class => 'date', :name => "#{model_name}[ends_date]", :value => model.ends_date }
|
21
54
|
at
|
22
|
-
%input{:type => 'text', :name => "#{model_name}[ends_time]", :size => 8, :value => model.ends_time}
|
23
|
-
%input{:type => 'submit', :value => 'Save
|
55
|
+
%input{:type => 'text', :name => "#{model_name}[ends_time]", :size => 8, :value => model.ends_time }
|
56
|
+
%input{:type => 'submit', :value => 'Save Event'}
|
24
57
|
- else
|
25
|
-
%p Couldn't find the
|
58
|
+
%p Couldn't find the event.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
- if model
|
2
|
+
%tr
|
3
|
+
%td= model.name
|
4
|
+
%td= model.description
|
5
|
+
%td= model.location_name
|
6
|
+
%td= model.calendar.blank? ? "None" : model.calendar.name
|
7
|
+
%td
|
8
|
+
- if model.link_to_eventbrite
|
9
|
+
- if model.eventbrite_id && model.eventbrite_id != "new"
|
10
|
+
%a{:href => "http://www.eventbrite.com/myevent?eid="+model.eventbrite_id}= model.name
|
11
|
+
- else
|
12
|
+
N/A
|
13
|
+
- else
|
14
|
+
N/A
|
15
|
+
%td.actions
|
16
|
+
= form_link('Delete', route_to(model_name, model.id, 'delete'), 'Are you sure you want to delete this?', {:method => 'delete'})
|
17
|
+
%a{:href => route_to(model_name, model.id, 'edit')} Edit
|
@@ -36,9 +36,10 @@ module Orange
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
def latest(packet)
|
39
|
+
def latest(packet, opts = {})
|
40
|
+
limit = packet['news.latest_news_limit', 3]
|
40
41
|
do_list_view(packet, :latest, {
|
41
|
-
:list => model_class.all(:order => :created_at.desc, :limit =>
|
42
|
+
:list => model_class.all(:order => :created_at.desc, :limit => limit)
|
42
43
|
})
|
43
44
|
end
|
44
45
|
|
@@ -36,7 +36,8 @@ module Orange
|
|
36
36
|
def publish(packet, opts = {})
|
37
37
|
no_reroute = opts[:no_reroute]
|
38
38
|
if packet.request.post? || !opts.blank?
|
39
|
-
|
39
|
+
my_id = opts[:resource_id] || packet['route.resource_id']
|
40
|
+
m = model_class.get(my_id)
|
40
41
|
if m
|
41
42
|
params = {}
|
42
43
|
params[:published] = true
|
@@ -56,7 +57,7 @@ module Orange
|
|
56
57
|
def onNew(packet, params = {})
|
57
58
|
params[:published] = false
|
58
59
|
m = model_class.new(params)
|
59
|
-
m.orange_site = packet['site']
|
60
|
+
m.orange_site = packet['site'] unless m.orange_site
|
60
61
|
# m.versions.new(params.merge(:version => 1))
|
61
62
|
m
|
62
63
|
end
|
@@ -66,7 +67,7 @@ module Orange
|
|
66
67
|
def onSave(packet, m, params = {})
|
67
68
|
params[:published] = false
|
68
69
|
m.update(params)
|
69
|
-
m.orange_site = packet['site']
|
70
|
+
m.orange_site = packet['site'] unless m.orange_site
|
70
71
|
m.save
|
71
72
|
end
|
72
73
|
|
@@ -91,6 +92,16 @@ module Orange
|
|
91
92
|
m.attributes = attrs
|
92
93
|
end
|
93
94
|
end
|
95
|
+
if mode == :show
|
96
|
+
case packet['route.context']
|
97
|
+
when :live
|
98
|
+
m = m.versions.last(:published => '1')
|
99
|
+
raise Orange::NotFoundException unless m
|
100
|
+
when :preview
|
101
|
+
m
|
102
|
+
end
|
103
|
+
else {}
|
104
|
+
end
|
94
105
|
m
|
95
106
|
end
|
96
107
|
|
@@ -105,5 +116,9 @@ module Orange
|
|
105
116
|
def sitemap_row(packet, opts = {})
|
106
117
|
do_view(packet, :sitemap_row, opts)
|
107
118
|
end
|
119
|
+
|
120
|
+
def route_for(packet, id, opts = {})
|
121
|
+
return orange[:sitemap].url_for(packet, {:resource => 'pages', :resource_id => id})
|
122
|
+
end
|
108
123
|
end
|
109
124
|
end
|
@@ -4,19 +4,21 @@
|
|
4
4
|
%form{:action => route_to(model_name, model[:id], 'save'), :method => 'post'}
|
5
5
|
- for prop in props
|
6
6
|
%p~ view_attribute(prop, model_name, :label => true, :value => model.attribute_get(prop[:name]))
|
7
|
+
%a{:href => route_to(model_name, model['id'], {:context => 'preview', :mode => 'show'}), :rel => 'external', :target => "_blank"}Preview
|
7
8
|
%input{:type => 'submit', :value => 'Save Changes'}
|
8
|
-
= route_to(model_name, model[:id], 'publish')
|
9
|
+
/ = route_to(model_name, model[:id], 'publish')
|
9
10
|
= form_link('Publish', packet.route_to(model_name, model[:id], 'publish'))
|
10
|
-
%h3 Versions
|
11
|
-
%ul
|
12
|
-
%li (Current Draft)
|
11
|
+
%h3 Published Versions
|
12
|
+
%ul.version_list
|
13
|
+
/ %li (Current Draft)
|
13
14
|
- for version in model.versions.all(:order => :version.desc, :limit=> 3)
|
14
15
|
%li
|
15
16
|
.version_container
|
16
17
|
%span.version_info
|
17
18
|
%strong Version #{version.version}
|
18
19
|
%span.version_info
|
19
|
-
Last Updated:
|
20
|
+
Last Updated:
|
21
|
+
%strong #{fuzzy_time(version.updated_at)}
|
20
22
|
%span.version_info
|
21
23
|
%a{:href => route_to(model_name, model[:id], 'edit', "version", version.version)}Edit
|
22
24
|
- else
|
@@ -110,8 +110,19 @@ module Orange
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
-
def
|
114
|
-
|
113
|
+
def one_level(packet, opts = {})
|
114
|
+
opts.with_defaults!(:model => home(packet))
|
115
|
+
do_view(packet, :one_level, opts)
|
116
|
+
end
|
117
|
+
|
118
|
+
def two_level(packet, opts = {})
|
119
|
+
opts.with_defaults!(:model => home(packet))
|
120
|
+
do_view(packet, :two_level, opts)
|
121
|
+
end
|
122
|
+
|
123
|
+
def breadcrumb(packet, opts = {})
|
124
|
+
opts.with_defaults!(:model => packet['route.route'])
|
125
|
+
do_view(packet, :breadcrumb, opts)
|
115
126
|
end
|
116
127
|
|
117
128
|
def routes_for(packet, opts = {})
|
@@ -119,6 +130,7 @@ module Orange
|
|
119
130
|
keys[:resource] = opts[:resource] || packet['route.resource']
|
120
131
|
keys[:resource_id] = opts[:resource_id] || packet['route.resource_id']
|
121
132
|
keys[:orange_site_id] = opts[:orange_site_id] || packet['subsite'].blank? ? packet['site'].id : packet['subsite'].id
|
133
|
+
keys[:slug] = opts[:slug]
|
122
134
|
keys.delete_if{|k,v| v.blank? }
|
123
135
|
model_class.all(keys)
|
124
136
|
end
|
@@ -133,9 +145,10 @@ module Orange
|
|
133
145
|
|
134
146
|
def add_route_for(packet, opts = {})
|
135
147
|
unless opts.blank?
|
148
|
+
parent = opts.delete(:parent) || home(packet, opts)
|
136
149
|
me = model_class.new(opts)
|
137
150
|
me.save
|
138
|
-
me.move(:into =>
|
151
|
+
me.move(:into => parent)
|
139
152
|
end
|
140
153
|
end
|
141
154
|
|
@@ -180,7 +193,7 @@ module Orange
|
|
180
193
|
def table_row(packet, opts ={})
|
181
194
|
opts[:route] = opts[:model] || find_one(packet, :table_row, opts[:id])
|
182
195
|
resource = opts[:route].resource
|
183
|
-
resource = resource.to_sym
|
196
|
+
resource = resource.to_sym unless resource.blank?
|
184
197
|
if resource && orange[resource].respond_to?(:sitemap_row)
|
185
198
|
opts.delete(:model)
|
186
199
|
orange[resource].sitemap_row(packet, opts.merge(:resource_name => resource, :id => opts[:route].resource_id))
|
@@ -7,6 +7,7 @@ module Orange
|
|
7
7
|
call_me :radius
|
8
8
|
def afterLoad
|
9
9
|
@context = ::Radius::PacketContext.new
|
10
|
+
@defined_tags = []
|
10
11
|
orange.fire(:radius_loaded, self)
|
11
12
|
end
|
12
13
|
|
@@ -14,7 +15,12 @@ module Orange
|
|
14
15
|
@context
|
15
16
|
end
|
16
17
|
|
18
|
+
def defined_tags
|
19
|
+
@defined_tags
|
20
|
+
end
|
21
|
+
|
17
22
|
def define_tag(*args, &block)
|
23
|
+
@defined_tags << args.first unless @defined_tags.include? args.first
|
18
24
|
@context.define_tag(*args, &block)
|
19
25
|
end
|
20
26
|
|
@@ -15,6 +15,7 @@ module Orange::Middleware
|
|
15
15
|
# If matched, update the loaded site and trim the path down a bit
|
16
16
|
if !matched.resource.blank? && matched.resource.to_sym == :subsites
|
17
17
|
if(m = site.subsites.first(:id => matched.resource_id))
|
18
|
+
packet['route.main_site_route'] = matched
|
18
19
|
packet['route.path'] = extras
|
19
20
|
packet['subsite'] = m
|
20
21
|
end
|
@@ -27,6 +27,9 @@ module Orange
|
|
27
27
|
orange[:sitemap].url_for(packet, {:resource => 'subsites', :resource_id => packet['subsite'].id})
|
28
28
|
end
|
29
29
|
|
30
|
+
def subsite_nav(packet, opts = {})
|
31
|
+
orange[:sitemap].one_level(packet, :model => orange[:sitemap].home(packet, :subsite => true))
|
32
|
+
end
|
30
33
|
|
31
34
|
end
|
32
35
|
|
@@ -5,20 +5,31 @@ module Orange
|
|
5
5
|
def stack_init
|
6
6
|
orange[:admin, true].add_link("Content", :resource => @my_orange_name, :text => 'Testimonials')
|
7
7
|
orange[:radius].define_tag "testimonials" do |tag|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
packet = tag.locals.packet
|
9
|
+
if tag.attr["tag"] && for_site(packet).with_tag(tag.attr["tag"]).count >0
|
10
|
+
m = for_site(packet).with_tag(tag.attr["tag"]).first(:offset => rand(for_site(packet).with_tag(tag.attr["tag"]).count)) #selects testimonial based on tag
|
11
|
+
elsif for_site(packet).count > 0
|
12
|
+
m = for_site(packet).first(:offset => rand(for_site(packet).count)) #selects a random testimonial
|
12
13
|
end
|
13
14
|
unless m.nil?
|
14
15
|
template = tag.attr["template"] || "testimonials"
|
15
|
-
orange[:testimonials].testimonial(
|
16
|
+
orange[:testimonials].testimonial(packet, {:model => m, :template => template})
|
16
17
|
else
|
17
18
|
""
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
23
|
+
def for_site(packet, opts = {})
|
24
|
+
site_filtered = model_class.all(:orange_site => packet['subsite'].blank? ? packet['site'] : packet['subsite'])
|
25
|
+
if site_filtered.count > 0
|
26
|
+
site_filtered
|
27
|
+
else
|
28
|
+
# Return unfiltered if no site-specific ones
|
29
|
+
model_class.all
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
22
33
|
def testimonial(packet, opts = {})
|
23
34
|
template = opts[:template].to_sym || :testimonials
|
24
35
|
do_view(packet, template, opts)
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 7
|
9
|
+
version: 0.2.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Haslem
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-15 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -135,6 +135,11 @@ files:
|
|
135
135
|
- lib/orange-more/administration/views/openid_login.haml
|
136
136
|
- lib/orange-more/administration/views/users/create.haml
|
137
137
|
- lib/orange-more/administration/views/users/edit.haml
|
138
|
+
- lib/orange-more/adverts.rb
|
139
|
+
- lib/orange-more/adverts/cartons/adverts_carton.rb
|
140
|
+
- lib/orange-more/adverts/plugin.rb
|
141
|
+
- lib/orange-more/adverts/resources/adverts_resource.rb
|
142
|
+
- lib/orange-more/adverts/views/adverts/adverts.haml
|
138
143
|
- lib/orange-more/assets.rb
|
139
144
|
- lib/orange-more/assets/cartons/asset_carton.rb
|
140
145
|
- lib/orange-more/assets/plugin.rb
|
@@ -164,13 +169,17 @@ files:
|
|
164
169
|
- lib/orange-more/disqus/resources/disqus_resource.rb
|
165
170
|
- lib/orange-more/disqus/views/disqus/comment_thread.haml
|
166
171
|
- lib/orange-more/events.rb
|
172
|
+
- lib/orange-more/events/assets/js/events.js
|
167
173
|
- lib/orange-more/events/cartons/orange_calendar.rb
|
168
174
|
- lib/orange-more/events/cartons/orange_event.rb
|
169
175
|
- lib/orange-more/events/plugin.rb
|
170
176
|
- lib/orange-more/events/resources/calendar_resource.rb
|
171
177
|
- lib/orange-more/events/resources/event_resource.rb
|
178
|
+
- lib/orange-more/events/views/calendar/calendar.haml
|
172
179
|
- lib/orange-more/events/views/events/create.haml
|
173
180
|
- lib/orange-more/events/views/events/edit.haml
|
181
|
+
- lib/orange-more/events/views/events/list.haml
|
182
|
+
- lib/orange-more/events/views/events/table_row.haml
|
174
183
|
- lib/orange-more/news.rb
|
175
184
|
- lib/orange-more/news/cartons/news.rb
|
176
185
|
- lib/orange-more/news/plugin.rb
|
@@ -185,6 +194,7 @@ files:
|
|
185
194
|
- lib/orange-more/pages/plugin.rb
|
186
195
|
- lib/orange-more/pages/resources/page_resource.rb
|
187
196
|
- lib/orange-more/pages/views/pages/edit.haml
|
197
|
+
- lib/orange-more/pages/views/pages/show.haml
|
188
198
|
- lib/orange-more/sitemap.rb
|
189
199
|
- lib/orange-more/sitemap/assets/img/sitemap_down.png
|
190
200
|
- lib/orange-more/sitemap/assets/img/sitemap_down_d.png
|
@@ -200,7 +210,9 @@ files:
|
|
200
210
|
- lib/orange-more/sitemap/plugin.rb
|
201
211
|
- lib/orange-more/sitemap/resources/sitemap_resource.rb
|
202
212
|
- lib/orange-more/sitemap/views/default_resource/sitemap_row.haml
|
213
|
+
- lib/orange-more/sitemap/views/sitemap/breadcrumb.haml
|
203
214
|
- lib/orange-more/sitemap/views/sitemap/list.haml
|
215
|
+
- lib/orange-more/sitemap/views/sitemap/one_level.haml
|
204
216
|
- lib/orange-more/sitemap/views/sitemap/route_actions.haml
|
205
217
|
- lib/orange-more/sitemap/views/sitemap/sitemap_links.haml
|
206
218
|
- lib/orange-more/sitemap/views/sitemap/table_row.haml
|