scribble_cms 0.0.14a → 0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c898a802da8482759884f104b6a4153c6f2df0c
4
- data.tar.gz: 36fd977e38546d26600253cd39c0244a8a87e41b
3
+ metadata.gz: 3e706ebc8a03c8b726759571b427213eb4d8ea32
4
+ data.tar.gz: 10483fa6ec2cfe7828d673a247c9debc595120fc
5
5
  SHA512:
6
- metadata.gz: fd6f535f50e41ad02cfc0000b11af5ca28060a24c5750713320290372968a49fba0fb564d0a50b7560ade3dc14298e872f2d05e6996d7a46955eeb01a767410b
7
- data.tar.gz: b4db6e34f7e90c8734e4b46769f689d4a8b2a599305d64b644a03cf24161f6ab987e2813c0fb3b71be49b3e124fd3bc73b8fca5e7ce28d6c284a67800c4d105c
6
+ metadata.gz: af9d8f97bcc4552ec0daa73ae054266b1108c53cba23465388e78ef0ac127a8c1fbbc078f4b39abbc2510b625378aa94cbc2be56c9f5b949b0c7995daf8ad4b2
7
+ data.tar.gz: 406fec9bc5750bb74ab314d1d379fb65641b00cb77c902e8d47987f8f3e6917afb27f001c4bbba409181a0a1367ec7f75b385b7c6fb48db7f5c75592420f5447
@@ -0,0 +1,20 @@
1
+ class ScribblerPicturesController < ApplicationController
2
+
3
+ skip_before_filter :main_app_default_before_filter
4
+
5
+ def show
6
+ img = ScribblerImage.find_by_image_name("#{params[:name]}.#{params[:format]}")
7
+
8
+ if img
9
+ begin
10
+ send_file(img.image.path, :disposition => 'inline', :status => 200)
11
+ rescue Dragonfly::Job::Fetch::NotFound
12
+ render :text => nil, :status => 404
13
+ end
14
+ else
15
+ render :text => nil
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -1,2 +1,13 @@
1
1
  module ScribblerAdminHelper
2
+
3
+ # Form
4
+ def scribbler_form_element(element,form)
5
+ render :partial => "/scribbler_content/forms/#{element.element_type}", :locals => {:element => element, :f => form}
6
+ end
7
+
8
+
9
+ def scribbler_layout(&block)
10
+ render :partial => "/scribbler_admin/scribbler_layout", :locals => {:content => capture(&block)}
11
+ end
12
+
2
13
  end
@@ -5,31 +5,30 @@ module ScribblerContentHelper
5
5
  q = {:name => container_name, :scaleable => (options[:scaleable].nil? ? false : options[:scaleable]), :element_id => (options[:element] ? options[:element].id : nil)}
6
6
  container = ScribblerContainer.where(:name => container_name).first || ScribblerContainer.create(q)
7
7
  container.update_attributes(:scaleable => options[:scaleable]) if options[:scaleable] && container.scaleable != options[:scaleable]
8
- capture(container, &block)
8
+ yield(container)
9
9
  end
10
10
 
11
11
  def scribbler_group(container, group, &block)
12
12
  scribbler_container(container) do |c|
13
13
  c.scribbler_group(group) do |g|
14
- capture(g, &block)
14
+ yield(g)
15
15
  end
16
16
  end
17
17
  end
18
18
 
19
- def scribbler_element(container, group, type, name)
20
- scribbler_group(container, group) do |g|
21
- g.send(type, name)
19
+ def scribbler_element(container, group, type, name, options = {}, &block)
20
+ if block_given?
21
+ options[:default] = capture(&block).html_safe.strip.force_encoding("UTF-8")
22
+ end
23
+
24
+ scribbler_group(container.to_s, group.to_s) do |g|
25
+ v = g.send(type.to_s, name.to_s, options)
26
+ if v.blank? && options[:default]
27
+ options[:default]
28
+ else
29
+ return v
30
+ end
22
31
  end
23
32
  end
24
33
 
25
- # Form
26
- def scribbler_form_element(element,form)
27
- render :partial => "/scribbler_content/forms/#{element.element_type}", :locals => {:element => element, :f => form}
28
- end
29
-
30
-
31
- def scribbler_layout(&block)
32
- render :partial => "/scribbler_admin/scribbler_layout", :locals => {:content => capture(&block)}
33
- end
34
-
35
34
  end
@@ -23,6 +23,10 @@ class ScribblerContainer < ActiveRecord::Base
23
23
 
24
24
 
25
25
  # => END
26
+
27
+ def ordered_groups
28
+ self.groups.sort_by {|g| g.human_name.to_s }
29
+ end
26
30
 
27
31
  def scribbler_group(name, &block)
28
32
  yield(self.get_group(name))
