transit 0.0.1 → 0.0.2

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.
Files changed (186) hide show
  1. data/Gemfile +19 -11
  2. data/app/assets/images/transit/icon24x24.png +0 -0
  3. data/app/assets/images/transit/icon24x24_files.png +0 -0
  4. data/app/assets/images/transit/jplayer.swf +0 -0
  5. data/app/assets/images/transit/uploadify.swf +0 -0
  6. data/app/assets/images/transit/video_player.swf +0 -0
  7. data/app/assets/javascripts/jqtools/expose.js +224 -0
  8. data/app/assets/javascripts/jqtools/flashembed.js +300 -0
  9. data/app/assets/javascripts/jqtools/overlay.js +294 -0
  10. data/app/assets/javascripts/jqtools/scrollable.js +3 -0
  11. data/app/assets/javascripts/jqtools/scrollable/autoscroll.js +81 -0
  12. data/app/assets/javascripts/jqtools/scrollable/base.js +335 -0
  13. data/app/assets/javascripts/jqtools/scrollable/navigator.js +139 -0
  14. data/app/assets/javascripts/jqtools/validator.js +590 -0
  15. data/app/assets/javascripts/jqueryui/accordion.js +611 -0
  16. data/app/assets/javascripts/jqueryui/autocomplete.js +612 -0
  17. data/app/assets/javascripts/jqueryui/button.js +388 -0
  18. data/app/assets/javascripts/jqueryui/core.js +312 -0
  19. data/app/assets/javascripts/jqueryui/datepicker.js +1791 -0
  20. data/app/assets/javascripts/jqueryui/dialog.js +878 -0
  21. data/app/assets/javascripts/jqueryui/draggable.js +815 -0
  22. data/app/assets/javascripts/jqueryui/droppable.js +285 -0
  23. data/app/assets/javascripts/jqueryui/effects/blind.js +49 -0
  24. data/app/assets/javascripts/jqueryui/effects/bounce.js +78 -0
  25. data/app/assets/javascripts/jqueryui/effects/clip.js +54 -0
  26. data/app/assets/javascripts/jqueryui/effects/core.js +746 -0
  27. data/app/assets/javascripts/jqueryui/effects/drop.js +50 -0
  28. data/app/assets/javascripts/jqueryui/effects/explode.js +79 -0
  29. data/app/assets/javascripts/jqueryui/effects/fade.js +32 -0
  30. data/app/assets/javascripts/jqueryui/effects/fold.js +56 -0
  31. data/app/assets/javascripts/jqueryui/effects/highlight.js +50 -0
  32. data/app/assets/javascripts/jqueryui/effects/pulsate.js +51 -0
  33. data/app/assets/javascripts/jqueryui/effects/scale.js +178 -0
  34. data/app/assets/javascripts/jqueryui/effects/shake.js +57 -0
  35. data/app/assets/javascripts/jqueryui/effects/slide.js +50 -0
  36. data/app/assets/javascripts/jqueryui/effects/transfer.js +45 -0
  37. data/app/assets/javascripts/jqueryui/mouse.js +160 -0
  38. data/app/assets/javascripts/jqueryui/position.js +252 -0
  39. data/app/assets/javascripts/jqueryui/progressbar.js +109 -0
  40. data/app/assets/javascripts/jqueryui/resizable.js +814 -0
  41. data/app/assets/javascripts/jqueryui/selectable.js +266 -0
  42. data/app/assets/javascripts/jqueryui/slider.js +666 -0
  43. data/app/assets/javascripts/jqueryui/sortable.js +1077 -0
  44. data/app/assets/javascripts/jqueryui/tabs.js +758 -0
  45. data/app/assets/javascripts/jqueryui/widget.js +262 -0
  46. data/app/assets/javascripts/libs/backbone.js +1152 -0
  47. data/app/assets/javascripts/libs/cookie.js +89 -0
  48. data/app/assets/javascripts/libs/fileinput.js +130 -0
  49. data/app/assets/javascripts/libs/jplayer.js +1768 -0
  50. data/app/assets/javascripts/libs/proper.js +541 -0
  51. data/app/assets/javascripts/libs/sanitize.js +282 -0
  52. data/app/assets/javascripts/libs/selecttolist.js +75 -0
  53. data/app/assets/javascripts/libs/underscore.js +807 -0
  54. data/app/assets/javascripts/libs/uploadify.js +677 -0
  55. data/app/assets/javascripts/libs/wymeditor.js +9538 -0
  56. data/app/assets/javascripts/transit.js +4 -0
  57. data/app/assets/javascripts/transit/admin.js +22 -0
  58. data/app/assets/javascripts/transit/admin/contexts.js +52 -0
  59. data/app/assets/javascripts/transit/admin/fields.js +36 -0
  60. data/app/assets/javascripts/transit/admin/upload.js +109 -0
  61. data/app/assets/javascripts/transit/config.js.erb +101 -0
  62. data/app/assets/javascripts/transit/contexts/audio.js +39 -0
  63. data/app/assets/javascripts/transit/contexts/video.js +79 -0
  64. data/app/assets/javascripts/transit/core.js +171 -0
  65. data/app/assets/javascripts/transit/frontend.js +3 -0
  66. data/app/assets/javascripts/transit/lib/base64.js +120 -0
  67. data/app/assets/javascripts/transit/lib/editor.js +177 -0
  68. data/app/assets/javascripts/transit/views/audio_player.jst +22 -0
  69. data/app/assets/javascripts/transit/views/editor_toolbar.jst +12 -0
  70. data/app/assets/javascripts/transit/views/file_upload.jst +5 -0
  71. data/app/assets/javascripts/transit/views/video_player.jst +20 -0
  72. data/app/assets/javascripts/transit/views/wym_box.jst +4 -0
  73. data/app/assets/javascripts/transit/views/wym_iframe.jst +3 -0
  74. data/app/assets/stylesheets/transit.css.scss.erb +42 -0
  75. data/app/assets/stylesheets/transit/forms.css.scss +66 -0
  76. data/app/assets/stylesheets/transit/media/audio.css.scss +65 -0
  77. data/app/assets/stylesheets/transit/media/video.css.scss +30 -0
  78. data/app/assets/stylesheets/transit/panel.css.scss +100 -0
  79. data/app/assets/stylesheets/transit/ui.css.scss +507 -0
  80. data/app/controllers/pages_controller.rb +3 -0
  81. data/app/controllers/posts_controller.rb +3 -0
  82. data/app/controllers/transit/assets_controller.rb +38 -0
  83. data/app/controllers/transit/contexts_controller.rb +12 -9
  84. data/app/controllers/transit/pages_controller.rb +26 -0
  85. data/app/controllers/transit/posts_controller.rb +31 -0
  86. data/app/controllers/transit/topics_controller.rb +5 -0
  87. data/app/controllers/transit_controller.rb +16 -0
  88. data/app/helpers/transit/admin_helper.rb +43 -0
  89. data/app/helpers/transit/form_helper.rb +17 -0
  90. data/app/helpers/transit/package_helper.rb +41 -0
  91. data/app/helpers/transit/pagination_helper.rb +58 -0
  92. data/app/helpers/transit_helper.rb +42 -0
  93. data/app/models/comment.rb +37 -0
  94. data/app/models/contexts/audio.rb +12 -0
  95. data/app/models/{text.rb → contexts/text.rb} +0 -0
  96. data/app/models/contexts/video.rb +24 -0
  97. data/app/models/topic.rb +19 -0
  98. data/app/models/transit/asset.rb +68 -0
  99. data/{lib → app/models}/transit/context.rb +29 -0
  100. data/app/views/contexts/_text.html.erb +1 -1
  101. data/app/views/posts/index.rss.builder +18 -0
  102. data/app/views/transit/assets/_file.html.erb +4 -0
  103. data/app/views/transit/assets/_image.html.erb +13 -0
  104. data/app/views/transit/assets/create.js.erb +8 -0
  105. data/app/views/transit/assets/destroy.js.erb +3 -0
  106. data/app/views/transit/assets/manage.html.erb +20 -0
  107. data/app/views/transit/contexts/_audio.html.erb +18 -0
  108. data/app/views/transit/contexts/_text.html.erb +6 -0
  109. data/app/views/transit/contexts/_video.html.erb +13 -0
  110. data/app/views/transit/contexts/destroy.js.erb +1 -0
  111. data/app/views/transit/contexts/index.html.erb +5 -0
  112. data/app/views/transit/contexts/new.js.erb +7 -0
  113. data/app/views/transit/contexts/show.html.erb +8 -0
  114. data/app/views/transit/index.html.erb +26 -0
  115. data/app/views/transit/index.js.erb +1 -0
  116. data/app/views/transit/interface/post_panel.html.erb +96 -0
  117. data/app/views/transit/pages/_table.html.erb +7 -0
  118. data/app/views/transit/pages/edit.html.erb +17 -0
  119. data/app/views/transit/pages/index.html.erb +17 -0
  120. data/app/views/transit/pages/update.js.erb +1 -0
  121. data/app/views/transit/posts/_form.html.erb +49 -0
  122. data/app/views/transit/posts/edit.html.erb +14 -0
  123. data/app/views/transit/posts/new.html.erb +21 -0
  124. data/app/views/transit/table.html.erb +13 -0
  125. data/app/views/transit/table.js.erb +8 -0
  126. data/app/views/transit/topics/manage.html.erb +28 -0
  127. data/config/locales/en.yml +22 -0
  128. data/config/routes.rb +3 -3
  129. data/lib/transit.rb +51 -17
  130. data/lib/transit/admin.rb +85 -0
  131. data/lib/transit/builders/form_builder.rb +319 -0
  132. data/lib/transit/builders/jst_builder.rb +38 -0
  133. data/lib/transit/builders/package_builder.rb +45 -0
  134. data/lib/transit/config.rb +20 -0
  135. data/lib/transit/controller/generator.rb +42 -0
  136. data/lib/transit/controller/responder.rb +34 -0
  137. data/lib/transit/core_ext.rb +18 -0
  138. data/lib/transit/errors/resource_not_found.rb +6 -0
  139. data/lib/transit/model/assets.rb +14 -0
  140. data/lib/transit/model/attachments.rb +55 -0
  141. data/lib/transit/model/auto_increment.rb +22 -0
  142. data/lib/transit/model/base.rb +56 -0
  143. data/lib/transit/model/comments.rb +19 -0
  144. data/lib/transit/model/hooks.rb +38 -0
  145. data/lib/transit/model/owners.rb +14 -0
  146. data/lib/transit/model/paginator.rb +92 -0
  147. data/lib/transit/model/topics.rb +14 -0
  148. data/lib/transit/package/page.rb +20 -12
  149. data/lib/transit/package/post.rb +87 -33
  150. data/lib/transit/package/post/validations.rb +14 -0
  151. data/lib/transit/rails/engine.rb +29 -13
  152. data/lib/transit/rails/railtie.rb +31 -0
  153. data/lib/transit/rails/routing.rb +11 -6
  154. data/lib/transit/services.rb +13 -0
  155. data/lib/transit/services/base.rb +14 -0
  156. data/lib/transit/services/facebook.rb +13 -0
  157. data/lib/transit/services/ted.rb +10 -0
  158. data/lib/transit/services/twitter.rb +13 -0
  159. data/lib/transit/services/vimeo.rb +10 -0
  160. data/lib/transit/services/you_tube.rb +12 -0
  161. data/lib/transit/version.rb +1 -1
  162. metadata +178 -31
  163. data/app/assets/stylesheets/includes/_compat.scss +0 -24
  164. data/app/assets/stylesheets/includes/_defaults.scss +0 -99
  165. data/app/assets/stylesheets/includes/_global.scss +0 -16
  166. data/app/assets/stylesheets/includes/_imports.scss +0 -27
  167. data/app/assets/stylesheets/includes/_mixins.scss +0 -38
  168. data/app/assets/stylesheets/includes/_setup.scss +0 -85
  169. data/app/assets/stylesheets/layout.css.scss +0 -29
  170. data/app/assets/stylesheets/transit.css +0 -3
  171. data/app/controllers/application_controller.rb +0 -5
  172. data/app/controllers/transit/index_controller.rb +0 -7
  173. data/app/controllers/transit/packages_controller.rb +0 -64
  174. data/app/controllers/transit/transit_controller.rb +0 -4
  175. data/app/helpers/routing_helpers.rb +0 -7
  176. data/app/models/audio.rb +0 -4
  177. data/app/models/package_asset.rb +0 -11
  178. data/app/models/video.rb +0 -8
  179. data/app/views/contexts/_audio.html.erb +0 -1
  180. data/app/views/contexts/_video.html.erb +0 -1
  181. data/app/views/layouts/transit.html.erb +0 -31
  182. data/app/views/transit/index/index.html.erb +0 -0
  183. data/lib/transit/helpers/controller_helpers.rb +0 -40
  184. data/lib/transit/helpers/model_helpers.rb +0 -26
  185. data/lib/transit/package.rb +0 -25
  186. data/lib/transit/package/base.rb +0 -49
