refinerycms-javascripts 1.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.
@@ -0,0 +1,8 @@
1
+ module Admin
2
+ class JavascriptsController < Admin::BaseController
3
+
4
+ crudify :javascript,
5
+ :title_attribute => 'name', :xhr_paging => true
6
+
7
+ end
8
+ end
@@ -0,0 +1,30 @@
1
+ class JavascriptsController < ApplicationController
2
+
3
+ before_filter :find_all_javascripts
4
+ before_filter :find_page
5
+
6
+ def index
7
+ # you can use meta fields from your model instead (e.g. browser_title)
8
+ # by swapping @page for @javascript in the line below:
9
+ present(@page)
10
+ end
11
+
12
+ def show
13
+ @javascript = Javascript.find(params[:id])
14
+
15
+ # you can use meta fields from your model instead (e.g. browser_title)
16
+ # by swapping @page for @javascript in the line below:
17
+ present(@page)
18
+ end
19
+
20
+ protected
21
+
22
+ def find_all_javascripts
23
+ @javascripts = Javascript.order('position ASC')
24
+ end
25
+
26
+ def find_page
27
+ @page = Page.where(:link_url => "/javascripts").first
28
+ end
29
+
30
+ end
@@ -0,0 +1,35 @@
1
+ class Javascript < ActiveRecord::Base
2
+
3
+ has_and_belongs_to_many :pages
4
+
5
+ acts_as_indexed :fields => [:name, :content]
6
+
7
+ validates :name, :presence => true, :uniqueness => true
8
+ validates :content, :presence => true
9
+
10
+ before_save :generate_js_file
11
+
12
+ RESOURCES_DIR = ENV["HEROKU_RACK"].blank? ? Rails.root.join("public") : "tmp"
13
+ JAVASCRIPTS_DIR = ENV["HEROKU_RACK"].blank? ? File.join("system", "javascripts").to_s : File.join("javascripts").to_s
14
+
15
+ def relative_path
16
+ File.join("/#{ JAVASCRIPTS_DIR}", "#{self.name}.js").to_s
17
+ end
18
+
19
+ protected
20
+
21
+ def generate_js_file
22
+ js = self.content
23
+
24
+
25
+ output_dir = File.join(RESOURCES_DIR, JAVASCRIPTS_DIR)
26
+
27
+ ::FileUtils.mkdir(output_dir) unless File.directory?(output_dir)
28
+
29
+ File.open(File.join(output_dir, "#{ self.name}.js"), 'w') {|f| f.write(js) }
30
+ return true
31
+ end
32
+
33
+
34
+
35
+ end
@@ -0,0 +1,28 @@
1
+ <ul>
2
+ <% if Admin::JavascriptsController.searchable? %>
3
+ <li>
4
+ <%= render :partial => "/shared/admin/search",
5
+ :locals => {
6
+ :url => admin_javascripts_url
7
+ } %>
8
+ </li>
9
+ <% end %>
10
+ <li>
11
+ <%= link_to t('.create_new'), new_admin_javascript_url,
12
+ :class => "add_icon" %>
13
+ </li>
14
+ <% if !searching? and Admin::JavascriptsController.sortable? and Javascript.count > 1 %>
15
+ <li>
16
+ <%= link_to t('.reorder', :what => "Javascripts"),
17
+ admin_javascripts_url,
18
+ :id => "reorder_action",
19
+ :class => "reorder_icon" %>
20
+
21
+ <%= link_to t('.reorder_done', :what => "Javascripts"),
22
+ admin_javascripts_url,
23
+ :id => "reorder_action_done",
24
+ :style => "display: none;",
25
+ :class => "reorder_icon" %>
26
+ </li>
27
+ <% end %>
28
+ </ul>
@@ -0,0 +1,46 @@
1
+ <%= form_for [:admin, @javascript] do |f| -%>
2
+ <%= render :partial => "/shared/admin/error_messages", :locals => {
3
+ :object => @javascript,
4
+ :include_object_name => true
5
+ } %>
6
+
7
+ <div class='field'>
8
+ <%= f.label :name -%>
9
+ <%= f.text_field :name, :class => 'larger widest' -%>
10
+ </div>
11
+
12
+ <div class='field'>
13
+ <div id='page-tabs' class='clearfix ui-tabs ui-widget ui-widget-content ui-corner-all'>
14
+ <ul id='page_parts'>
15
+ <% [:content].each_with_index do |part, part_index| %>
16
+ <li class='ui-state-default<%= ' ui-state-active' if part_index == 0 %>'>
17
+ <%= link_to part.to_s.titleize, "##{part}" %>
18
+ </li>
19
+ <% end %>
20
+ </ul>
21
+
22
+ <div id='page_part_editors'>
23
+ <% [:content].each do |part| %>
24
+ <div class='page_part' id='<%= part %>'>
25
+ <%= f.text_area part, :rows => 20, :class => 'widest' -%>
26
+ </div>
27
+ <% end %>
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <%= render :partial => "/shared/admin/form_actions",
33
+ :locals => {
34
+ :f => f,
35
+ :continue_editing => true,
36
+ :delete_title => t('delete', :scope => 'admin.javascripts.javascript'),
37
+ :delete_confirmation => t('message', :scope => 'shared.admin.delete', :title => @javascript.name)
38
+ } %>
39
+ <% end -%>
40
+ <% content_for :javascripts do %>
41
+ <script>
42
+ $(document).ready(function(){
43
+ page_options.init(false, '', '');
44
+ });
45
+ </script>
46
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(javascript) -%>">
2
+ <span class='title'>
3
+ <%= javascript.name %>
4
+ <span class="preview">&nbsp;</span>
5
+ </span>
6
+ <span class='actions'>
7
+ <%= link_to refinery_icon_tag("application_go.png"), javascript_url(javascript),
8
+ :title => t('.view_live_html'),
9
+ :target => "_blank" %>
10
+ <%= link_to refinery_icon_tag("application_edit.png"), edit_admin_javascript_path(javascript),
11
+ :title => t('.edit') %>
12
+ <%= link_to refinery_icon_tag("delete.png"), admin_javascript_path(javascript),
13
+ :class => "cancel confirm-delete",
14
+ :title => t('.delete'),
15
+ :confirm => t('message', :scope => 'shared.admin.delete', :title => javascript.name),
16
+ :method => :delete %>
17
+ </span>
18
+ </li>
@@ -0,0 +1,2 @@
1
+ <%= will_paginate @javascripts %>
2
+ <%= render :partial => "sortable_list" %>
@@ -0,0 +1,18 @@
1
+ <% if searching? %>
2
+ <h2><%= t('results_for', :scope => 'shared.admin.search', :query => params[:search]) %></h2>
3
+ <% end %>
4
+ <% if @javascripts.any? %>
5
+ <div class='pagination_container'>
6
+ <%= render :partial => 'javascripts' %>
7
+ </div>
8
+ <% else %>
9
+ <p>
10
+ <% unless searching? %>
11
+ <strong>
12
+ <%= t('.no_items_yet') %>
13
+ </strong>
14
+ <% else %>
15
+ <%= t('no_results', :scope => 'shared.admin.search') %>
16
+ <% end %>
17
+ </p>
18
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <ul id='sortable_list'>
2
+ <%= render :partial => 'javascript', :collection => @javascripts %>
3
+ </ul>
4
+ <%= render :partial => "/shared/admin/sortable_list",
5
+ :locals => {
6
+ :continue_reordering => (local_assigns.keys.include?(:continue_reordering)) ? continue_reordering : true
7
+ } %>
@@ -0,0 +1,3 @@
1
+ <%= content_for :stylesheets, stylesheet_link_tag('codemirror', 'css') %>
2
+ <%= content_for :javascripts, javascript_include_tag('codemirror', 'css', 'javascript-editor') %>
3
+ <%= render :partial => "form" %>
@@ -0,0 +1,10 @@
1
+ <section id='records'>
2
+ <%= render :partial => 'records' %>
3
+ </section>
4
+ <aside id='actions'>
5
+ <%= render :partial => 'actions' %>
6
+ </aside>
7
+ <%= render :partial => '/shared/admin/make_sortable',
8
+ :locals => {
9
+ :tree => false
10
+ } if !searching? and Admin::JavascriptsController.sortable? and Javascript.count > 1 %>
@@ -0,0 +1,3 @@
1
+ <%= content_for :stylesheets, stylesheet_link_tag('codemirror', 'css') %>
2
+ <%= content_for :javascripts, javascript_include_tag('codemirror', 'css', 'javascript-editor') %>
3
+ <%= render :partial => "form" %>
@@ -0,0 +1,4 @@
1
+ = content_for :stylesheets, stylesheet_link_tag('javascripts-engine.css')
2
+
3
+ %section#javascript-picker
4
+ = render :partial => 'admin/pages/tabs/javascripts/javascript_picker', :locals => { :page_javascripts => @page.javascripts, :all_javascripts => Javascript.all - @page.javascripts }
@@ -0,0 +1,26 @@
1
+ = content_for :after_javascript_libraries, javascript_include_tag('jquery.dualListBox-1.3.min.js','javascript-picker')
2
+
3
+ = hidden_field_tag "page[javascript_ids][]", ''
4
+
5
+ %table#stylesheet-selector
6
+ %tr
7
+ %td
8
+ %h3= t('admin.pages.tabs.javascripts.all_javascripts')
9
+ = select("page1", "all_javascript_ids", all_javascripts.collect {|p| [ p.name, p.id ] }, {}, {:multiple => true, :id => 'box1javascriptView', :style => "height: 200px; width: 200px"})
10
+ %div
11
+ %select#box1javascriptStorage
12
+ %td.form-actions-left
13
+ %button.wymupdate.button#tojs2{ :type=>"button"}= ">"
14
+ %button.wymupdate.button#tojs1{ :type=>"button"}= "<"
15
+ %td
16
+ %h3= t('admin.pages.tabs.javascripts.current_javascripts')
17
+ = select("page", "javascript_ids", page_javascripts.collect {|p| [ p.name, p.id ] }, {}, {:multiple => true, :id => 'box2javascriptView', :style => "height: 200px; width: 200px"})
18
+ %div
19
+ %select#box2javascriptStorage
20
+
21
+ %aside#actions
22
+ %ul
23
+ %li
24
+ = link_to t('admin.javascripts.actions.create_new'), new_admin_javascript_path, :class => 'add_icon', :id => 'add-new-javascript'
25
+
26
+ %p#javascript-instructions= t('admin.pages.tabs.javascripts.add_to_page_instructions')
@@ -0,0 +1,11 @@
1
+ <% content_for :body_content_left do %>
2
+ <ul id="javascripts">
3
+ <% @javascripts.each do |javascript| %>
4
+ <li>
5
+ <%= link_to javascript.name, javascript_url(javascript) %>
6
+ </li>
7
+ <% end %>
8
+ </ul>
9
+ <% end %>
10
+
11
+ <%= render :partial => "/shared/content_page" %>
@@ -0,0 +1,33 @@
1
+ <% content_for :body_content_title do %>
2
+ <%= @javascript.name %>
3
+ <% end %>
4
+
5
+ <% content_for :body_content_left do %>
6
+ <section>
7
+ <h1>Name</h1>
8
+ <p>
9
+ <%=raw @javascript.name %>
10
+ </p>
11
+ </section>
12
+ <section>
13
+ <h1>Content</h1>
14
+ <p>
15
+ <%=raw @javascript.content %>
16
+ </p>
17
+ </section>
18
+ <% end %>
19
+
20
+ <% content_for :body_content_right do %>
21
+ <aside>
22
+ <h2><%= t('.other') %></h2>
23
+ <ul id="javascripts">
24
+ <% @javascripts.each do |javascript| %>
25
+ <li>
26
+ <%= link_to javascript.name, javascript_url(javascript) %>
27
+ </li>
28
+ <% end %>
29
+ </ul>
30
+ </aside>
31
+ <% end %>
32
+
33
+ <%= render :partial => "/shared/content_page" %>
@@ -0,0 +1,31 @@
1
+ en:
2
+ shared:
3
+ admin:
4
+ image_picker:
5
+ image: image
6
+ plugins:
7
+ javascripts:
8
+ title: Javascripts
9
+ admin:
10
+ javascripts:
11
+ actions:
12
+ create_new: Add New Javascript
13
+ reorder: Reorder Javascripts
14
+ reorder_done: Done Reordering Javascripts
15
+ records:
16
+ title: Javascripts
17
+ sorry_no_results: Sorry! There are no results found.
18
+ no_items_yet: There are no Javascripts yet. Click "Add New Javascript" to add your first javascript.
19
+ javascript:
20
+ view_live_html: View this javascript live <br/><em>(opens in a new window)</em>
21
+ edit: Edit this javascript
22
+ delete: Remove this javascript forever
23
+ pages:
24
+ tabs:
25
+ javascripts:
26
+ add_to_page_instructions: '*Add a javascript file to the page by clicking the right arrow or double clicking on the name of the javascript file.'
27
+ current_javascripts: 'Currently Included Javascripts'
28
+ all_javascripts: 'All Available Javascripts'
29
+ javascripts:
30
+ show:
31
+ other: Other Javascripts
@@ -0,0 +1,25 @@
1
+ lolcat:
2
+ shared:
3
+ admin:
4
+ image_picker:
5
+ image: IMAGE
6
+ plugins:
7
+ javascripts:
8
+ title: Javascripts
9
+ admin:
10
+ javascripts:
11
+ actions:
12
+ create_new: CREATE NEW Javascript
13
+ reorder: REORDR Javascripts
14
+ reorder_done: DUN REORDERIN Javascripts
15
+ records:
16
+ title: Javascripts
17
+ sorry_no_results: SRY! THAR R NO RESULTS FINDZ.
18
+ no_items_yet: THAR R NO Javascripts YET. CLICK "CREATE NEW Javascript" 2 ADD UR FURST javascript.
19
+ javascript:
20
+ view_live_html: VIEW DIS javascript LIV <BR/><EM>(OPENS IN NEW WINDOW)</EM>
21
+ edit: EDIT DIS javascript
22
+ delete: REMOOV DIS javascript FOREVR
23
+ javascripts:
24
+ show:
25
+ other: OTHR Javascripts
@@ -0,0 +1,21 @@
1
+ nb:
2
+ plugins:
3
+ javascripts:
4
+ title: Javascripts
5
+ admin:
6
+ javascripts:
7
+ actions:
8
+ create_new: Lag en ny Javascript
9
+ reorder: Endre rekkefølgen på Javascripts
10
+ reorder_done: Ferdig å endre rekkefølgen Javascripts
11
+ records:
12
+ title: Javascripts
13
+ sorry_no_results: Beklager! Vi fant ikke noen resultater.
14
+ no_items_yet: Det er ingen Javascripts enda. Klikk på "Lag en ny Javascript" for å legge til din første javascript.
15
+ javascript:
16
+ view_live_html: Vis hvordan denne javascript ser ut offentlig <br/><em>(åpner i et nytt vindu)</em>
17
+ edit: Rediger denne javascript
18
+ delete: Fjern denne javascript permanent
19
+ javascripts:
20
+ show:
21
+ other: Andre Javascripts
@@ -0,0 +1,21 @@
1
+ nl:
2
+ plugins:
3
+ javascripts:
4
+ title: Javascripts
5
+ admin:
6
+ javascripts:
7
+ actions:
8
+ create_new: Maak een nieuwe Javascript
9
+ reorder: Wijzig de volgorde van de Javascripts
10
+ reorder_done: Klaar met het wijzingen van de volgorde van de Javascripts
11
+ records:
12
+ title: Javascripts
13
+ sorry_no_results: Helaas! Er zijn geen resultaten gevonden.
14
+ no_items_yet: Er zijn nog geen Javascripts. Druk op 'Maak een nieuwe Javascript' om de eerste aan te maken.
15
+ javascript:
16
+ view_live_html: Bekijk deze javascript op de website <br/><em>(opent een nieuw venster)</em>
17
+ edit: Bewerk deze javascript
18
+ delete: Verwijder deze javascript voor eeuwig
19
+ javascripts:
20
+ show:
21
+ other: Andere Javascripts
@@ -0,0 +1,11 @@
1
+ Refinery::Application.routes.draw do
2
+ resources :javascripts, :only => [:index, :show]
3
+
4
+ scope(:path => 'refinery', :as => 'admin', :module => 'admin') do
5
+ resources :javascripts, :except => :show do
6
+ collection do
7
+ post :update_positions
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ class RefinerycmsJavascripts < Refinery::Generators::EngineInstaller
2
+
3
+ source_root File.expand_path('../../../', __FILE__)
4
+ engine_name "javascripts"
5
+
6
+ end
@@ -0,0 +1,61 @@
1
+ require 'refinerycms-base'
2
+
3
+ module Refinery
4
+ module Javascripts
5
+ class Engine < Rails::Engine
6
+ initializer "static assets" do |app|
7
+ app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
8
+ end
9
+
10
+ refinery.after_inclusion do
11
+ Page.send :has_and_belongs_to_many_javascripts
12
+ Page.send :attr_accessible, :javascript_ids
13
+ end
14
+
15
+ def self.register(tab)
16
+ tab.name = "javascripts"
17
+ tab.partial = "/admin/pages/tabs/javascripts/index"
18
+ end
19
+
20
+ config.after_initialize do
21
+
22
+ ::Refinery::Pages::Tab.register do |tab|
23
+ register tab
24
+ end
25
+
26
+ Refinery::Plugin.register do |plugin|
27
+ plugin.name = "javascripts"
28
+ plugin.activity = {
29
+ :class => Javascript,
30
+ :title => 'name'
31
+ }
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ module Refinery
39
+ module Javascripts
40
+ module Extension
41
+
42
+ def self.included(base)
43
+ base.extend(ClassMethods)
44
+ end
45
+
46
+ module ClassMethods
47
+ def has_and_belongs_to_many_javascripts
48
+ has_and_belongs_to_many :javascripts
49
+
50
+ include Refinery::Javascripts::Extension::InstanceMethods
51
+ end
52
+ end
53
+
54
+ module InstanceMethods
55
+
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ ActiveRecord::Base.send(:include, Refinery::Javascripts::Extension)
@@ -0,0 +1,13 @@
1
+ namespace :refinery do
2
+
3
+ namespace :javascripts do
4
+
5
+ # call this task my running: rake refinery:javascripts:my_task
6
+ # desc "Description of my task below"
7
+ # task :my_task => :environment do
8
+ # # add your logic here
9
+ # end
10
+
11
+ end
12
+
13
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refinerycms-javascripts
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 1
10
+ version: 1.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Trevor Jones
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-06-13 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: Ruby on Rails Javascripts engine for Refinery CMS
23
+ email:
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/refinerycms-javascripts.rb
32
+ - lib/tasks/javascripts.rake
33
+ - lib/generators/refinerycms_javascripts_generator.rb
34
+ - config/locales/nl.yml
35
+ - config/locales/en.yml
36
+ - config/locales/lolcat.yml
37
+ - config/locales/nb.yml
38
+ - config/routes.rb
39
+ - app/controllers/admin/javascripts_controller.rb
40
+ - app/controllers/javascripts_controller.rb
41
+ - app/models/javascript.rb
42
+ - app/views/admin/javascripts/new.html.erb
43
+ - app/views/admin/javascripts/_actions.html.erb
44
+ - app/views/admin/javascripts/_records.html.erb
45
+ - app/views/admin/javascripts/_sortable_list.html.erb
46
+ - app/views/admin/javascripts/_javascript.html.erb
47
+ - app/views/admin/javascripts/index.html.erb
48
+ - app/views/admin/javascripts/edit.html.erb
49
+ - app/views/admin/javascripts/_form.html.erb
50
+ - app/views/admin/javascripts/_javascripts.html.erb
51
+ - app/views/admin/pages/tabs/javascripts/_javascript_picker.html.haml
52
+ - app/views/admin/pages/tabs/javascripts/_index.html.haml
53
+ - app/views/javascripts/show.html.erb
54
+ - app/views/javascripts/index.html.erb
55
+ has_rdoc: true
56
+ homepage:
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options: []
61
+
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ requirements: []
83
+
84
+ rubyforge_project:
85
+ rubygems_version: 1.4.2
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: Javascripts engine for Refinery CMS
89
+ test_files: []
90
+