@@ -32,6 +36,9 @@ class ScribblerContainer < ActiveRecord::Base
32
36
  ScribblerGroup.where(:name => name, :container_id => self.id).first || ScribblerGroup.create(:name => name, :container_id => self.id)
33
37
  end
34
38
 
39
+ def description
40
+ I18n.t(self.name, :scope => "scribbler.container_names", :default => self.name.humanize)
41
+ end
35
42
 
36
43
 
37
44
 
@@ -16,7 +16,8 @@ class ScribblerGroup < ActiveRecord::Base
16
16
  ELEMENTS = {:row => ScribblerText,
17
17
  :text => ScribblerText,
18
18
  :link => ScribblerLink,
19
- :image => ScribblerImage}
19
+ :image => ScribblerImage,
20
+ :var => ScribblerVar}
20
21
 
21
22
  #== Validation and Callbacks
22
23
  #=== Validation
@@ -24,17 +25,24 @@ class ScribblerGroup < ActiveRecord::Base
24
25
 
25
26
  #=== Callbacks
26
27
  after_destroy :destroy_elements
27
-
28
-
28
+
29
29
  # => END
30
30
 
31
31
  # Display data
32
- def row(row_name)
33
- get_element(:row, row_name).content
32
+ def row(row_name, options = {})
33
+ e = get_element(:row, row_name)
34
+ if e.content.blank? && options[:default]
35
+ e.update_attributes(:content => options[:default])
36
+ end
37
+ return e.content.to_s.html_safe
34
38
  end
35
39
 
36
- def text(text_name)
37
- get_element(:text, text_name).content.to_s.html_safe
40
+ def text(text_name, options = {})
41
+ e = get_element(:text, text_name)
42
+ if e.content.blank? && options[:default]
43
+ e.update_attributes(:content => options[:default])
44
+ end
45
+ return e.content.to_s.html_safe
38
46
  end
39
47
 
40
48
  def link(link_name, options = {})
@@ -43,10 +51,29 @@ class ScribblerGroup < ActiveRecord::Base
43
51
  ActionController::Base.helpers.link_to(link.title, link.url, options)
44
52
  end
45
53
 
46
- def image(image_name, size)
47
- get_element(:image, image_name, :opt_size => size).image.url(:default)
54
+ def image(image_name, options = {})
55
+ e = get_element(:image, image_name, options)
56
+ if e.image
57
+ e.image.url
58
+ else
59
+ ""
60
+ end
48
61
  end
49
62
 
63
+ def var(name, options = {})
64
+ get_element :var, name
65
+ end
66
+
67
+ def clone!(new_name)
68
+ group = self.class.new(:name => new_name, :container_id => self.container_id)
69
+ if group.save
70
+ self.elements.each do |el|
71
+ el.class.create(el.attributes.except("id").merge(:group_id => group.id))
72
+ end
73
+ end
74
+ end
75
+
76
+
50
77
  # Helpers
51
78
  def get_element(type, name, options = {:released => true})
52
79
  options[:released] ||= true
@@ -77,7 +104,7 @@ class ScribblerGroup < ActiveRecord::Base
77
104
  end
78
105
 
79
106
  def elements(options = {:released => true})
80
- ELEMENTS.values.uniq.map {|c| c.where(:group_id => self.id, :released => options[:released] == true)}.flatten.sort_by {|e| e.created_at}
107
+ ELEMENTS.values.uniq.map {|c| c.where(:group_id => self.id, :released => options[:released] == true)}.flatten.sort_by {|e| e.name}
81
108
  end
82
109
 
83
110
  def released_elements
@@ -98,7 +125,7 @@ class ScribblerGroup < ActiveRecord::Base
98
125
  self.process_data!(data[:released])
99
126
 
100
127
  # Update unrealesed data
101
- self.process_data!(data[:unreleased])
128
+ self.process_data!(data[:unreleased]) if data[:unreleased]
102
129
  end
103
130
 
104
131
  def process_data!(data)
@@ -115,6 +142,10 @@ class ScribblerGroup < ActiveRecord::Base
115
142
  end
116
143
  end
117
144
 
145
+ def human_name
146
+ I18n.t(self.name, :scope => "scribbler.group_names", :default => self.name.humanize) rescue self.name
147
+ end
148
+
118
149
 
119
150
 
120
151
 
@@ -1,10 +1,25 @@
1
1
  class ScribblerImage < ActiveRecord::Base
2
2
 
3
3
  #= Configuration