@@ -0,0 +1,19 @@
1
+ class Topic
2
+ include Mongoid::Document
3
+
4
+ field :title, :type => String
5
+ field :slug, :type => String
6
+ field :post_types, :type => Array
7
+
8
+ validates :title, :presence => true
9
+ before_create :generate_slug
10
+
11
+ scope :for_type, lambda{ |type| where(:post_types => type) }
12
+ scope :for_editing, lambda{ |klass, inst| ascending(:title) }
13
+
14
+ def generate_slug
15
+ return true unless self.slug.to_s.blank?
16
+ self.slug = self.title.to_slug
17
+ end
18
+
19
+ end
@@ -0,0 +1,68 @@
1
+ require 'mime/types'
2
+
3
+ module Transit
4
+ class Asset
5
+
6
+ include Mongoid::Document
7
+ include Mongoid::Timestamps
8
+ include Paperclip::Glue
9
+ store_in :assets
10
+ auto_increment
11
+
12
+ field :name, type: String
13
+ field :meta, type: Hash
14
+ field :file_file_name, type: String
15
+ field :file_content_type, type: String
16
+ field :file_file_size, type: Integer
17
+ field :file_updated_at, type: DateTime
18
+ field :file_fingerprint, type: String
19
+ field :file_type, type: String
20
+
21
+ belongs_to :assetable, :polymorphic => true
22
+ before_save :set_default_name
23
+ before_create :set_file_type
24
+
25
+ def self.asset_config_with_default
26
+ styles = Transit::Config.assets
27
+ return styles unless styles[:styles].present?
28
+ styles[:styles].reverse_merge!(preview: '50x50#')
29
+ styles
30
+ end
31
+
32
+ has_attached_file :file, Transit::Asset.asset_config_with_default
33
+ before_post_process :skip_processing_unless_image
34
+
35
+ # Determine if this asset is an image
36
+ def image?
37
+ (self.file_content_type =~ %r{^(image|(x-)?application)/(x-png|pjpeg|jpeg|jpg|png|gif)$})
38
+ end
39
+
40
+ # Provide a way to get a list of all urls for the attachment
41
+ def file_urls
42
+ return { :original => file.url(:original) } unless image?
43
+ file.styles.keys.inject({}){ |hash, style| hash.merge!(style => file.url(style)) }
44
+ end
45
+
46
+ def timestamp
47
+ self.created_at.strftime("%B %d, %Y")
48
+ end
49
+
50
+ def skip_processing_unless_image
51
+ if !(file.content_type =~ %r{^(image|(x-)?application)/(x-png|pjpeg|jpeg|jpg|png|gif)$})
52
+ return false
53
+ end
54
+ end
55
+
56
+ private
57
+
58
+ def set_default_name
59
+ return true unless self.name.to_s.blank?
60
+ self.name = self.file_file_name
61
+ end
62
+
63
+ def set_file_type
64
+ self.file_type = ::MIME::Types.type_for(self.file_file_name.to_s).first.media_type
65
+ end
66
+
67
+ end
68
+ end
@@ -1,6 +1,7 @@
1
1
  module Transit
