static_blocks 0.1.1 → 1.0.0
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.md +13 -7
 - data/app/controllers/static_blocks/application_controller.rb +0 -4
 - data/app/controllers/static_blocks/{static_blocks_controller.rb → snippets_controller.rb} +36 -36
 - data/app/helpers/static_blocks/{static_blocks_helper.rb → snippets_helper.rb} +0 -0
 - data/app/models/static_blocks/{static_block.rb → snippet.rb} +19 -19
 - data/app/views/layouts/static_blocks/application.html.erb +10 -8
 - data/app/views/static_blocks/{static_blocks → snippets}/_form.html.erb +4 -4
 - data/app/views/static_blocks/snippets/edit.html.erb +4 -0
 - data/app/views/static_blocks/{static_blocks → snippets}/index.html.erb +14 -14
 - data/app/views/static_blocks/snippets/new.html.erb +3 -0
 - data/app/views/static_blocks/snippets/show.html.erb +23 -0
 - data/config/routes.rb +11 -7
 - data/db/migrate/20130611042319_create_static_blocks_static_blocks.rb +2 -2
 - data/db/migrate/20130612034816_create_static_block_translations.rb +3 -3
 - data/lib/static_blocks/engine.rb +2 -1
 - data/lib/static_blocks/helpers.rb +11 -11
 - data/lib/static_blocks/version.rb +1 -1
 - data/lib/tasks/populate.rake +1 -1
 - data/spec/dummy/app/views/info/index.html.erb +1 -1
 - data/spec/dummy/config/initializers/static_blocks.rb +2 -1
 - data/spec/dummy/config/routes.rb +1 -2
 - data/spec/dummy/db/development.sqlite3 +0 -0
 - data/spec/dummy/db/migrate/20130611042521_create_static_blocks_static_blocks.static_blocks.rb +2 -2
 - data/spec/dummy/db/migrate/20130612035223_create_static_block_translations.static_blocks.rb +3 -3
 - data/spec/dummy/db/schema.rb +5 -5
 - data/spec/dummy/db/test.sqlite3 +0 -0
 - data/spec/dummy/log/development.log +34145 -0
 - data/spec/dummy/log/test.log +17664 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271715434400421805.html +105 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271720151310204564.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271721083468243101.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271721478445036540.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271721487345133836.html +97 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271722466837246437.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271722471821301599.html +105 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271724391294417961.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271725269568506755.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271725532116510731.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271726399551759972.html +97 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271732329832575014.html +105 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271733118671160246.html +105 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271733551813912702.html +105 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271736422992487098.html +105 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271737422569974960.html +2 -0
 - data/spec/dummy/tmp/capybara/capybara-201306271741158405455507.html +3 -0
 - data/spec/dummy/tmp/pids/server.pid +1 -0
 - data/spec/helpers/static_blocks_helper_spec.rb +4 -4
 - data/spec/integration/import_export_spec.rb +41 -0
 - data/spec/integration/search_spec.rb +41 -0
 - data/spec/integration/static_blocks_spec.rb +12 -12
 - data/spec/integration/translations_spec.rb +24 -0
 - data/spec/models/static_block_spec.rb +3 -3
 - metadata +52 -14
 - data/app/views/static_blocks/static_blocks/edit.html.erb +0 -4
 - data/app/views/static_blocks/static_blocks/new.html.erb +0 -3
 - data/app/views/static_blocks/static_blocks/show.html.erb +0 -23
 - data/spec/dummy/tmp/cache/96E/880/static_block%3A%3Aen%3A%3Afoo +0 -2
 - data/spec/dummy/tmp/cache/97D/300/static_block%3A%3Awk%3A%3Afoo +0 -2
 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,6 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Static Blocks
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            Static Blocks is an ultra light-weight CMS for Ruby on Rails. 
     | 
| 
      
 3 
     | 
    
         
            +
            Static Blocks is an ultra light-weight CMS for Ruby on Rails.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Create snippets of content. Place them anywhere in your views.
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
       5 
7 
     | 
    
         
             
            ## Features
         
     | 
| 
       6 
8 
     | 
    
         
             
            * Simple admin interface
         
     | 
| 
         @@ -39,17 +41,17 @@ rake db:migrate 
     | 
|
| 
       39 
41 
     | 
    
         
             
            Mount engine in routes.rb:
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
       41 
43 
     | 
    
         
             
            ```ruby
         
     | 
| 
       42 
     | 
    
         
            -
            mount StaticBlocks::Engine => "/ 
     | 
| 
      
 44 
     | 
    
         
            +
            mount StaticBlocks::Engine => "/static_blocks"
         
     | 
| 
       43 
45 
     | 
    
         
             
            ```
         
     | 
| 
       44 
46 
     | 
    
         | 
| 
       45 
47 
     | 
    
         
             
            ## Usage
         
     | 