4
- has_attached_file :image, :styles => {:default => "300x200"}, :processors => [:cropper]
5
- validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
4
+ dragonfly_accessor :image, app: :scribbler do
5
+ after_assign{|i| i.name = sanitize_filename(image.name) }
6
+ end
7
+
8
+
9
+ def sanitize_filename(filename)
10
+ [filename.split(".").first.parameterize, filename.split(".").last].join(".")
11
+ end
12
+
13
+ #validates_presence_of :image
14
+ validates_size_of :image, maximum: 2.megabytes
15
+ validates_property :format,
16
+ of: :image,
17
+ in: [:gif, :png, :jpg, :jpeg],
18
+ case_sensitive: false,
19
+ message: I18n.t("not a valid image")
20
+
21
+
6
22
 
7
- attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
8
23
  #== Associations
9
24
 
10
25
  #== Plugins and modules
@@ -28,20 +43,5 @@ class ScribblerImage < ActiveRecord::Base
28
43
  # => END
29
44
 
30
45
 
31
- def cropping?
32
- !crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
33
- end
34
-
35
- def crop_image
36
- self.image.reprocess!
37
- crop_x = crop_y = crop_w = crop_h = nil
38
- end
39
-
40
- def opt_image_width
41
- self.opt_size.split("x").first
42
- end
43
46
 
44
- def opt_image_height
45
- self.opt_size.split("x").last
46
- end
47
47
  end
@@ -0,0 +1,44 @@
1
+ class ScribblerVar < ActiveRecord::Base
2
+
3
+ #= Configuration
4
+ #== Associations
5
+
6
+
7
+ #== Plugins and modules
8
+ #=== PlugIns
9
+ # => Stuff in Here
10
+
11
+ #=== include Modules
12
+ include ScribbleCms::ScribblerElementSetup
13
+
14
+ #== Konstanten
15
+ VAR_TYPES = {
16
+ :decimal => ""
17
+ }
18
+
19
+ #== Validation and Callbacks
20
+ #=== Validation
21
+
22
+
23
+ #=== Callbacks
24
+ # => Stuff in Here
25
+
26
+
27
+ # => END
28
+
29
+
30
+ def self.get(container_name, group_name, name, type)
31
+
32
+ q = {:name => container_name}
33
+ container = ScribblerContainer.where(:name => container_name).first || ScribblerContainer.create(q)
34
+ container.scribbler_group(group_name) do |g|
35
+ return g.var(name, type)
36
+ end
37
+
38
+
39
+ end
40
+
41
+ def self.set(group, name, value)
42
+ end
43
+
44
+ end
@@ -1,6 +1,10 @@
1
1
  <div id="scribbler-admin-area" class="cf">
2
- <div id="scribbler-sidebar">
3
- <%= render :partial => "/scribbler_admin/scribbler_sidebar" unless request.xhr? %>
4
- </div>
5
- <div id="scribbler-edit-area"><%= content %></div>
2
+ <% if @containers.empty? %>
3
+ <span class="metainfo">Es liegen keine Inhalte vor, die bearbeitet werden können</span>
4
+ <% else %>
5
+ <div id="scribbler-sidebar">
6
+ <%= render :partial => "/scribbler_admin/scribbler_sidebar" unless request.xhr? %>
7
+ </div>
8
+ <div id="scribbler-edit-area"><%= content %></div>
9
+ <% end %>
6
10
  </div>
@@ -1,11 +1,16 @@
1
- <ul>
1
+ <ul data-no-turbolink>
2
+ <li>
3
+ <%= form_for :scribbler, :url => alchemy.admin_static_content_search_url, :html => {:method => :get} do |f| %>
4
+ <%= f.labeled_text_field :query, :label => "Suchbegriff" %>
5
+ <%= f.submit "Suchen" %>
6
+ <% end %>
7
+ </li>
2
8
  <% ScribblerContainer.all.each do |container| %>
3
- <li class="scribbler-group">
4
- <%= link_to container.description, scribbler.url_for({:controller => "/scribbler_admin", :action => "container_edit", :id => container.id}) %><br />
5
- <div class="metainfo small"><%= container.name %></div>
6
- <ul class="">
7
- <% container.groups.each do |group| %>
8
- <li><%= link_to group.name, scribbler.url_for({:controller => "/scribbler_admin", :action => "group_edit", :id => group.id}), default_ajax_link(:update => "scribbler-edit-area") %></li>
9
+ <li class="scribbler-group" data-scribbler-container-id="<%= container.id %>">
10
+ <%= container.description %><br />
11
+ <ul class="" data-scribbler-container-id="<%= container.id %>">
12
+ <% container.ordered_groups.each do |group| %>
13
+ <li><%= link_to_unless_current group.human_name, {:action => "group_edit", :id => group.id} %></li>
9
14
  <% end %>
10
15
  </ul>
11
16
  </li>
@@ -1,46 +1,54 @@
1
+ <% element_ids = [] %>
1
2
  <%= scribbler_layout do %>
2
3
 