2
2
  class Context
3
3
  include Mongoid::Document
4
+
4
5
  field :name, :type => String
5
6
  field :meta, :type => Hash, :default => {}
6
7
  field :body, :type => String
@@ -9,6 +10,8 @@ module Transit
9
10
  before_save :ensure_context_position_value
10
11
  embedded_in :package, polymorphic: true
11
12
 
13
+ scope :by_name, lambda{ |n| where(:name => n) }
14
+
12
15
  def ensure_context_position_value
13
16
  return true unless self.position.nil?
14
17
  self.position = _parent.send(:contexts).count + 1
@@ -22,6 +25,32 @@ module Transit
22
25
  # Sets up a default name field to be used in form helpers
23
26
  def field_name
24
27
  (self.name.to_s.blank? ? self.class.to_s : self.name)
28
+ end
29
+
30
+ def file_ext
31
+ File.extname(self.body.to_s).sub('.', '')
32
+ end
33
+
34
+ def package_type
35
+ (self.package.nil? ? "post" : self.package.class.name.to_s.underscore)
36
+ end
37
+
38
+ def media_context?
39
+ false
40
+ end
41
+
42
+ def to_js( attrs = {} )
43
+ {
44
+ id: self.id.to_s,
45
+ position: self.position.to_i,
46
+ package_id: (self.package.nil? ? "" : self.package.id.to_s ),
47
+ package_type: package_type,
48
+ resource_url: package_type.pluralize,
49
+ }.merge!( attrs )
50
+ end
51
+
52
+ def to_backbone( attrs = {} )
53
+ ::Base64.encode64s(to_js(attrs).to_json)
25
54
  end