| 
       46 
48 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
            Visit `/ 
     | 
| 
      
 49 
     | 
    
         
            +
            Visit `/static_blocks` and create some static blocks.
         
     | 
| 
       48 
50 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
            Use the ` 
     | 
| 
      
 51 
     | 
    
         
            +
            Use the `snippet_for` method or it's alias `s` to output a block onto any view template. Pass in the title of the static block as argument. Use `raw` if you do not want to escape the html.
         
     | 
| 
       50 
52 
     | 
    
         | 
| 
       51 
53 
     | 
    
         
             
            ```
         
     | 
| 
       52 
     | 
    
         
            -
            <%=raw  
     | 
| 
      
 54 
     | 
    
         
            +
            <%=raw snippet_for('foo') %>
         
     | 
| 
       53 
55 
     | 
    
         
             
            <%=raw s('foo') %>
         
     | 
| 
       54 
56 
     | 
    
         
             
            ```
         
     | 
| 
       55 
57 
     | 
    
         | 
| 
         @@ -63,6 +65,7 @@ StaticBlocks.config do |config| 
     | 
|
| 
       63 
65 
     | 
    
         
             
              config.http_auth = false
         
     | 
| 
       64 
66 
     | 
    
         
             
              config.username = ENV['STATIC_BLOCKS_USERNAME']
         
     | 
| 
       65 
67 
     | 
    
         
             
              config.password = ENV['STATIC_BLOCKS_PASSWORD']
         
     | 
| 
      
 68 
     | 
    
         
            +
              config.wysihtml5 = true
         
     | 
| 
       66 
69 
     | 
    
         
             
            end
         
     | 
| 
       67 
70 
     | 
    
         
             
            ```
         
     | 
| 
       68 
71 
     | 
    
         | 
| 
         @@ -71,7 +74,7 @@ end 
     | 
|
| 
       71 
74 
     | 
    
         
             
            Static Blocks supports i18n internationalization. Pass in an array of locales to it's config option:
         
     | 
| 
       72 
75 
     | 
    
         | 
| 
       73 
76 
     | 
    
         
             
            ```ruby
         
     | 