3
- <p>
4
- Element in <i>'<%= @group.container.description %>'</i>
5
- <% if @group.container.element %>
6
- auf Seite <i>'<%= @group.container.element.page.name %>'</i>
7
- <% end %>
8
- </p>
9
-
10
- <%= form_for @group, :url => scribbler.url_for({:action => "group_update", :id => @group.id}), :html => {:class => "section", :method => :post} do |f| %>
11
- <table style="min-width: 940px;" cellspacing="5">
4
+ <%= form_for @group, :url => {:action => "group_update", :id => @group.id}, :html => {:class => "section", :method => :post} do |f| %>
5
+ <table id="scribbler-group-edit-table" cellspacing="5">
6
+ <% if !controller.hide_scribbler_edit_status %>
12
7
  <tr>
13
8
  <td>
14
9
  <b><%= link_to_function("Aktueller Zustand", "toggleCol('released')") %></b><br />
15
10
  <i>Klicken um Bereich ein- bzw auszublenden</i>
16
11
  </td>
12
+
17
13
  <td>
18
14
  <b><%= link_to_function("In Bearbeitung", "toggleCol('unreleased')") %></b><br />
19
15
  <i>Klicken um Bereich ein- bzw auszublenden</i>
20
16
  </td>
21
17
  </tr>
18
+ <% end %>
19
+
22
20
  <tr>
23
21
  <td id="released" class="">
24
22
  <%= f.fields_for :released do |u| %>
25
23
  <% @group.released_elements.each do |e| %>
26
- <div style="margin-bottom: 5px;"><%= scribbler_form_element(e,u) %></div>
27
- <% end %>
28
- <% end %>
29
- </td>
30
- <td id="unreleased" class="">
31
- <%= f.fields_for :unreleased do |u| %>
32
- <% @group.unreleased_elements.each do |e| %>
33
- <div style="margin-bottom: 5px;"><%= scribbler_form_element(e,u) %></div>
24
+ <div class="scribbler-element scribbler-<%= e.element_type %>" style="<%= 'background-color: #ffffdc;' if params[:active].to_i == e.id %> padding: 5px;">
25
+ <h3 class="scribbler-header"><%= e.human_name %></h3>
26
+ <% unless e.hint.blank? %>
27
+ <p class="scribbler-element-hint"><%= raw(e.hint) %></p>
28
+ <% end %>
29
+ <% element_ids << e.id %>
30
+ <div style="margin-bottom: 5px;"><%= scribbler_form_element(e,u) %></div>
31
+ </div>
34
32
  <% end %>
35
33
  <% end %>
36
34
  </td>
35
+ <% if !controller.hide_scribbler_edit_status %>
36
+ <td id="unreleased" class="">
37
+ <%= f.fields_for :unreleased do |u| %>
38
+ <% @group.unreleased_elements.each do |e| %>
39
+ <h3 class="scribbler-header"><%= e.human_name %></h3>
40
+ <div style="margin-bottom: 5px;"><%= scribbler_form_element(e,u) %></div>
41
+ <% end %>
42
+ <% end %>
43
+ </td>
44
+ <% end %>
37
45
  </tr>
38
46
  </table>
39
47
 
40
48
  <%= f.submit "Änderungen speichern" %>
41
49
 
42
50
  <% if @group.container.scaleable %>
43
- <%= link_to "Dieses Element löschen", scribbler.url_for({:action => "group_destroy", :id => @group.id}),
51
+ <%= link_to "Dieses Element löschen", {:action => "group_destroy", :id => @group.id},
44
52
  :confirm => "Soll dieses Element gelöscht werden? Dies kann nicht rückgängig gemacht werden.", :class => "icon-minus" %>
45
53
  <% end %>
46
54
 
@@ -48,21 +56,12 @@
48
56
 
49
57
  <% end %>
50
58
 
51
- <%= tinymce %>
52
-
53
59
  <script type="text/javascript">
54
-
55
- toggleCol = function(name){
56
- col = $("#"+name)
57
- if(col.hasClass("col-visible")){
58
- $("#"+name+" *").hide();
59
- col.removeClass("col-visible")
60
- }else{
61
- $("#"+name+" *").show();
62
- col.addClass("col-visible")
63
- }
64
- }
65
-
66
- toggleCol('released')
60
+ f = "Alchemy.Tinymce.init(<%= element_ids %>)"
61
+ window.setTimeout(f, 250)
67
62
  </script>
68
63
 
64
+
65
+
66
+
67
+
@@ -1,3 +1,4 @@
1
+
1
2
  <%= scribbler_layout do %>
2
- <h2>Inhalte verwalten</h2>
3
+
3
4
  <% end %>