26
55
 
27
56
  end
@@ -1 +1 @@
1
- <%= context.body.html_safe %>
1
+ <%= context.body.to_s.html_safe %>
@@ -0,0 +1,18 @@
1
+ xml.instruct! :xml, :version => "1.0"
2
+ xml.rss :version => "2.0" do
3
+ xml.channel do
4
+ xml.title t("transit.rss.#{scope_name.underscore}_feed_title")
5
+ xml.description ""
6
+ xml.link polymorphic_url(scope_class)
7
+
8
+ for post in @resources
9
+ xml.item do
10
+ xml.title post.title
11
+ xml.description strip_tags(post.teaser)
12
+ xml.pubDate post.post_date.to_s(:rfc822)
13
+ xml.link deliver_rss(post)
14
+ xml.guid deliver_rss(post)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ <li data-asset-id="<%= file.id %>" class='file'>
2
+ <%= link_to file.name, file.file.url(:original), :class => file_icon_class(file) %>
3
+ <%= link_to 'Delete', transit.package_asset_path(file), :method => :delete, :remote => true, :confirm => "Are you sure you want to delete this image?\n\nNOTE: Make sure you remove any links to this file from your copy if you've used it.\n\n", :class => 'icon_delete', :title => 'Delete File' %>
4
+ </li>
@@ -0,0 +1,13 @@
1
+ <li id="<%= image.id %>" class='image'>
2
+ <span class='image_asset_holder'>
3
+ <%= image_tag(image.file.url(:preview)) %>
4
+ <%= link_to 'Delete', transit.package_asset_path(image.id), :method => :delete, :remote => true, :confirm => "Are you sure you want to delete this image?\n\nNOTE: Make sure you remove this image from your copy if you've used it.\n\n", :class => 'icon_delete', :title => 'Delete Image' %>
5
+ </span>
6
+ <span class='add_heading'>Add to copy</span>
7
+ <ul class='image_style_list'>
8
+ <% image.file.styles.keys.map(&:to_s).each do |style| %>
9
+ <% next if style == 'preview' %>
10
+ <li><%= link_to style.titleize, image.file.url(style), :class => "insert_image_link" %></li>
11
+ <% end %>
12
+ </ul>
13
+ </li>
@@ -0,0 +1,8 @@
1
+ <%= { :image => (@asset.image? ? true : false),
2
+ :content => render(:partial => (@asset.image? ? "image" : "file"), :object => @asset),
3
+ :created_at => @asset.timestamp,
4
+ :name => @asset.name,
5
+ :urls => @asset.file_urls,
6
+ :icon => file_icon_class(@asset),
7
+ :id => @asset.id.to_s
8
+ }.to_json.html_safe %>
@@ -0,0 +1,3 @@
1
+ jQuery('#<%= @asset.id.to_s %>').fadeOut('fast', function(e){
2
+ jQuery(this).remove();
3
+ });
@@ -0,0 +1,20 @@
1
+ <div id="post_assets">
2
+ <h4 class='primary'>Files and Images</h4>
3
+ <%= link_to 'Upload a File', '', id:'upload_file_link', rel: "asset[file]",
4
+ data: {
5
+ ui_button: 'plusthick',
6
+ upload_path: "#{transit.package_assets_path(resource_type: resource_class.name, resource_id: resource.id.to_s, auth_token: current_user.authentication_token)}"
7
+ } %>
8
+ <ul id="asset_image_list">
9
+ <li class='header'><h4>Images</h4></li>
10
+ <% resource.images.each do |image| %>
11
+ <%= render(partial: 'transit/assets/image', object: image) %>
12
+ <% end %>
13
+ </ul>
14
+ <ul id="asset_file_list">
15
+ <li class='header'><h4>Files</h4></li>
16
+ <% resource.files.each do |file| %>
17
+ <%= render(partial: 'transit/assets/file', object: file) %>
18
+ <% end %>
19
+ </ul>
20
+ </div>
@@ -0,0 +1,18 @@
1
+ <%= deliver_media_context(context, context.to_backbone) %>
2
+ <div class='toolbar'>
3
+ <ol class="split">
4
+ <li>
5
+ <%= form.label :source %>
6
+ <%= select_tag :source_option %>
7
+ </li>
8
+ <li class='asset_source'>
9
+ <%= form.label :source %>
10
+ <%= form.text_field :source, :value => context.body, :style => 'width:225px' %>
11
+ </li>
12
+ </ol>
13
+ </div>
14
+ <script type="text/javascript" charset="utf-8">
15
+ //<![CDATA[
16
+ jQuery('div.audio_player').transit('audio');
17
+ //]]>
18
+ </script>
@@ -0,0 +1,6 @@
1
+ <%= form.text_area :body, style: 'width:97%; height:350px;', class: 'richtext_editor transit-editable' %>
2
+ <script type="text/javascript" charset="utf-8">
3
+ //<![CDATA[
4
+ jQuery('.transit-editable').transit('editor');
5
+ //]]>
6
+ </script>
@@ -0,0 +1,13 @@
1
+ <%= deliver_media_context(context, context.to_backbone) %>
2
+ <div class='toolbar'>
3
+ <ol class="split">
4
+ <li style='width:350px; padding-left:.5em'>
5
+ <%= form.label :source %>
6
+ <%= form.text_field :source, :value => context.body, :style => 'width:225px' %>
7
+ </li>
8
+ <li>
9
+ <%= form.label :video_type %>
10
+ <%= form.select :video_type, options_for_select(Video.sources, context.video_type) %>
11
+ </li>
12
+ </ol>
13
+ </div>
@@ -0,0 +1 @@
1
+ jQuery('#context_list').trigger("context:destroyed", ["#context_<%= @context.id.to_s %>"]);
@@ -0,0 +1,5 @@
1
+ <ul id="context_list" class='contents'>
2
+ <%= form.fields_for :contexts do |cform| %>
3
+ <%= context_field_item(cform.object, cform) %>
4
+ <% end %>
5
+ </ul>
@@ -0,0 +1,7 @@
1
+ <% content = capture do
2
+ fields_for("#{params[:form_name]}[context_attributes][#{Time.now.to_i}]", @context) do |child|
3
+ context_field_item(child.object, child)
4
+ end
5
+ end %>
6
+ jQuery('#context_list').trigger("context:added", ["<%= escape_javascript(content.html_safe) %>", "<%= @context.class.name.underscore %>"]);
7
+
@@ -0,0 +1,8 @@
1
+ <li class='field field_<%= @context.class.to_s.underscore %>'>
2
+ <%= fields_for "#{@package.class.to_s.underscore}[context_attributes][#{Time.now.to_i}]", context do |child| %>
3
+ <ul class="option_bar">
4
+ <%= render partial: 'field_attrs', locals: { form: child, context: context } %>
5
+ </ul>
6
+ <%= render partial: "transit/contexts/#{context.class.to_s.underscore}", locals: { form: child, context: context } %>
7
+ <% end %>
8
+ </li>
@@ -0,0 +1,26 @@
1
+ <%= page_id('transit_index') %>
2
+ <%= page_title("Transit: Manage #{t("transit.collection_names.#{resource_collection_name}")}") %>
3
+ <h1>Manage <%= t("transit.collection_names.#{resource_collection_name}") %></h1>
4
+ <%= paginate(collection, :remote => true) %>
5
+ <table border="0" id="listing">
6
+ <thead>
7
+ <tr>
8
+ <% resource_class.admin_options.column_hash.each do |name, value| %>
9
+ <% if value.is_a?(Array) %>
10
+ <th><%= value.first %></th>
11
+ <% else %>
12
+ <th><%= value %></th>
13
+ <% end %>
14
+ <% end %>
15
+ <th>Edit</th>
16
+ <th>Delete</th>
17
+ </tr>
18
+ </thead>
19
+ <tbody>
20
+ <%= render template: 'transit/table' %>
21
+ </tbody>
22
+ </table>
23
+ <%= paginate(collection, :remote => true) %>
24
+ <div class='buttons'>
25
+ <%= button_link "Add a New #{t(resource_class.to_s.underscore, :scope => :transit)}" , new_polymorphic_path(resource_class.new) %>
26
+ </div>
@@ -0,0 +1 @@
1
+ <%= render(template: 'transit/table') %>
@@ -0,0 +1,96 @@
1
+ <div id="transit_admin_panel">
2
+ <div id="transit_admin_panel_wrapper">
3
+ <ul>
4
+ <li><a href="#post_meta">Detail</a></li>
5
+
6
+ <!-- Persisted models only -->
7
+ <% if resource.persisted? %>
8
+ <li><a href="#post_contexts">Content</a></li>
9
+ <% if form.object.delivers?(:topics) %>
10
+ <li><a href="#post_topics">Topics</a></li>
11
+ <% end %>
12
+ <% if resource.delivers?(:assets) %>
13
+ <li><a href="#post_assets">Uploads</a></li>
14
+ <% end %>
15
+ <li><a href="#post_social">Social</a></li>
16
+ <% end %>
17
+ <!-- END -->
18
+ </ul>
19
+ <div id="post_meta" class='panel'>
20
+
21
+ <!-- Can only publish after save -->
22
+ <% if resource.persisted? %>
23
+ <h4 class='published'>Published? <%= form.check_box :published, class: 'toggle' %> </h4>
24
+ <% end %>
25
+ <!-- End -->
26
+
27
+ <% if resource.delivers?(:attachments) %>
28
+ <div id="post_primary_image">
29
+ <h4>Primary Image</h4>
30
+ <span class='primary_image_holder'>
31
+ <%= image_tag(resource.preview_image_url) unless resource.preview_image_url.nil? %>
32
+ </span>
33
+ <span class='image_options'>
34
+ <%= form.check_box :display_image %>
35
+ <%= form.label :display_image, "Display on actual post page?" %><br />
36
+ <%= form.file_field :default_image %>
37
+ </span>
38
+ </div>
39
+ <% end %>
40
+
41
+ <h4>Post Date</h4>
42
+ <div class='datepicker' rel='post_post_date'></div>
43
+ <div id="datepicker_target">
44
+ <%= form.date_select :post_date, { order: [:month, :day, :year], use_short_month: true } %>
45
+ </div>
46
+ <% if resource.persisted? %>
47
+ <h4>Teaser</h4>
48
+ <%= form.text_area :teaser %>
49
+ <% end %>
50
+ </div>
51
+
52
+ <!-- Edit mode only -->
53
+ <% if resource.persisted? %>
54
+ <div id="post_contexts" class='panel'>
55
+ <h4>Content Sections</h4>
56
+ <ul>
57
+ <% Transit.contexts.map(&:to_s).each do |type| %>
58
+ <li class="icon_<%= type.underscore %>">
59
+ <%= link_to type, transit.send(:"new_#{form.object_name}_context_path", resource.id, :type => type), remote: true %>
60
+ </li>
61
+ <% end %>
62
+ </ul>
63
+ </div>
64
+ <% if form.object.delivers?(:topics) %>
65
+ <%= render(template: 'transit/topics/manage', locals: { form: form }) %>
66
+ <% end %>
67
+ <% if resource.delivers?(:assets) %>
68
+ <%= render(template: 'transit/assets/manage', locals: { form: form }) %>
69
+ <% end %>
70
+ <div id="post_social">
71
+ <h4>Social Sharing</h4>
72
+ <p>Soon....</p>
73
+ </div>
74
+ <% end %>
75
+ <!-- End edit mode only -->
76
+
77
+ </div>
78
+ </div>
79
+ <% if resource.delivers?(:owner) %>
80
+ <%= form.hidden_field :user, value: current_user.id %>
81
+ <% end %>
82
+ <% if resource.persisted? %>
83
+ <ul id="transit_admin_panel_buttons">
84
+ <li><button data-ui-button="check" type='commit'>Save</button></li>
85
+ <li><%= link_to 'Delete', transit.polymorphic_path(form.object), method: :delete, confirm: 'Are you sure you want to delete this post?', data: { ui_button: 'closethick' } %></li>
86
+ </ul>
87
+ <% end %>
88
+ <div id="transit_admin_help">
89
+ <h4>Help</h4>
90
+ <p><strong>Editing Content:</strong>
91
+ To edit content, click on the copy block to the left, or on the title above. Once selected that particular area of
92
+ content will become 'active' allowing you to edit it. When finished, click "save" above.</p>
93
+ <p>Posts will not display on the site until two criteria are met. First, the post date must be set to a date on or before
94
+ today. Second, the "published" box must be checked. If the published box is checked, and the post date is set to a date
95
+ later than today, the post will not display until that date.</p>
96
+ </div>
@@ -0,0 +1,7 @@
1
+ <% @pages.each do |page| %>
2
+ <tr<%= cycle(""," class='even'") %>>
3
+ <td><%= page.name %></td>
4
+ <td><%= page.url %></td>
5
+ <td><%= link_to 'Edit', edit_polymorphic_path(page) %></td>
6
+ </tr>
7
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <%= page_id('transit_edit_page') %>
2
+ <%= page_title("Transit: Edit Page: #{@page.name}") %>
3
+ <h1>Page Content: <%= @page.name %></h1>
4
+ <%= form_for @page, :as => :page, :html => { :id => 'edit_page_form' }, :validate => true, :remote => true do |f| %>
5
+ <fieldset>
6
+ <legend>Page Details</legend>
7
+ <ol class="split">
8
+ <li>
9
+ <%= f.label :name %>
10
+ <%= f.text_field :name %>
11
+ </li>
12
+ <li class="buttons">
13
+ <%= f.button %>
14
+ </li>
15
+ </ol>
16
+ </fieldset>
17
+ <% end %>