| 
       74 
     | 
    
         
            -
            config.locales = ['en', 'wk', ' 
     | 
| 
      
 77 
     | 
    
         
            +
            config.locales = ['en', 'wk', 'pirate']
         
     | 
| 
       75 
78 
     | 
    
         
             
            ```
         
     | 
| 
       76 
79 
     | 
    
         | 
| 
       77 
80 
     | 
    
         
             
            ### Optional http basic authentication
         
     | 
| 
         @@ -82,8 +85,11 @@ Static Blocks has an optional http basic authentication which is turned off by d 
     | 
|
| 
       82 
85 
     | 
    
         
             
            config.http_auth = true
         
     | 
| 
       83 
86 
     | 
    
         
             
            ```
         
     | 
| 
       84 
87 
     | 
    
         | 
| 
      
 88 
     | 
    
         
            +
            ### wysihtml5 editor
         
     | 
| 
      
 89 
     | 
    
         
            +
            Static Blocks uses the wysihtml5 editor which is turned on by default. To deactive, set the config option to false.
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       85 
91 
     | 
    
         
             
            ## Credits
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 92 
     | 
    
         
            +
            Created by Travis Luong
         
     | 
| 
       87 
93 
     | 
    
         | 
| 
       88 
94 
     | 
    
         
             
            ## License
         
     | 
| 
       89 
95 
     | 
    
         
             
            [MIT](http://opensource.org/licenses/MIT)
         
     | 
| 
         @@ -11,10 +11,6 @@ module StaticBlocks 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                def set_locale
         
     | 
| 
       13 
13 
     | 
    
         
             
                  I18n.locale = params[:locale] if params[:locale].present?
         
     | 
| 
       14 
     | 
    
         
            -
                  # current_user.locale
         
     | 
| 
       15 
     | 
    
         
            -
                  # request.subdomain
         
     | 
| 
       16 
     | 
    
         
            -
                  # request.env["HTTP_ACCEPT_LANGUAGE"]
         
     | 
| 
       17 
     | 
    
         
            -
                  # request.remote_ip
         
     | 
| 
       18 
14 
     | 
    
         
             
                end
         
     | 
| 
       19 
15 
     | 
    
         | 
| 
       20 
16 
     | 
    
         
             
                def default_url_options(options = {})
         
     | 
| 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require_dependency "static_blocks/application_controller"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module StaticBlocks
         
     | 
| 
       4 
     | 
    
         
            -
              class  
     | 
| 
      
 4 
     | 
    
         
            +
              class SnippetsController < ApplicationController
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                def export
         
     | 
| 
       7 
7 
     | 
    
         
             
                  t = Time.now.strftime('%Y%m%d%H%M%S')
         
     | 
| 
       8 
8 
     | 
    
         
             
                  filename = "static-blocks-#{t}.csv"
         
     | 
| 
       9 
9 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       10 
10 
     | 
    
         
             
                    format.csv do
         
     | 
| 
       11 
     | 
    
         
            -
                      send_data  
     | 
| 
      
 11 
     | 
    
         
            +
                      send_data Snippet.to_csv, :filename => filename
         
     | 
| 
       12 
12 
     | 
    
         
             
                    end
         
     | 
| 
       13 
13 
     | 
    
         
             
                  end
         
     | 
| 
       14 
14 
     | 
    
         
             
                end
         
     | 
| 
         @@ -18,7 +18,7 @@ module StaticBlocks 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  filename = "static-blocks-translations-#{t}.csv"
         
     | 
| 
       19 
19 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       20 
20 
     | 
    
         
             
                    format.csv do
         
     | 
| 
       21 
     | 
    
         
            -
                      send_data  
     | 
| 
      
 21 
     | 
    
         
            +
                      send_data Snippet.translations_to_csv, :filename => filename
         
     | 
| 
       22 
22 
     | 
    
         
             
                    end
         
     | 
| 
       23 
23 
     | 
    
         
             
                  end
         
     | 
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
         @@ -31,7 +31,7 @@ module StaticBlocks 
     | 
|
| 
       31 
31 
     | 
    
         
             
                    redirect_to root_url
         
     | 
| 
       32 
32 
     | 
    
         
             
                    flash[:error] = "Wrong file. You uploaded the translations."
         
     | 
| 
       33 
33 
     | 
    
         
             
                  else
         
     | 
| 
       34 
     | 
    
         
            -
                     
     | 
| 
      
 34 
     | 
    
         
            +
                    Snippet.import(params[:file])
         
     | 
| 
       35 
35 
     | 
    
         
             
                    redirect_to root_url, notice: "Static Blocks imported"
         
     | 
| 
       36 
36 
     | 
    
         
             
                  end
         
     | 
| 
       37 
37 
     | 
    
         
             
                end
         
     | 
| 
         @@ -41,7 +41,7 @@ module StaticBlocks 
     | 
|
| 
       41 
41 
     | 
    
         
             
                    redirect_to root_url
         
     | 
| 
       42 
42 
     | 
    
         
             
                    flash[:error] = "You did not attach a file."
         
     | 
| 
       43 
43 
     | 
    
         
             
                  elsif params[:file].original_filename.include? 'translations'
         
     | 
| 
       44 
     | 
    
         
            -
                     
     | 
| 
      
 44 
     | 
    
         
            +
                    Snippet.import_translations(params[:file])
         
     | 
| 
       45 
45 
     | 
    
         
             
                    redirect_to root_url, notice: "Static Block translations imported"
         
     | 
| 
       46 
46 
     | 
    
         
             
                  else
         
     | 
| 
       47 
47 
     | 
    
         
             
                    redirect_to root_url
         
     | 
| 
         @@ -52,82 +52,82 @@ module StaticBlocks 
     | 
|
| 
       52 
52 
     | 
    
         
             
                # GET /static_blocks
         
     | 
| 
       53 
53 
     | 
    
         
             
                # GET /static_blocks.json
         
     | 
| 
       54 
54 
     | 
    
         
             
                def index
         
     | 
| 
       55 
     | 
    
         
            -
                  @search =  
     | 
| 
       56 
     | 
    
         
            -
                  @ 
     | 
| 
      
 55 
     | 
    
         
            +
                  @search = Snippet.order('title asc').search(params[:q])
         
     | 
| 
      
 56 
     | 
    
         
            +
                  @snippets = @search.result.per_page_kaminari(params[:page]).per(10)
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       59 
59 
     | 
    
         
             
                    format.html # index.html.erb
         
     | 
| 
       60 
     | 
    
         
            -
                    format.json { render json: @ 
     | 
| 
      
 60 
     | 
    
         
            +
                    format.json { render json: @snippets }
         
     | 
| 
       61 
61 
     | 
    
         
             
                  end
         
     | 
| 
       62 
62 
     | 
    
         
             
                end
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
                # GET / 
     | 
| 
       65 
     | 
    
         
            -
                # GET / 
     | 
| 
      
 64 
     | 
    
         
            +
                # GET /snippets/1
         
     | 
| 
      
 65 
     | 
    
         
            +
                # GET /snippets/1.json
         
     | 
| 
       66 
66 
     | 
    
         
             
                def show
         
     | 
| 
       67 
     | 
    
         
            -
                  @ 
     | 
| 
      
 67 
     | 
    
         
            +
                  @snippet = Snippet.find(params[:id])
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
69 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       70 
70 
     | 
    
         
             
                    format.html # show.html.erb
         
     | 
| 
       71 
     | 
    
         
            -
                    format.json { render json: @ 
     | 
| 
      
 71 
     | 
    
         
            +
                    format.json { render json: @snippet }
         
     | 
| 
       72 
72 
     | 
    
         
             
                  end
         
     | 
| 
       73 
73 
     | 
    
         
             
                end
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
       75 
     | 
    
         
            -
                # GET / 
     | 
| 
       76 
     | 
    
         
            -
                # GET / 
     | 
| 
      
 75 
     | 
    
         
            +
                # GET /snippets/new
         
     | 
| 
      
 76 
     | 
    
         
            +
                # GET /snippets/new.json
         
     | 
| 
       77 
77 
     | 
    
         
             
                def new
         
     | 
| 
       78 
     | 
    
         
            -
                  @ 
     | 
| 
      
 78 
     | 
    
         
            +
                  @snippet = Snippet.new
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
80 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       81 
81 
     | 
    
         
             
                    format.html # new.html.erb
         
     | 
| 
       82 
     | 
    
         
            -
                    format.json { render json: @ 
     | 
| 
      
 82 
     | 
    
         
            +
                    format.json { render json: @snippet }
         
     | 
| 
       83 
83 
     | 
    
         
             
                  end
         
     | 
| 
       84 
84 
     | 
    
         
             
                end
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
                # GET / 
     | 
| 
      
 86 
     | 
    
         
            +
                # GET /snippets/1/edit
         
     | 
| 
       87 
87 
     | 
    
         
             
                def edit
         
     | 
| 
       88 
     | 
    
         
            -
                  @ 
     | 
| 
      
 88 
     | 
    
         
            +
                  @snippet = Snippet.find(params[:id])
         
     | 
| 
       89 
89 
     | 
    
         
             
                end
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
                # POST / 
     | 
| 
       92 
     | 
    
         
            -
                # POST / 
     | 
| 
      
 91 
     | 
    
         
            +
                # POST /snippets
         
     | 
| 
      
 92 
     | 
    
         
            +
                # POST /snippets.json
         
     | 
| 
       93 
93 
     | 
    
         
             
                def create
         
     | 
| 
       94 
     | 
    
         
            -
                  @ 
     | 
| 
      
 94 
     | 
    
         
            +
                  @snippet = Snippet.new(params[:snippet])
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
       96 
96 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       97 
     | 
    
         
            -
                    if @ 
     | 
| 
       98 
     | 
    
         
            -
                      format.html { redirect_to @ 
     | 
| 
       99 
     | 
    
         
            -
                      format.json { render json: @ 
     | 
| 
      
 97 
     | 
    
         
            +
                    if @snippet.save
         
     | 
| 
      
 98 
     | 
    
         
            +
                      format.html { redirect_to @snippet, notice: 'Snippet was successfully created.' }
         
     | 
| 
      
 99 
     | 
    
         
            +
                      format.json { render json: @snippet, status: :created, location: @snippet }
         
     | 
| 
       100 
100 
     | 
    
         
             
                    else
         
     | 
| 
       101 
101 
     | 
    
         
             
                      format.html { render action: "new" }
         
     | 
| 
       102 
     | 
    
         
            -
                      format.json { render json: @ 
     | 
| 
      
 102 
     | 
    
         
            +
                      format.json { render json: @snippet.errors, status: :unprocessable_entity }
         
     | 
| 
       103 
103 
     | 
    
         
             
                    end
         
     | 
| 
       104 
104 
     | 
    
         
             
                  end
         
     | 
| 
       105 
105 
     | 
    
         
             
                end
         
     | 
| 
       106 
106 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
                # PUT / 
     | 
| 
       108 
     | 
    
         
            -
                # PUT / 
     | 
| 
      
 107 
     | 
    
         
            +
                # PUT /snippets/1
         
     | 
| 
      
 108 
     | 
    
         
            +
                # PUT /snippets/1.json
         
     | 
| 
       109 
109 
     | 
    
         
             
                def update
         
     | 
| 
       110 
     | 
    
         
            -
                  @ 
     | 
| 
      
 110 
     | 
    
         
            +
                  @snippet = Snippet.find(params[:id])
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
112 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       113 
     | 
    
         
            -
                    if @ 
     | 
| 
       114 
     | 
    
         
            -
                      format.html { redirect_to @ 
     | 
| 
      
 113 
     | 
    
         
            +
                    if @snippet.update_attributes(params[:snippet])
         
     | 
| 
      
 114 
     | 
    
         
            +
                      format.html { redirect_to @snippet, notice: 'Static block was successfully updated.' }
         
     | 
| 
       115 
115 
     | 
    
         
             
                      format.json { head :no_content }
         
     | 
| 
       116 
116 
     | 
    
         
             
                    else
         
     | 
| 
       117 
117 
     | 
    
         
             
                      format.html { render action: "edit" }
         
     | 
| 
       118 
     | 
    
         
            -
                      format.json { render json: @ 
     | 
| 
      
 118 
     | 
    
         
            +
                      format.json { render json: @snippet.errors, status: :unprocessable_entity }
         
     | 
| 
       119 
119 
     | 
    
         
             
                    end
         
     | 
| 
       120 
120 
     | 
    
         
             
                  end
         
     | 
| 
       121 
121 
     | 
    
         
             
                end
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
                # DELETE / 
     | 
| 
       124 
     | 
    
         
            -
                # DELETE / 
     | 
| 
      
 123 
     | 
    
         
            +
                # DELETE /snippets/1
         
     | 
| 
      
 124 
     | 
    
         
            +
                # DELETE /snippets/1.json
         
     | 
| 
       125 
125 
     | 
    
         
             
                def destroy
         
     | 
| 
       126 
     | 
    
         
            -
                  @ 
     | 
| 
       127 
     | 
    
         
            -
                  @ 
     | 
| 
      
 126 
     | 
    
         
            +
                  @snippet = Snippet.find(params[:id])
         
     | 
| 
      
 127 
     | 
    
         
            +
                  @snippet.destroy
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
       129 
129 
     | 
    
         
             
                  respond_to do |format|
         
     | 
| 
       130 
     | 
    
         
            -
                    format.html { redirect_to  
     | 
| 
      
 130 
     | 
    
         
            +
                    format.html { redirect_to snippets_url }
         
     | 
| 
       131 
131 
     | 
    
         
             
                    format.json { head :no_content }
         
     | 
| 
       132 
132 
     | 
    
         
             
                  end
         
     | 
| 
       133 
133 
     | 
    
         
             
                end
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module StaticBlocks
         
     | 
| 
       2 
     | 
    
         
            -
              class  
     | 
| 
      
 2 
     | 
    
         
            +
              class Snippet < ActiveRecord::Base
         
     | 
| 
       3 
3 
     | 
    
         
             
                attr_accessible :content, :status, :title
         
     | 
| 
       4 
4 
     | 
    
         
             
                after_save :clear_cache
         
     | 
| 
       5 
5 
     | 
    
         
             
                scope :published, where(:status => 'published')
         
     | 
| 
         @@ -11,22 +11,22 @@ module StaticBlocks 
     | 
|
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                def clear_cache
         
     | 
| 
       14 
     | 
    
         
            -
                  Rails.cache.delete(" 
     | 
| 
      
 14 
     | 
    
         
            +
                  Rails.cache.delete("snippet::"+I18n.locale.to_s+"::"+title)
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                def self.to_csv(options = {})
         
     | 
| 
       18 
     | 
    
         
            -
                   
     | 
| 
       19 
     | 
    
         
            -
                   
     | 
| 
      
 18 
     | 
    
         
            +
                  snippets = self.connection.select_all('select * from static_blocks_snippets')
         
     | 
| 
      
 19 
     | 
    
         
            +
                  snippets_column_names = snippets.first.keys
         
     | 
| 
       20 
20 
     | 
    
         
             
                  CSV.generate(options) do |csv|
         
     | 
| 
       21 
     | 
    
         
            -
                    csv <<  
     | 
| 
       22 
     | 
    
         
            -
                     
     | 
| 
       23 
     | 
    
         
            -
                      csv << s.values_at(* 
     | 
| 
      
 21 
     | 
    
         
            +
                    csv << snippets_column_names
         
     | 
| 
      
 22 
     | 
    
         
            +
                    snippets.each do |s|
         
     | 
| 
      
 23 
     | 
    
         
            +
                      csv << s.values_at(*snippets_column_names)
         
     | 
| 
       24 
24 
     | 
    
         
             
                    end
         
     | 
| 
       25 
25 
     | 
    
         
             
                  end
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                def self.translations_to_csv(options = {})
         
     | 
| 
       29 
     | 
    
         
            -
                  translations = self.connection.select_all('select * from  
     | 
| 
      
 29 
     | 
    
         
            +
                  translations = self.connection.select_all('select * from static_blocks_snippet_translations')
         
     | 
| 
       30 
30 
     | 
    
         
             
                  translation_column_names = translations.first.keys
         
     | 
| 
       31 
31 
     | 
    
         
             
                  CSV.generate(options) do |csv|
         
     | 
| 
       32 
32 
     | 
    
         
             
                    csv << translation_column_names
         
     | 
| 
         @@ -38,30 +38,30 @@ module StaticBlocks 
     | 
|
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                def self.import(file)
         
     | 
| 
       40 
40 
     | 
    
         
             
                  CSV.foreach(file.path, headers: true) do |row|
         
     | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
       42 
     | 
    
         
            -
                     
     | 
| 
       43 
     | 
    
         
            -
                     
     | 
| 
       44 
     | 
    
         
            -
                     
     | 
| 
      
 41 
     | 
    
         
            +
                    snippet = find_by_title(row["title"]) || new
         
     | 
| 
      
 42 
     | 
    
         
            +
                    snippet.attributes = row.to_hash.slice(*accessible_attributes)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    snippet.id = row['id']
         
     | 
| 
      
 44 
     | 
    
         
            +
                    snippet.save!
         
     | 
| 
       45 
45 
     | 
    
         
             
                  end
         
     | 
| 
       46 
46 
     | 
    
         
             
                end
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
                def self.import_translations(file)
         
     | 
| 
       49 
49 
     | 
    
         
             
                  CSV.foreach(file.path, headers: true) do |row|
         
     | 
| 
       50 
50 
     | 
    
         
             
                    # find translation
         
     | 
| 
       51 
     | 
    
         
            -
                    raw_sql = "SELECT * FROM  
     | 
| 
      
 51 
     | 
    
         
            +
                    raw_sql = "SELECT * FROM static_blocks_snippet_translations WHERE id=#{row['id']}"
         
     | 
| 
       52 
52 
     | 
    
         
             
                    translation = ActiveRecord::Base.connection.execute(raw_sql)
         
     | 
| 
       53 
53 
     | 
    
         
             
                    if translation.present?
         
     | 
| 
       54 
54 
     | 
    
         
             
                      # update existing translation
         
     | 
| 
       55 
55 
     | 
    
         
             
                      raw_sql = "
         
     | 
| 
       56 
     | 
    
         
            -
                      UPDATE  
     | 
| 
       57 
     | 
    
         
            -
                      SET  
     | 
| 
       58 
     | 
    
         
            -
                      WHERE id=%d" % [row[' 
     | 
| 
      
 56 
     | 
    
         
            +
                      UPDATE static_blocks_snippet_translations
         
     | 
| 
      
 57 
     | 
    
         
            +
                      SET static_blocks_snippet_id=%d, locale='%s', content='%s', created_at='%s', updated_at='%s'
         
     | 
| 
      
 58 
     | 
    
         
            +
                      WHERE id=%d" % [row['static_blocks_snippet_id'], row['locale'], row['content'], row['created_at'], row['updated_at'], row['id']]
         
     | 
| 
       59 
59 
     | 
    
         
             
                    else
         
     | 
| 
       60 
60 
     | 
    
         
             
                      # create new translation
         
     | 
| 
       61 
61 
     | 
    
         
             
                      raw_sql = "
         
     | 
| 
       62 
     | 
    
         
            -
                      INSERT INTO  
     | 
| 
       63 
     | 
    
         
            -
                      ('id', ' 
     | 
| 
       64 
     | 
    
         
            -
                      ('%d', '%d', '%s', '%s', '%s', '%s')" % [row['id'], row[' 
     | 
| 
      
 62 
     | 
    
         
            +
                      INSERT INTO static_blocks_snippet_translations
         
     | 
| 
      
 63 
     | 
    
         
            +
                      ('id', 'static_blocks_snippet_id', 'locale', 'content', 'created_at', 'updated_at') VALUES
         
     | 
| 
      
 64 
     | 
    
         
            +
                      ('%d', '%d', '%s', '%s', '%s', '%s')" % [row['id'], row['static_blocks_snippet_id'], row['locale'], row['content'], row['created_at'], row['updated_at']]
         
     | 
| 
       65 
65 
     | 
    
         
             
                    end
         
     | 
| 
       66 
66 
     | 
    
         
             
                    ActiveRecord::Base.connection.execute(raw_sql)
         
     | 
| 
       67 
67 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -11,13 +11,13 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
              <div class="navbar">
         
     | 
| 
       12 
12 
     | 
    
         
             
                <div class="navbar-inner">
         
     | 
| 
       13 
13 
     | 
    
         
             
                  <div class="container">
         
     | 
| 
       14 
     | 
    
         
            -
                    <%= link_to "Static Blocks",  
     | 
| 
      
 14 
     | 
    
         
            +
                    <%= link_to "Static Blocks", snippets_path, :class => "brand" %>
         
     | 
| 
       15 
15 
     | 
    
         
             
                    <div class="nav-collapse collapse">
         
     | 
| 
       16 
16 
     | 
    
         
             
                      <ul class="nav pull-right">
         
     | 
| 
       17 
     | 
    
         
            -
                        <li><%= link_to "List blocks",  
     | 
| 
       18 
     | 
    
         
            -
                        <li><%= link_to "New block",  
     | 
| 
       19 
     | 
    
         
            -
                        <li><%= link_to "Export",  
     | 
| 
       20 
     | 
    
         
            -
                        <li><%= link_to "Export translations",  
     | 
| 
      
 17 
     | 
    
         
            +
                        <li><%= link_to "List blocks", snippets_path %></li>
         
     | 
| 
      
 18 
     | 
    
         
            +
                        <li><%= link_to "New block", new_snippet_path %></li>
         
     | 
| 
      
 19 
     | 
    
         
            +
                        <li><%= link_to "Export", export_snippets_path(:format => :csv) %></li>
         
     | 
| 
      
 20 
     | 
    
         
            +
                        <li><%= link_to "Export translations", export_translations_snippets_path(:format => :csv) %></li> </ul>
         
     | 
| 
       21 
21 
     | 
    
         
             
                    </div><!--/.nav-collapse -->
         
     | 
| 
       22 
22 
     | 
    
         
             
                  </div>
         
     | 
| 
       23 
23 
     | 
    
         
             
                </div>
         
     | 
| 
         @@ -34,11 +34,11 @@ 
     | 
|
| 
       34 
34 
     | 
    
         
             
                <% end %>
         
     | 
| 
       35 
35 
     | 
    
         
             
                <% end %>
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                <div id="locale">
         
     | 
| 
       38 
     | 
    
         
            -
                  Language
         
     | 
| 
      
 37 
     | 
    
         
            +
                <div id="locale" class="well well-small">
         
     | 
| 
      
 38 
     | 
    
         
            +
                  <strong>Language:</strong>
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                  <% StaticBlocks.config.locales.each do |loc| %>
         
     | 
| 
       41 
     | 
    
         
            -
                     
     | 
| 
      
 41 
     | 
    
         
            +
                     <%= link_to_unless_current loc, locale: loc %>
         
     | 
| 
       42 
42 
     | 
    
         
             
                  <% end %>
         
     | 
| 
       43 
43 
     | 
    
         
             
                </div>
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
         @@ -46,6 +46,7 @@ 
     | 
|
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
              </div>
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
      
 49 
     | 
    
         
            +
              <% if StaticBlocks.config.wysihtml5 %>
         
     | 
| 
       49 
50 
     | 
    
         
             
              <script type="text/javascript">
         
     | 
| 
       50 
51 
     | 
    
         
             
              $('.wysihtml5').each(function(i, elem) {
         
     | 
| 
       51 
52 
     | 
    
         
             
                $(elem).wysihtml5({
         
     | 
| 
         @@ -53,6 +54,7 @@ 
     | 
|
| 
       53 
54 
     | 
    
         
             
                });
         
     | 
| 
       54 
55 
     | 
    
         
             
              });
         
     | 
| 
       55 
56 
     | 
    
         
             
              </script>
         
     | 
| 
      
 57 
     | 
    
         
            +
              <% end %>
         
     | 
| 
       56 
58 
     | 
    
         | 
| 
       57 
59 
     | 
    
         
             
            </body>
         
     | 
| 
       58 
60 
     | 
    
         
             
            </html>
         
     | 
| 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <%= form_for(@ 
     | 
| 
       2 
     | 
    
         
            -
              <% if @ 
     | 
| 
      
 1 
     | 
    
         
            +
            <%= form_for(@snippet) do |f| %>
         
     | 
| 
      
 2 
     | 
    
         
            +
              <% if @snippet.errors.any? %>
         
     | 
| 
       3 
3 
     | 
    
         
             
                <div id="error_explanation">
         
     | 
| 
       4 
     | 
    
         
            -
                  <h2><%= pluralize(@ 
     | 
| 
      
 4 
     | 
    
         
            +
                  <h2><%= pluralize(@snippet.errors.count, "error") %> prohibited this snippet from being saved:</h2>
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
                  <ul>
         
     | 
| 
       7 
     | 
    
         
            -
                  <% @ 
     | 
| 
      
 7 
     | 
    
         
            +
                  <% @snippet.errors.full_messages.each do |msg| %>
         
     | 
| 
       8 
8 
     | 
    
         
             
                    <li><%= msg %></li>
         
     | 
| 
       9 
9 
     | 
    
         
             
                  <% end %>
         
     | 
| 
       10 
10 
     | 
    
         
             
                  </ul>
         
     | 
| 
         @@ -1,4 +1,4 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <h1>Listing  
     | 
| 
      
 1 
     | 
    
         
            +
            <h1>Listing snippets</h1>
         
     | 
| 
       2 
2 
     | 
    
         
             
            <div class="row">
         
     | 
| 
       3 
3 
     | 
    
         
             
            <div class="span6">
         
     | 
| 
       4 
4 
     | 
    
         
             
              <h2>Search</h2>
         
     | 
| 
         @@ -8,8 +8,8 @@ 
     | 
|
| 
       8 
8 
     | 
    
         
             
                  <%= f.text_field :title_cont %>
         
     | 
| 
       9 
9 
     | 
    
         
             
                </div>
         
     | 
| 
       10 
10 
     | 
    
         
             
                <div class="field">
         
     | 
| 
       11 
     | 
    
         
            -
                  <%= f.label : 
     | 
| 
       12 
     | 
    
         
            -
                  <%= f.text_field : 
     | 
| 
      
 11 
     | 
    
         
            +
                  <%= f.label :translations_content_cont, "Content contains" %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <%= f.text_field :translations_content_cont %>
         
     | 
| 
       13 
13 
     | 
    
         
             
                </div>
         
     | 
| 
       14 
14 
     | 
    
         
             
                <div class="field">
         
     | 
| 
       15 
15 
     | 
    
         
             
                  <%= f.label :status_cont, "Status contains" %>
         
     | 
| 
         @@ -20,19 +20,19 @@ 
     | 
|
| 
       20 
20 
     | 
    
         
             
            </div>
         
     | 
| 
       21 
21 
     | 
    
         
             
            <div class="span6">
         
     | 
| 
       22 
22 
     | 
    
         
             
              <h2>Import</h2>
         
     | 
| 
       23 
     | 
    
         
            -
              <%= form_tag  
     | 
| 
      
 23 
     | 
    
         
            +
              <%= form_tag import_snippets_path, multipart: true do %>
         
     | 
| 
       24 
24 
     | 
    
         
             
                <%= file_field_tag :file %>
         
     | 
| 
       25 
25 
     | 
    
         
             
                <%= submit_tag "Import" %>
         
     | 
| 
       26 
26 
     | 
    
         
             
              <% end %>
         
     | 
| 
       27 
27 
     | 
    
         
             
              <h2>Import Translations</h2>
         
     | 
| 
       28 
     | 
    
         
            -
              <%= form_tag  
     | 
| 
      
 28 
     | 
    
         
            +
              <%= form_tag import_translations_snippets_path, multipart: true do %>
         
     | 
| 
       29 
29 
     | 
    
         
             
                <%= file_field_tag :file %>
         
     | 
| 
       30 
30 
     | 
    
         
             
                <%= submit_tag "Import Translations" %>
         
     | 
| 
       31 
31 
     | 
    
         
             
              <% end %>
         
     | 
| 
       32 
32 
     | 
    
         
             
            </div>
         
     | 
| 
       33 
33 
     | 
    
         
             
            </div>
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
            <%= paginate @ 
     | 
| 
      
 35 
     | 
    
         
            +
            <%= paginate @snippets, :theme => 'twitter-bootstrap' %>
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
37 
     | 
    
         
             
            <table id="static-block-list" class="table table-striped">
         
     | 
| 
       38 
38 
     | 
    
         
             
              <tr>
         
     | 
| 
         @@ -44,16 +44,16 @@ 
     | 
|
| 
       44 
44 
     | 
    
         
             
                <th></th>
         
     | 
| 
       45 
45 
     | 
    
         
             
              </tr>
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
              <% @ 
     | 
| 
      
 47 
     | 
    
         
            +
              <% @snippets.each do |snippet| %>
         
     | 
| 
       48 
48 
     | 
    
         
             
              <tr>
         
     | 
| 
       49 
     | 
    
         
            -
                <td><%=  
     | 
| 
       50 
     | 
    
         
            -
                <td><%=  
     | 
| 
       51 
     | 
    
         
            -
                <td><%=  
     | 
| 
       52 
     | 
    
         
            -
                <td><%= link_to 'Show',  
     | 
| 
       53 
     | 
    
         
            -
                <td><%= link_to 'Edit',  
     | 
| 
       54 
     | 
    
         
            -
                <td><%= link_to 'Destroy',  
     | 
| 
      
 49 
     | 
    
         
            +
                <td><%= snippet.title %></td>
         
     | 
| 
      
 50 
     | 
    
         
            +
                <td><%= snippet.content %></td>
         
     | 
| 
      
 51 
     | 
    
         
            +
                <td><%= snippet.status %></td>
         
     | 
| 
      
 52 
     | 
    
         
            +
                <td><%= link_to 'Show', snippet_path(snippet), class: "btn btn-mini btn-success" %></td>
         
     | 
| 
      
 53 
     | 
    
         
            +
                <td><%= link_to 'Edit', edit_snippet_path(snippet), class: "btn btn-mini btn-warning" %></td>
         
     | 
| 
      
 54 
     | 
    
         
            +
                <td><%= link_to 'Destroy', snippet, class: "btn btn-mini btn-danger", method: :delete, data: { confirm: 'Are you sure?' } %></td>
         
     | 
| 
       55 
55 
     | 
    
         
             
              </tr>
         
     | 
| 
       56 
56 
     | 
    
         
             
              <% end %>
         
     | 
| 
       57 
57 
     | 
    
         
             
            </table>
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
            <%= paginate @ 
     | 
| 
      
 59 
     | 
    
         
            +
            <%= paginate @snippets, :theme => 'twitter-bootstrap' %>
         
     |