@@ -0,0 +1,20 @@
1
+ <%= scribbler_layout do %>
2
+ <h1>Suchergebnisse für '<%= params[:scribbler][:query] %>'</h1>
3
+
4
+ <table class="list">
5
+ <% @items.each do |item| %>
6
+ <tr>
7
+ <td>
8
+ <%= link_to :action => "group_edit", :id => item.group.id, :active => item.id do %>
9
+ <h2> <b><%= item.human_name %></b> - <%= item.group.human_name %></h2>
10
+ <% end %>
11
+
12
+
13
+ <%= item.content.to_s.html_safe %>
14
+ </td>
15
+ </tr>
16
+ <% end %>
17
+ </table>
18
+
19
+
20
+ <% end %>
@@ -1,23 +1,15 @@
1
1
  <%= f.fields_for "#{element.element_type}_#{element.id}" do |e| %>
2
-
3
-
4
-
5
- <%= e.label :image, "Bilddatei" %><br />
6
- <%= e.file_field :image %>
7
-
8
-
9
- <p>Klicken Sie auf das Bild um die Abmessungen anzupassen</p>
10
- <%= link_to image_tag(element.image.url(:default), :width => "100%"), {:action => "image_cropper", :id => element.id} %>
11
-
2
+ <div class="image-container">
3
+ <%= image_tag element.image.url if element.image_stored? %>
4
+ <%= e.label :image, "Bilddatei" %> <div class="input"><%= e.file_field :image %></div>
5
+ </div>
12
6
  <div style="margin-bottom: 5px;">
13
- <%= e.label :copyright, "Copyright" %><br />
14
- <%= e.text_field :copyright, :value => element.copyright %>
7
+ <%= e.label :copyright, "Copyright" %> <div class="input"><%= e.text_field :copyright, :value => element.copyright %></div>
15
8
  </div>
16
9
 
17
10
  <div style="margin-bottom: 5px;">
18
- <%= e.label :alt_text, "ALT-Attribut" %><br />
19
- <%= e.text_field :alt_text, :value => element.alt_text %>
20
- </div>
11
+ <%= e.label :alt_text, "ALT-Attribut" %> <div class="input"><%= e.text_field :alt_text, :value => element.alt_text %></div>
12
+ </div>
21
13
 
22
14
  <%= e.hidden_field :type, :value => element.element_type %>
23
15
  <%= e.hidden_field :id, :value => element.id %>
@@ -1,5 +1,4 @@
1
1
  <%= f.fields_for "#{element.element_type}_#{element.id}" do |e| %>
2
- <%= e.label :content, element.name %><br />
3
2
  <%= e.text_field :content, :value => element.content %>
4
3
  <%= e.hidden_field :type, :value => element.element_type %>
5
4
  <%= e.hidden_field :id, :value => element.id %>
@@ -1,6 +1,5 @@
1
1
  <%= f.fields_for "#{element.element_type}_#{element.id}" do |e| %>
2
- <%= e.label :content, element.name %>
3
- <%= e.text_area :content, :class => "tinymce", :value => element.content %>
2
+ <%= e.text_area :content, :class => ScribbleCms.tiny_mce_css, :id => "tinymce_#{element.id}", :value => element.content %>
4
3
  <br />
5
4
  <%= e.hidden_field :type, :value => element.element_type %>
6
5
  <%= e.hidden_field :id, :value => element.id %>
data/config/routes.rb CHANGED
@@ -1,15 +1,6 @@
1
- ScribbleCms::Engine.routes.draw do
2
-
3
- %w( container_edit container_add_item group_edit group_destroy image_cropper).each do |a|
4
- get "/scribbler_admin/#{a}/(:id)", :controller => "scribbler_admin", :action => a
5
- end
6
-
7
- get "/scribbler_admin", :controller => "scribbler_admin", :action => "index", :as => :scribbler_admin
8
-
9
- %w(container_update group_update crop_image).each do |a|
10
- post "/scribbler_admin/#{a}/(:id)", :controller => "scribbler_admin", :action => a
11
- end
1
+ Scribbler::Engine.routes.draw do
12
2
 
3
+ get "/s/static/pictures/:job/:name.:format" => "scribbler_pictures#show"
13
4
 
14
5
 
15
6
  end
@@ -2,7 +2,6 @@ class CreateScribblers < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :scribbler_containers, :force => true do |t|
4
4
  t.string :name
5
- t.string :description
6
5
  t.boolean :scaleable, :default => false
7
6
  t.integer :element_id
8
7
  t.timestamps
@@ -34,6 +33,15 @@ class CreateScribblers < ActiveRecord::Migration
34
33
  t.timestamps
35
34
  end
36
35
 
36
+ create_table :scribbler_vars, :force => true do |t|
37
+ t.string :name
38
+ t.text :content
39
+ t.string :var_type
40
+ t.integer :group_id
41
+ t.boolean :released, :default => false
42
+ t.timestamps
43
+ end
44
+
37
45
  create_table :scribbler_images, :force => true do |t|
38
46
  t.string :name
39
47
  t.string :group_id
@@ -41,7 +49,8 @@ class CreateScribblers < ActiveRecord::Migration
41
49
  t.string :copyright
42
50
  t.string :alt_text
43
51
  t.string :opt_size, :default => "128x128"
44
- t.attachment :image
52
+ t.string :image_uid
53
+ t.string :image_name
45
54
  t.timestamps
46
55
  end
47
56
  end
@@ -1,6 +1,20 @@
1
- module ScribbleCms
1
+ module Scribbler
2
2
  class Engine < Rails::Engine
3
- engine_name "scribble_cms"
3
+
4
+ engine_name 'scribbler'
5
+
6
+ initializer "dragonfly.scribbler" do
7
+
8
+ # Pictures
9
+ Dragonfly.app(:scribbler).configure do
10
+ plugin :imagemagick
11
+ datastore :file, root_path: Rails.root.join('public/system/uploads/scribbler').to_s, store_meta: false
12
+ url_format "/s/static/pictures/:job/:name.:format"
13
+ secret Digest::SHA1.hexdigest(Rails.root.to_s)
14
+ end
15
+
16
+
17
+ end
4
18
 
5
19
  end
6
20
  end
@@ -0,0 +1,115 @@
1
+ module ScribbleCms
2
+ module ScribblerControllerPlugin
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def scribbler_cms_controller(options = {})
11
+
12
+ self.send(:include, InstanceMethods)
13
+ self.send :before_filter, :get_container, :only => %w(container_edit container_update container_add_item)
14
+ self.send :before_filter, :get_group, :only => %w(group_edit group_update group_destroy)
15
+ self.cattr_accessor :hide_scribbler_edit_status
16
+
17
+ self.hide_scribbler_edit_status = (options[:hide_scribbler_edit_status] == true)
18
+ end
19
+
20
+ end
21
+
22
+
23
+ module InstanceMethods
24
+
25
+
26
+
27
+
28
+ def index
29
+ @containers = ScribblerContainer.all
30
+ render "/scribbler_admin/index"
31
+ end
32
+
33
+ # Containers
34
+ def container_edit
35
+ render "/scribbler_admin/container_edit"
36
+ end
37
+
38
+ def container_update
39
+ @container.update_attributes(container_params)
40
+ flash[:notice] = "Container #{@container.name} was saved"
41
+ redirect_to :action => "index"
42
+ end
43
+
44
+ def container_add_item
45
+ @container.get_group("#{@container.id}-#{Time.now.to_i}")
46
+ flash[:notice] = "Neues Element für #{@container.name} wurde angelegt"
47
+ redirect_to :back
48
+ end
49
+
50
+ def search
51
+ @containers = ScribblerContainer.all
52
+ @items = ScribblerText.find_by_tags(params[:scribbler][:query])
53
+ render "/scribbler_admin/search"
54
+ end
55
+
56
+
57
+ # Groups
58
+ def group_edit
59
+ @containers = ScribblerContainer.all
60
+ render "/scribbler_admin/group_edit"
61
+ end
62
+
63
+ def group_update
64
+ @group.process_group_data(params.require(:scribbler_group).permit!)
65
+ flash[:notice] = "Änderungen wurden gespeichert"
66
+ redirect_to :back
67
+ end
68
+
69
+ def group_destroy
70
+ @group.destroy
71
+ flash[:notice] = "Daten wurden gelöscht"
72
+ redirect_to :action => "index"
73
+ end
74
+
75
+ # images
76
+ def image_cropper
77
+ @element = ScribblerImage.find(params[:id])
78
+ end
79
+
80
+ def crop_image
81
+ @element = ScribblerImage.find(params[:id])
82
+ @element.update_attributes(image_params)
83
+ @element.image.reprocess!
84
+ redirect_to :action => "group_edit", :id => @element.group_id
85
+ end
86
+
87
+
88
+ def picture
89
+
90
+ end
91
+
92
+
93
+ # Private - permit parameters
94
+ private
95
+
96
+ def get_container
97
+ @container = ScribblerContainer.find(params[:id])
98
+ end
99
+
100
+ def get_group
101
+ @group = ScribblerGroup.find(params[:id])
102
+ end
103
+
104
+ def container_params
105
+ params.require(:scribbler_container).permit(:description)
106
+ end
107
+
108
+ def image_params
109
+ params.require(:scribbler_image).permit(:crop_x, :crop_y, :crop_w, :crop_h)
110
+ end
111
+
112
+ end
113
+
114
+ end
115
+ end
@@ -1,29 +1,59 @@
1
1
  module ScribbleCms
2
2
  module ScribblerElementSetup
3
-
3
+
4
4
  def self.included(base)
5
5
  base.send(:belongs_to, :group, :class_name => "ScribblerGroup", :foreign_key => "group_id", :touch => true)
6
6
  base.send(:validates_presence_of, :group_id)
7
7
  base.send(:before_save, :check_uniqueness)
8
+ base.send(:smart_search, :on => [
9
+ {:field_name => :human_name, :boost => 0.7}, {:field_name => "group.human_name", :boost => 0.5}, {:field_name => :searchable_content, :boost => 1}
10
+ ],
11
+ :conditions => "released = 1"
12
+ )
13
+
8
14
  end
9
-
10
-
15
+
16
+
11
17
  def check_uniqueness
12
18
  items = self.class.where(:name => self.name, :group_id => self.group_id, :released => self.released)
13
19
  items.empty? || items.size == 1
14
- end
15
-
20
+ end
21
+
16
22
  def element_type
17
23
  if self.is_a?(ScribblerLink)
18
24
  return :link
19
25
  elsif self.is_a?(ScribblerText) && self.plain
20
26
  return :row
21
- elsif self.is_a?(ScribblerText) && !self.plain
27
+ elsif self.is_a?(ScribblerText) && !self.plain
22
28
  return :text
23
- elsif self.is_a?(ScribblerImage)
29
+ elsif self.is_a?(ScribblerImage)
24
30
  return :image
25
- end
26
- end
27
-
31
+ elsif self.is_a?(ScribblerVar)
32
+ return :var
33
+ end
34
+ end
35
+
36
+ def searchable_content
37
+ case self.element_type
38
+ when :link
39
+ return [name, url, title]
40
+ when :row
41
+ return content
42
+ when :text
43
+ return content
44
+ when :image
45
+ when :var
46
+ end
47
+ end
48
+
49
+ def human_name
50
+ I18n.t(self.name, :scope => "scribbler.element_names.#{self.group.name}", :default => self.name.to_s.humanize)
51
+ end
52
+
53
+ def hint
54
+ h = I18n.t(self.name, :scope => "scribbler.element_hints.#{self.group.name}", :default => "")
55
+ h.is_a?(Array) ? h.join("") : h
56
+ end
57
+
28
58
  end
29
- end
59
+ end
data/lib/scribble_cms.rb CHANGED
@@ -1,5 +1,26 @@
1
+ require "scribble_cms/engine"
2
+ require 'scribble_cms/scribbler_controller_plugin'
3
+ require 'scribble_cms/scribbler_element_setup'
4
+ require 'dragonfly'
5
+ require "smart_search"
6
+
1
7
  module ScribbleCms
2
- end
8
+ mattr_accessor :tiny_mce_css, :tiny_mce_js
9
+
10
+ self.tiny_mce_css = "default_tinymce"
11
+ self.tiny_mce_js = "Alchemy.Tinymce.initAll();"
12
+ end
13
+
14
+ ActionController::Base.send(:include, ScribbleCms::ScribblerControllerPlugin)
3
15
 
4
- require 'scribble_cms/engine'
5
- require 'scribble_cms/scribbler_element_setup'
16
+ String.class_eval do
17
+
18
+ def replace_scribbler_vars(vars = {})
19
+ r = self
20
+ vars.each do |var_name, var_content|
21
+ r = r.gsub("*#{var_name}*", var_content.to_s)
22
+ end
23
+ return r
24
+ end
25
+
26
+ end
metadata CHANGED
@@ -1,43 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scribble_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14a
4
+ version: '0.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Eck
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-02 00:00:00.000000000 Z
11
+ date: 2016-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: friendly_extensions
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.66
19
+ version: '0.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.0.66
26
+ version: '0.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: paperclip
28
+ name: dragonfly
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.1.0
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.1.0
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: smart_search
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.78
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.78
41
55
  description: Easy-to-use tool for placing user-editable content in your pages
42
56
  email:
43
57
  - it-support@friends-systems.de
@@ -50,7 +64,7 @@ files:
50
64
  - app/assets/stylesheets/ext/jquery.Jcrop.css
51
65
  - app/assets/stylesheets/scribbler.css.erb
52
66
  - app/assets/stylesheets/scribbler_layout.css.erb
53
- - app/controllers/scribbler_admin_controller.rb
67
+ - app/controller/scribbler_pictures_controller.rb
54
68
  - app/helpers/scribbler_admin_helper.rb
55
69
  - app/helpers/scribbler_content_helper.rb
56
70
  - app/models/scribbler_container.rb
@@ -58,21 +72,23 @@ files:
58
72
  - app/models/scribbler_image.rb
59
73
  - app/models/scribbler_link.rb
60
74
  - app/models/scribbler_text.rb
75
+ - app/models/scribbler_var.rb
61
76
  - app/views/scribbler_admin/_scribbler_layout.html.erb
62
77
  - app/views/scribbler_admin/_scribbler_sidebar.html.erb
63
78
  - app/views/scribbler_admin/container_edit.html.erb
64
79
  - app/views/scribbler_admin/group_edit.html.erb
65
80
  - app/views/scribbler_admin/image_cropper.html.erb
66
81
  - app/views/scribbler_admin/index.html.erb
82
+ - app/views/scribbler_admin/search.html.erb
67
83
  - app/views/scribbler_content/forms/_image.html.erb
68
84
  - app/views/scribbler_content/forms/_link.html.erb
69
85
  - app/views/scribbler_content/forms/_row.html.erb
70
86
  - app/views/scribbler_content/forms/_text.html.erb
71
87
  - config/routes.rb
72
88
  - db/migrate/20140313012637_create_scribblers.rb
73
- - lib/paperclip_processors/cropper.rb
74
89
  - lib/scribble_cms.rb
75
90
  - lib/scribble_cms/engine.rb
91
+ - lib/scribble_cms/scribbler_controller_plugin.rb
76
92
  - lib/scribble_cms/scribbler_element_setup.rb
77
93
  homepage: http://www.friends-systems.de
78
94
  licenses: []
@@ -88,12 +104,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
104
  version: '0'
89
105
  required_rubygems_version: !ruby/object:Gem::Requirement
90
106
  requirements:
91
- - - ">"
107
+ - - ">="
92
108
  - !ruby/object:Gem::Version
93
- version: 1.3.1
109
+ version: '0'
94
110
  requirements: []
95
111
  rubyforge_project:
96
- rubygems_version: 2.2.1
112
+ rubygems_version: 2.4.6
97
113
  signing_key:
98
114
  specification_version: 4
99
115
  summary: Easy-to-use tool for placing user-editable content in your pages
@@ -1,77 +0,0 @@
1
- class ScribblerAdminController < ApplicationController
2
-
3
- before_filter :get_container, :only => %w(container_edit container_update container_add_item )
4
- before_filter :get_group, :only => %w(group_edit group_update group_destroy)
5
-
6
-
7
- def index
8
- @containers = ScribblerContainer.all
9
- end
10
-
11
- # Containers
12
- def container_edit
13
- end
14
-
15
- def container_update
16
- @container.update_attributes(container_params)
17
- flash[:notice] = "Container #{@container.name} was saved"
18
- redirect_to :action => "index"
19
- end
20
-
21
- def container_add_item
22
- @container.get_group("#{@container.id}-#{Time.now.to_i}")
23
- flash[:notice] = "Neues Element für #{@container.name} wurde angelegt"
24
- redirect_to :back
25
- end
26
-
27
-
28
-
29
-
30
- # Groups
31
- def group_edit
32
- render :layout => false
33
- end
34
-
35
- def group_update
36
- @group.process_group_data(params[:scribbler_group])
37
- flash[:notice] = "Änderungen wurden gespeichert"
38
- redirect_to :back
39
- end
40
-
41
- def group_destroy
42
- @group.destroy
43
- flash[:notice] = "Daten wurden gelöscht"
44
- redirect_to :action => "index"
45
- end
46
-
47
- # images
48
- def image_cropper
49
- @element = ScribblerImage.find(params[:id])
50
- end
51
-
52
- def crop_image
53
- @element = ScribblerImage.find(params[:id])
54
- @element.update_attributes(image_params)
55
- @element.image.reprocess!
56
- redirect_to :action => "group_edit", :id => @element.group_id
57
- end
58
-
59
- # Private - permit parameters
60
- private
61
-
62
- def get_container
63
- @container = ScribblerContainer.find(params[:id])
64
- end
65
-
66
- def get_group
67
- @group = ScribblerGroup.find(params[:id])
68
- end
69
-
70
- def container_params
71
- params.require(:scribbler_container).permit(:description)
72
- end
73
-
74
- def image_params
75
- params.require(:scribbler_image).permit(:crop_x, :crop_y, :crop_w, :crop_h)
76
- end
77
- end
@@ -1,23 +0,0 @@
1
- module Paperclip
2
- class Cropper < Thumbnail
3
- def transformation_command
4
- if crop_command
5
- crop_command
6
- else
7
- super
8
- end
9
- end
10
-
11
- def crop_command
12
- target = @attachment.instance
13
- puts "try Croppper"
14
- if target.cropping?
15
- puts "cropper!"
16
- cmd = [" -crop '#{target.crop_w.to_i}x#{target.crop_h.to_i}+#{target.crop_x.to_i}+#{target.crop_y.to_i}'"]
17
- cmd << "-auto-orient"
18
- cmd << "-resize #{target.opt_image_width}x#{target.opt_image_height}"
19
- end
20
- end
21
- end
22
- end
23
-