refinerycms-portfolio 0.9.9 → 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/app/controllers/portfolio_controller.rb +2 -0
  2. data/app/models/portfolio_entry.rb +5 -0
  3. data/app/views/admin/portfolio/_form.html.erb +34 -29
  4. data/app/views/admin/portfolio/_list.html.erb +9 -1
  5. data/app/views/admin/portfolio/_locale_picker.html.erb +11 -0
  6. data/app/views/portfolio/index.html.erb +1 -0
  7. data/app/views/portfolio/show.html.erb +15 -1
  8. data/config/locales/bg.yml +26 -0
  9. data/config/locales/cs.yml +26 -0
  10. data/config/locales/en.yml +1 -1
  11. data/config/locales/es.yml +31 -0
  12. data/config/locales/fr.yml +26 -0
  13. data/config/locales/it.yml +26 -0
  14. data/config/locales/lt.yml +27 -0
  15. data/config/locales/lv.yml +1 -1
  16. data/config/locales/nb.yml +26 -0
  17. data/config/locales/nl.yml +1 -1
  18. data/config/locales/pl.yml +30 -0
  19. data/config/locales/pt-BR.yml +1 -1
  20. data/config/locales/rs.yml +26 -0
  21. data/config/locales/ru.yml +28 -0
  22. data/config/locales/sl.yml +1 -1
  23. data/{lib/generators/refinerycms_portfolio/templates/db/migrate/migration_number_create_structure_for_portfolio.rb → db/migrate/1_create_structure_for_portfolio.rb} +0 -2
  24. data/db/migrate/2_translate_portfolio_entries.rb +18 -0
  25. data/{lib/generators/refinerycms_portfolio/templates/db → db}/seeds/portfolio.rb +0 -0
  26. data/features/manage_portfolio.feature +52 -0
  27. data/features/step_definitions/portfolio_steps.rb +13 -0
  28. data/features/support/factories.rb +5 -0
  29. data/features/support/paths.rb +16 -0
  30. data/features/visit_portfolio.feature +8 -0
  31. data/lib/gemspec.rb +2 -8
  32. data/lib/generators/refinerycms_portfolio_generator.rb +8 -0
  33. data/lib/portfolio/version.rb +1 -1
  34. data/public/javascripts/portfolio.js +5 -1
  35. data/spec/models/portfolio_entry_spec.rb +47 -0
  36. metadata +33 -13
  37. data/lib/generators/refinerycms_portfolio/refinerycms_portfolio_generator.rb +0 -59
@@ -6,6 +6,8 @@ class PortfolioController < ApplicationController
6
6
  if RefinerySetting.find_or_set(:portfolio_has_no_index, true)
7
7
  if (first_entry = PortfolioEntry.where(:parent_id => nil).first).present?
8
8
  redirect_to portfolio_url(first_entry)
9
+ else
10
+ @portfolio_entries = []
9
11
  end
10
12
  else
11
13
  @portfolio_entries = PortfolioEntry.all
@@ -1,6 +1,11 @@
1
+ require 'globalize3'
2
+
1
3
  class PortfolioEntry < ActiveRecord::Base
2
4
  belongs_to :title_image, :class_name => 'Image'
3
5
 
6
+ translates :title, :body if self.respond_to?(:translates)
7
+ attr_accessor :locale # to hold temporarily
8
+
4
9
  validates :title, :presence => true
5
10
 
6
11
  # call to gems included in refinery.
@@ -11,7 +11,13 @@
11
11
  :locals => {
12
12
  :object => f.object,
13
13
  :include_object_name => true
14
- } %>
14
+ } %>
15
+
16
+ <%= render :partial => "locale_picker",
17
+ :locals => {
18
+ :current_locale => Thread.current[:globalize_locale]
19
+ } if defined?(::Refinery::I18n) %>
20
+
15
21
  <div id='portfolio_body' class='field clearfix'>
16
22
  <%= f.required_label t('.title') %>
17
23
  <%= f.text_field :title, :class => "larger widest" %>
@@ -28,7 +34,7 @@
28
34
  </div>
29
35
  <% end %>
30
36
  <div class='field clearfix'>
31
- <div id='page-tabs' class='clearfix ui-tabs ui-widget ui-widget-content'>
37
+ <div id='page-tabs' class='clearfix ui-tabs ui-widget ui-widget-content ui-corner-all'>
32
38
  <ul id='page_parts'>
33
39
  <li class='ui-state-default ui-state-active'>
34
40
  <%= link_to t('.content'), '#page_part_content'%>
@@ -37,37 +43,36 @@
37
43
  <%= link_to t('.images'), '#portfolio_image_picker'%>
38
44
  </li>
39
45
  </ul>
40
- </div>
41
- <div id='page_part_editors'>
42
- <div id='page_part_content' class='page_part'>
43
- <%= f.text_area :body, :class => "wymeditor widest", :rows => 7 %>
44
- </div>
45
- <div class='page_part wym_skin_refinery' id='portfolio_image_picker'>
46
- <div class='wym_area_top'>
47
- <span class='clearfix label_inline_with_link'>
48
- <%= link_to t('.add_another_image').html_safe,
49
- insert_admin_images_url(:dialog => true,
50
- :width => 866,
51
- :height => 510,
52
- :callback => "image_added"),
53
- :id => "add_image_link" %>
54
- </span>
46
+ <div id='page_part_editors'>
47
+ <div id='page_part_content' class='page_part'>
48
+ <%= f.text_area :body, :class => "wymeditor widest", :rows => 7 %>
55
49
  </div>
56
- <div class='wym_box field images_field'>
57
- <ul id='portfolio_images' class='clearfix portfolio_entry_images'>
58
- <%= f.fields_for :images do |image_form| %>
59
- <li id='image_<%= image_form.object.id %>'>
60
- <%= image_form.hidden_field :id %>
61
- <%= image_fu image_form.object, '135x135#c' %>
50
+ <div class='page_part wym_skin_refinery' id='portfolio_image_picker'>
51
+ <div class='wym_area_top'>
52
+ <span class='clearfix label_inline_with_link'>
53
+ <%= link_to t('.add_another_image').html_safe,
54
+ insert_admin_images_url(:dialog => true,
55
+ :width => 866,
56
+ :height => 510,
57
+ :callback => "image_added"),
58
+ :id => "add_image_link" %>
59
+ </span>
60
+ </div>
61
+ <div class='wym_box field images_field'>
62
+ <ul id='portfolio_images' class='clearfix portfolio_entry_images'>
63
+ <%= f.fields_for :images do |image_form| %>
64
+ <li id='image_<%= image_form.object.id %>'>
65
+ <%= image_form.hidden_field :id %>
66
+ <%= image_fu image_form.object, '135x135#c' %>
67
+ </li>
68
+ <% end %>
69
+ <li class='empty'>
70
+ <%= hidden_field_tag "portfolio_entry[images_attributes][#{@portfolio_entry.images.size}][id]" %>
62
71
  </li>
63
- <% end %>
64
- <li class='empty'>
65
- <%= hidden_field_tag "portfolio_entry[images_attributes][#{@portfolio_entry.images.size}][id]" %>
66
- </li>
67
- </ul>
72
+ </ul>
73
+ </div>
68
74
  </div>
69
75
  </div>
70
- </div>
71
76
  </div>
72
77
  <% if (nested_portfolios = nested_set_options(PortfolioEntry, @portfolio_entry) {|i| "#{'-' * i.level} #{i.title}" }).present? %>
73
78
  <div class='field'>
@@ -10,7 +10,7 @@
10
10
  <span class='actions'>
11
11
  <% url = (::Refinery::Portfolio.multi_level? && list.parent ? portfolio_project_url(list.parent, list) : portfolio_url(list)) %>
12
12
  <%= link_to refinery_icon_tag('application_go.png'), url, :target => "_blank",
13
- :title => t('.view_live') %>
13
+ :title => t('.view_live_html') %>
14
14
  <%= link_to refinery_icon_tag('application_edit.png'), edit_admin_portfolio_entry_path(list),
15
15
  :title => t('.edit_this_entry') %>
16
16
  <%= link_to refinery_icon_tag('delete.png'), admin_portfolio_entry_path(list),
@@ -20,6 +20,14 @@
20
20
  :method => :delete %>
21
21
  </span>
22
22
  <%=h list.title %>
23
+ <% if defined?(::Refinery::I18n) and ::Refinery::I18n.frontend_locales.many? and
24
+ (locales = list.translations.collect{|t| t.locale}).present? %>
25
+ <span class='preview'>
26
+ <% locales.each do |locale| %>
27
+ <%= refinery_icon_tag "flags/#{locale}.png", :size => '16x11' %>
28
+ <% end %>
29
+ </span>
30
+ <% end %>
23
31
  </div>
24
32
  <% if (children = list.children).any? %>
25
33
  <ul<%= " class='nested'" %>>
@@ -0,0 +1,11 @@
1
+ <input type='hidden' name='switch_locale' id='switch_locale' value='<%= local_assigns[:current_locale] %>' />
2
+ <% if (locales ||= ::Refinery::I18n.frontend_locales).present? and locales.many? %>
3
+ <ul id='switch_locale_picker' class='clearfix'>
4
+ <% locales.each do |locale| %>
5
+ <li<%= " class='selected'" if locale.to_s == local_assigns[:current_locale].to_s %>>
6
+ <%= link_to refinery_icon_tag("flags/#{locale}.png", :size => '48x33'),
7
+ url_for(:switch_locale => locale) %>
8
+ </li>
9
+ <% end %>
10
+ </ul>
11
+ <% end %>
@@ -8,6 +8,7 @@
8
8
  <%= link_to raw("#{image_fu portfolio.title_image, '200x200' unless portfolio.title_image.nil?} #{portfolio.title}"),
9
9
  portfolio_path(portfolio) %>
10
10
  </span>
11
+ <span class="content"><%= raw portfolio.body %></span>
11
12
  <% end -%>
12
13
  <% end -%>
13
14
 
@@ -12,6 +12,7 @@
12
12
  <% content_for :body_content_left do %>
13
13
  <div id='portfolio_main_image_container'>
14
14
  <%= render :partial => "main_image" %>
15
+ <span class="content"><%= raw @portfolio_entry.body %></span>
15
16
  </div>
16
17
  <% end %>
17
18
 
@@ -19,7 +20,7 @@
19
20
  <h2><%= @portfolio_entry.title %></h2>
20
21
  <ul id='portfolio_images'>
21
22
  <% @portfolio_entry.images.each_with_index do |image, index| %>
22
- <li class="<%= cycle('odd', 'even') %> #{index == params[:image_id].to_i) ? 'selected' : 'other'}">
23
+ <li class="<%= cycle('odd', 'even') %> <%= (index == params[:image_id].to_i) ? 'selected' : 'other' %>">
23
24
  <%= link_to_portfolio_image(@master_entry, @portfolio_entry, image, index) %>
24
25
  </li>
25
26
  <% end %>
@@ -30,6 +31,7 @@
30
31
  <%= render :partial => "/shared/content_page" %>
31
32
  </div>
32
33
 
34
+ <% if Refinery.version < '0.9.9' %>
33
35
  <% content_for :head do %>
34
36
  <%= stylesheet_link_tag('portfolio') %>
35
37
  <%# remove the jquery_include_tags call if jquery is included in your layout.
@@ -40,3 +42,15 @@
40
42
  var portfolio_entry_url = "<%= portfolio_project_url(@master_entry, @portfolio_entry) if ::Refinery::Portfolio.multi_level? %>";
41
43
  </script>
42
44
  <% end %>
45
+ <% else %>
46
+ <% content_for :stylesheets, stylesheet_link_tag('portfolio') %>
47
+ <%# remove the jquery_include_tags call if jquery is included in your layout.
48
+ %>
49
+ <%= content_for :javascript_libraries, jquery_include_tags(:include_ui => false) %>
50
+ <% content_for :javascripts do %>
51
+ <%= javascript_include_tag 'portfolio' %>
52
+ <script type='text/javascript'>
53
+ var portfolio_entry_url = "<%= portfolio_project_url(@master_entry, @portfolio_entry) if ::Refinery::Portfolio.multi_level? %>";
54
+ </script>
55
+ <% end %>
56
+ <% end %>
@@ -0,0 +1,26 @@
1
+ bg:
2
+ plugins:
3
+ portfolio:
4
+ title: Портфолио
5
+ description: Управление на портфолио в Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Действия
10
+ create_new_portfolio_entry: "Добавяне на нов елемент"
11
+ reorder_portfolio: "Пренареждане на портфолиото"
12
+ reorder_portfolio_done: "Запис на текущото подреждане на портфолиото"
13
+ portfolio: Портфолио
14
+ no_portfolio_entries_yet: 'Все още Вашето портфолио е празно. Натиснете "Добавяне на нов елемент", за да добавите нов.'
15
+ list:
16
+ view_live_html: "Преглед на този елемент <br/><em>(ще се отвори се в нов прозорец)</em>"
17
+ edit_this_entry: "Редактиране на този елемент"
18
+ move_this_entry_up: "Преместване на този елемент едно ниво нагоре"
19
+ confirm_delete_entry_title: "Изтриване на този елемент завинаги"
20
+ form:
21
+ title: Заглавие
22
+ images: Изображения
23
+ add: Добавяне
24
+ add_another_image: "Добавяне на друго изображение"
25
+ content: Съдържание
26
+ parent: Родител
@@ -0,0 +1,26 @@
1
+ cs:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Správa portfolia v Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Akce
10
+ create_new_portfolio_entry: "Přidat novou položku portfolia"
11
+ reorder_portfolio: "Přeuspořádat položky"
12
+ reorder_portfolio_done: "Uložit uspořádání"
13
+ portfolio: Portfolio
14
+ no_portfolio_entries_yet: 'Zatím nebyly vytvořeny žádné položky portfolia.'
15
+ list:
16
+ view_live_html: "Zobrazit tuto položku <br/><em>(otevře se v novém okně)</em>"
17
+ edit_this_entry: "Upravit tuto položku"
18
+ move_this_entry_up: "Přesunout položku o jednu úroveň výš"
19
+ confirm_delete_entry_title: "Odstranit tuto položku"
20
+ form:
21
+ title: Název
22
+ images: Obrázky
23
+ add: Přidat
24
+ add_another_image: "Přidat další obrázek"
25
+ content: Obsah
26
+ parent: "Nadřazená položka"
@@ -13,7 +13,7 @@ en:
13
13
  portfolio: Portfolio
14
14
  no_portfolio_entries_yet: 'There are no portfolio entries yet. Click "Add New Portfolio Entry" to add your first portfolio entries.'
15
15
  list:
16
- view_live: "View this entry live <br/><em>(opens in a new window)</em>"
16
+ view_live_html: "View this entry live <br/><em>(opens in a new window)</em>"
17
17
  edit_this_entry: "Edit this entry"
18
18
  move_this_entry_up: "Move this entry up one level"
19
19
  confirm_delete_entry_title: "Remove this entry forever"
@@ -0,0 +1,31 @@
1
+ es:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Gestionar un portfolio dentro de Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Acciones
10
+ create_new_portfolio_entry: "Añadir Nueva Entrada de Portfolio"
11
+ reorder_portfolio: "Reordenar portfolios"
12
+ reorder_portfolio_done: "He terminado de reordenar los portfolios"
13
+ portfolio: Portfolio
14
+ no_portfolio_entries_yet: 'No hay entradas de portfolio todavía. Pulsa en "Añadir Nueva Entrada de Portfolio" para añadir tu primera entrada de portfolio.'
15
+ list:
16
+ view_live_html: "Ver esta entrada como abierta al público<br/><em>(la abre en ventana nueva)</em>"
17
+ edit_this_entry: "Editar esta entrada"
18
+ move_this_entry_up: "Subir esta entrada un nivel"
19
+ confirm_delete_entry_title: "Borrar esta entrada para siempre"
20
+ form:
21
+ title: Título
22
+ images: Imágenes
23
+ add: Añadir
24
+ add_another_image: "Añadir Otra Imagen"
25
+ content: Contenido
26
+ parent: Padre
27
+ activerecord:
28
+ attributes:
29
+ portfolio_entry:
30
+ image: Imagen
31
+ portfolio_no_entries: No hemos introducido nada de este proyecto todavía.
@@ -0,0 +1,26 @@
1
+ fr:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Gestion du portfolio dans Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Actions
10
+ create_new_portfolio_entry: "Ajouter une entrée dans le portfolio"
11
+ reorder_portfolio: "Réordonner le Portfolio"
12
+ reorder_portfolio_done: "Fin de réordonnancement du Portfolio"
13
+ portfolio: Portfolio
14
+ no_portfolio_entries_yet: "Il n'y a pas encore d'entrée au portfolio. Cliquez sur \"Ajouter une entrée dans le portfolio\" pour ajouter votre première entrée."
15
+ list:
16
+ view_live_html: "Voir cette nouvelle entrée <br/><em>(Ouvre une nouvelle fenêtre)</em>"
17
+ edit_this_entry: "Modifier cette entrée"
18
+ move_this_entry_up: "Déplacer cette entrée d'un niveau"
19
+ confirm_delete_entry_title: "Supprimer définitivement cette entrée"
20
+ form:
21
+ title: Titre
22
+ images: Images
23
+ add: Ajouter
24
+ add_another_image: "Ajouter une autre image"
25
+ content: Contenu
26
+ parent: Parent
@@ -0,0 +1,26 @@
1
+ it:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Gestione di un portfolio in Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Azioni
10
+ create_new_portfolio_entry: "Aggiungi un elemento al Portfolio"
11
+ reorder_portfolio: "Riordina il Portfolio"
12
+ reorder_portfolio_done: "Riordinamento del Portfolio Finito"
13
+ portfolio: Portfolio
14
+ no_portfolio_entries_yet: 'Non ci sono ancora elementi nel portfolio. Premi "Aggiungi un elemento al Portfolio" per inserire il primo elemento al portfolio.'
15
+ list:
16
+ view_live_html: "Visualizza questo elemento <br/><em>(in una nuova finestra)</em>"
17
+ edit_this_entry: "Modifica questo elemento"
18
+ move_this_entry_up: "Muovi questo elemento su di un livello"
19
+ confirm_delete_entry_title: "Elimina questo elemento per sempre"
20
+ form:
21
+ title: Titolo
22
+ images: Immagini
23
+ add: Aggiungi
24
+ add_another_image: "Aggiungi un'altra Immagine"
25
+ content: Contenuto
26
+ parent: Genitore
@@ -0,0 +1,27 @@
1
+ lt:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Portfolio valdymas Refinery turinio valdymo sistemoje
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Veiksmai
10
+ create_new_portfolio_entry: "Pridėti naują Portfolio įrašą"
11
+ reorder_portfolio: "Keisti Portfolio eiliškumą"
12
+ reorder_portfolio_done: "Baigti keisti Portfolio eiliškumą"
13
+ portfolio: Portfolio
14
+ no_portfolio_entries_yet: 'There are no portfolio entries yet. Click "Add New Portfolio Entry" to add your first portfolio entries.'
15
+ no_portfolio_entries_yet: 'Kolk nėra portfolio įrašų. Paspauskite "Pridėti naują Portfolio įrašą", kad sukurti pirmąjį.'
16
+ list:
17
+ view_live_html: "Peržiūrėti šį įrašą gyvai svetainėje<br /><em>(atsidarys naujame lange)</em>"
18
+ edit_this_entry: "Redaguoti šį įrašą"
19
+ move_this_entry_up: "Perkelti įrašą vienu lygiu aukštyn"
20
+ confirm_delete_entry_title: "Pašalinti įrašą visam laikui"
21
+ form:
22
+ title: Antraštė
23
+ images: Paveikslėliai
24
+ add: Pridėti
25
+ add_another_image: "Pridėti kitą paveikslėlį"
26
+ content: Turinys
27
+ parent: Tėvas
@@ -13,7 +13,7 @@ lv:
13
13
  portfolio: Portfolio
14
14
  no_portfolio_entries_yet: Vēl nav neviena portfolio ieraksta. Spied "Izveidot Jaunu Portfolio Ierakstu", lai pievienotu pirmo ierakstu.
15
15
  list:
16
- view_live: Apskatīt šo ieraksu <br/><em>(tiks atvērts jaunā logā)</em>
16
+ view_live_html: Apskatīt šo ieraksu <br/><em>(tiks atvērts jaunā logā)</em>
17
17
  edit_this_entry: Labot šo ierakstu
18
18
  move_this_entry_up: Pārvietot šo ierkastu vienu līmeni augstāk
19
19
  confirm_delete_entry_title: Dzēst šo ierakstu
@@ -0,0 +1,26 @@
1
+ nb:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Behandle en portfolio i Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Handlinger
10
+ create_new_portfolio_entry: "Legg til nytt element"
11
+ reorder_portfolio: "Endre rekkefølge"
12
+ reorder_portfolio_done: "Ferdig å endre rekkefølge"
13
+ portfolio: Portfolio
14
+ no_portfolio_entries_yet: 'Det er ikke lagt til noen elementer enda. Klikk på "Legg til nytt element" for å legge til ditt første portfolio element.'
15
+ list:
16
+ view_live_html: "Se hvordan elementet ser ut for besøkende <br/><em>(åpnes i et nytt vindu)</em>"
17
+ edit_this_entry: "Rediger elementet"
18
+ move_this_entry_up: "Flytt elementet opp ett nivå"
19
+ confirm_delete_entry_title: "Fjern elementet permanent"
20
+ form:
21
+ title: Tittel
22
+ images: Bilder
23
+ add: Legg til
24
+ add_another_image: "Legg til et bilde"
25
+ content: Innhold
26
+ parent: Forelder
@@ -13,7 +13,7 @@ nl:
13
13
  portfolio: Portfolio
14
14
  no_portfolio_entries_yet: 'Er bestaan nog geen portfolio items. Klik "Maak een nieuw Portfolio item" om een eerste portfolio toe te voegen.'
15
15
  list:
16
- view_live: "Preview dit item <br/><em>(opent in nieuw venster)</em>"
16
+ view_live_html: "Preview dit item <br/><em>(opent in nieuw venster)</em>"
17
17
  edit_this_entry: "Bewerk dit item"
18
18
  move_this_entry_up: "Verplaats dit item een niveau hoger"
19
19
  confirm_delete_entry_title: "Verwijder dit item voorgoed"
@@ -0,0 +1,30 @@
1
+ pl:
2
+ plugins:
3
+ portfolio:
4
+ title: Portfolio
5
+ description: Zarządzaj portfolio wewnątrz RefineryCMS
6
+ article: masculine
7
+ admin:
8
+ portfolio:
9
+ index:
10
+ actions: Akcje
11
+ create_new_portfolio_entry: "Dodaj nowy wpis w portfolio"
12
+ reorder_portfolio: "Uporządkuj portfolio"
13
+ reorder_portfolio_done: "Zakończ porządkowanie portfolio"
14
+ portfolio: Portfolio
15
+ no_portfolio_entries_yet: 'Nie ma jeszcze żadnych wpisów w portfolio. Kliknij "Dodaj nowy wpis w portfolio" aby dodać pierwszy.'
16
+ list:
17
+ view_live_html: "Zobacz ten wpis na żywo <br/><em>(otwiera się w nowym oknie)</em>"
18
+ edit_this_entry: "Zmień ten wpis"
19
+ move_this_entry_up: "Przenieś ten wpis poziom wyżej"
20
+ confirm_delete_entry_title: "Usuń ten wpis na zawsze"
21
+ form:
22
+ title: Tytuł
23
+ images: Obrazy
24
+ add: Dodaj
25
+ add_another_image: "Dodaj inny obraz"
26
+ content: Zawartość
27
+ parent: Wpis nadrzędny
28
+ activerecord:
29
+ models:
30
+ portfolio_entry: wpis w portfolio
@@ -12,7 +12,7 @@ pt-BR:
12
12
  portfolio: Portfólio
13
13
  no_portfolio_entries_yet: 'Não há portfólios cadastrados. Clique em "Criar novo Portfólio" para cadastrar seu primeiro portfólio.'
14
14
  list:
15
- view_live: "Ver este portfólio no site<br/><em>(abrirá em uma nova janela)</em>"
15
+ view_live_html: "Ver este portfólio no site<br/><em>(abrirá em uma nova janela)</em>"
16
16
  edit_this_entry: "Alterar este portfólio"
17
17
  move_this_entry_up: "Mover este portfólio um nível acima"
18
18
  confirm_delete_entry_title: "Remover este portfólio para sempre"
@@ -0,0 +1,26 @@
1
+ rs:
2
+ plugins:
3
+ portfolio:
4
+ title: Galerije
5
+ description: Omogućava rad sa galerijama slika u Refinery CMS-u
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Akcije
10
+ create_new_portfolio_entry: "Dodaj novu galeriju"
11
+ reorder_portfolio: "Promeni redosled galerija"
12
+ reorder_portfolio_done: "Završi sa promenom"
13
+ portfolio: Galerije
14
+ no_portfolio_entries_yet: 'Ne postoje galerije. Klikni "Dodaj novu galeriju" da dodaš.'
15
+ list:
16
+ view_live_html: "Pogledaj ovu galeriju <br/><em>(otvara se u novom prozoru)</em>"
17
+ edit_this_entry: "Izmeni ovu galeriju"
18
+ move_this_entry_up: "Pomeri ovu galeriju jedan nivo iznad"
19
+ confirm_delete_entry_title: "Ukloni ovu galeriju zauvek"
20
+ form:
21
+ title: Naslov
22
+ images: Slike
23
+ add: Dodaj
24
+ add_another_image: "Dodaj još slika"
25
+ content: Sadržaj
26
+ parent: Roditelj
@@ -0,0 +1,28 @@
1
+ ru:
2
+ plugins:
3
+ portfolio:
4
+ title: Портфолио
5
+ description: Управление галереями с помощью Refinery CMS
6
+ admin:
7
+ portfolio:
8
+ index:
9
+ actions: Действия
10
+ create_new_portfolio_entry: "Добавить"
11
+ reorder_portfolio: "Сортировать"
12
+ reorder_portfolio_done: "Завершить сортировку"
13
+ portfolio: Портфолио
14
+ no_portfolio_entries_yet: 'Нет ни одного Портфолио. Нажмите "Добавить" для создания первого Портфолио.'
15
+ list:
16
+ view_live_html: "Посмотреть в максимальном размере <br/><em>(открыть в новом окне)</em>"
17
+ edit_this_entry: "Редактировать"
18
+ move_this_entry_up: "Переместить вверх на один уровень"
19
+ confirm_delete_entry_title: "Удалить навсегда"
20
+ form:
21
+ title: Заголовок
22
+ images: Изображения
23
+ add: Добавить
24
+ add_another_image: "Добавить"
25
+ content: Содержимое
26
+ parent: Родитель
27
+ portfolio:
28
+ portfolio_no_entries: В этой галерее нет фотографий
@@ -12,7 +12,7 @@ sl:
12
12
  portfolio: Portfelja
13
13
  no_portfolio_entries_yet: 'Trenutno še ni nobenega portfelja. Kliknite "Ustvari Novo Portfelje" če želite dodati prvo portfelje.'
14
14
  list:
15
- view_live: Poglej si ta zapis v živo <br/><em>(odpre se v novem oknu)</em>
15
+ view_live_html: Poglej si ta zapis v živo <br/><em>(odpre se v novem oknu)</em>
16
16
  edit_this_entry: "Uredi zapis"
17
17
  move_this_entry_up: "Premakni zapis en nivo višje"
18
18
  confirm_delete_entry_title: "Odstrani zapis"
@@ -25,8 +25,6 @@ class CreateStructureForPortfolio < ActiveRecord::Migration
25
25
  add_index :portfolio_entries, :parent_id
26
26
  add_index :portfolio_entries, :lft
27
27
  add_index :portfolio_entries, :rgt
28
-
29
- load(Rails.root.join('db', 'seeds', 'portfolio.rb'))
30
28
  end
31
29
 
32
30
  def self.down
@@ -0,0 +1,18 @@
1
+ class TranslatePortfolioEntries < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ PortfolioEntry.create_translation_table!({
5
+ :title => :string,
6
+ :body => :text
7
+ }, {
8
+ :migrate_data => true
9
+ })
10
+
11
+ load(Rails.root.join('db', 'seeds', 'portfolio.rb'))
12
+ end
13
+
14
+ def self.down
15
+ PortfolioEntry.drop_translation_table! :migrate_data => true
16
+ end
17
+
18
+ end
@@ -0,0 +1,52 @@
1
+ @portfolio @portfolio-manage @portfolio-entries
2
+ Feature: Manage Portfolio
3
+ In order to add a portfolio section to my website
4
+ As an administrator
5
+ I want to create and manage portfolio entries
6
+
7
+ Background:
8
+ Given I am a logged in refinery user
9
+ And I have no portfolio entries
10
+
11
+ @portfolio-list @list
12
+ Scenario: Portfolio Entries List
13
+ Given I have portfolio entries titled Home, About
14
+ When I go to the list of portfolio entries
15
+ Then I should see "Home"
16
+ And I should see "About"
17
+
18
+ @portfolio-valid @valid
19
+ Scenario: Add Valid Portfolio Entry
20
+ When I go to the list of portfolio entries
21
+ And I follow "Add New Portfolio Entry"
22
+ And I fill in "portfolio_entry_title" with "Portfolios are useful to show off my work"
23
+ And I press "Save"
24
+ Then I should see "'Portfolios are useful to show off my work' was successfully added."
25
+ And I should have 1 portfolio entries
26
+
27
+ @portfolio-invalid @invalid
28
+ Scenario: Add Invalid Portfolio Entry (without title)
29
+ When I go to the list of portfolio entries
30
+ And I follow "Add New Portfolio Entry"
31
+ And I press "Save"
32
+ Then I should see "Title can't be blank"
33
+ And I should have 0 portfolio entries
34
+
35
+ @portfolio-edit @edit
36
+ Scenario: Edit Existing Portfolio Entry
37
+ Given I have portfolio entries titled Home
38
+ And I go to the list of portfolio entries
39
+ And I follow "Edit this entry"
40
+ And I fill in "portfolio_entry_title" with "Away"
41
+ And I press "Save"
42
+ Then I should see "'Away' was successfully updated."
43
+ And I should not see "Home"
44
+ And I should have 1 portfolio entries
45
+
46
+ @portfolio-delete @delete
47
+ Scenario: Delete Portfolio Entry
48
+ Given I only have a portfolio entry titled "test"
49
+ When I go to the list of portfolio entries
50
+ And I follow "Remove this entry forever"
51
+ Then I should see "'test' was successfully removed."
52
+ And I should have 0 portfolio entries
@@ -0,0 +1,13 @@
1
+ Given /^I have no portfolio entries$/ do
2
+ PortfolioEntry.delete_all
3
+ end
4
+
5
+ Given /^I (only )?have a? ?portfolio entry?i?e?s? titled "?([^\"]*)"?$/ do |only, title|
6
+ PortfolioEntry.delete_all if only
7
+
8
+ entry = PortfolioEntry.create(:title => title)
9
+ end
10
+
11
+ Then /^I should have ([0-9]+) portfolio entries?$/ do |count|
12
+ PortfolioEntry.count.should == count.to_i
13
+ end
@@ -0,0 +1,5 @@
1
+ require 'factory_girl'
2
+
3
+ Factory.define :portfolio_entry do |pe|
4
+ pe.title "My Protfolio"
5
+ end
@@ -0,0 +1,16 @@
1
+ module NavigationHelpers
2
+ module Refinery
3
+ module Portfolio
4
+ def path_to(page_name)
5
+ case page_name
6
+ when /the list of portfolio( entries)?/
7
+ admin_portfolio_entries_path
8
+ when /the new portfolio( entry)? form/
9
+ new_admin_portfolio_path
10
+ else
11
+ nil
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ @portfolio @portfolio-visit @visit-portfolio
2
+ Feature: Visit Portfolio Entries
3
+ In order to view the portfolio section on this website
4
+ As a visitor
5
+ I want to view portfolio entries
6
+
7
+ Background:
8
+ Given A Refinery user exists
@@ -2,10 +2,7 @@
2
2
  require File.expand_path('../portfolio/version.rb', __FILE__)
3
3
  version = Refinery::Portfolio.version
4
4
  raise "Could not get version so gemspec can not be built" if version.nil?
5
- files = %w( readme.md license.md )
6
- %w(app config generators lib public rails test vendor).each do |dir|
7
- files += Dir.glob("#{dir}/**/*") if File.directory?(dir)
8
- end
5
+ files = (Dir.glob("*") | Dir.glob("**/*")).reject{ |f| f =~ %r{.gem(spec)?$} }
9
6
 
10
7
  gemspec = <<EOF
11
8
  Gem::Specification.new do |s|
@@ -19,14 +16,11 @@ Gem::Specification.new do |s|
19
16
  s.authors = ['Resolve Digital']
20
17
  s.require_paths = %w(lib)
21
18
 
22
- s.add_dependency 'refinerycms', '>= 0.9.8'
19
+ s.add_dependency 'refinerycms', '>= 0.9.9'
23
20
 
24
21
  s.files = [
25
22
  '#{files.join("',\n '")}'
26
23
  ]
27
- #{"s.test_files = [
28
- '#{Dir.glob("test/**/*.rb").join("',\n '")}'
29
- ]" if File.directory?("test")}
30
24
  end
31
25
  EOF
32
26
 
@@ -0,0 +1,8 @@
1
+ require "refinery/generators"
2
+
3
+ class RefinerycmsPortfolio < ::Refinery::Generators::EngineInstaller
4
+
5
+ source_root File.expand_path("../../../", __FILE__)
6
+ engine_name "portfolio"
7
+
8
+ end
@@ -1,7 +1,7 @@
1
1
  module Refinery
2
2
  module Portfolio
3
3
  def self.version
4
- %q{0.9.9}
4
+ %q{0.9.10}
5
5
  end
6
6
  end
7
7
  end
@@ -78,7 +78,11 @@ image_added = function(image) {
78
78
 
79
79
  $(document).ready(function() {
80
80
  $('h1#body_content_page_title').addClass('clearfix');
81
- reset_functionality();
81
+
82
+ if ($('#portfolio_images').sortable) {
83
+ reset_functionality();
84
+ }
85
+
82
86
 
83
87
  $("ul#portfolio_images li.other a img").fadeTo(0, 0.3);
84
88
 
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ Dir[File.expand_path('../../../features/support/factories.rb', __FILE__)].each {|f| require f}
4
+
5
+ describe PortfolioEntry do
6
+ describe "validations" do
7
+ it "rejects empty title" do
8
+ PortfolioEntry.new.should_not be_valid
9
+ end
10
+ end
11
+
12
+ describe "title_image association" do
13
+ it "have a title_image attribute" do
14
+ Factory(:portfolio_entry).should respond_to(:title_image)
15
+ end
16
+ end
17
+
18
+ describe "images_portfolio_entries association" do
19
+ it "have an images_portfolio_entries attribute" do
20
+ Factory(:portfolio_entry).should respond_to(:images_portfolio_entries)
21
+ end
22
+ end
23
+
24
+ describe "images association" do
25
+ it "have an images attribute" do
26
+ Factory(:portfolio_entry).should respond_to(:images)
27
+ end
28
+ end
29
+
30
+ describe "default scope" do
31
+ it "order by lft in ASC order" do
32
+ PortfolioEntry.delete_all
33
+ entry1 = Factory(:portfolio_entry)
34
+ entry2 = Factory(:portfolio_entry)
35
+ portfolio_entries = PortfolioEntry.all
36
+ portfolio_entries.first.should == entry1
37
+ portfolio_entries.second.should == entry2
38
+ end
39
+ end
40
+
41
+ describe "alias between content and body" do
42
+ it "aliases content method to body" do
43
+ entry = Factory(:portfolio_entry, :content => "refinerycms")
44
+ entry.content.should == entry.body
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refinerycms-portfolio
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 47
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 9
8
- - 9
9
- version: 0.9.9
9
+ - 10
10
+ version: 0.9.10
10
11
  platform: ruby
11
12
  authors:
12
13
  - Resolve Digital
@@ -14,8 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-11-17 00:00:00 +13:00
18
- default_executable:
18
+ date: 2011-12-16 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: refinerycms
@@ -25,11 +25,12 @@ dependencies:
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
+ hash: 41
28
29
  segments:
29
30
  - 0
30
31
  - 9
31
- - 8
32
- version: 0.9.8
32
+ - 9
33
+ version: 0.9.9
33
34
  type: :runtime
34
35
  version_requirements: *id001
35
36
  description: A really straightforward open source Ruby on Rails portfolio plugin designed for integration with RefineryCMS
@@ -41,8 +42,8 @@ extensions: []
41
42
  extra_rdoc_files: []
42
43
 
43
44
  files:
44
- - readme.md
45
45
  - license.md
46
+ - readme.md
46
47
  - app/controllers/admin/portfolio_controller.rb
47
48
  - app/controllers/portfolio_controller.rb
48
49
  - app/helpers/portfolio_helper.rb
@@ -50,6 +51,7 @@ files:
50
51
  - app/models/portfolio_entry.rb
51
52
  - app/views/admin/portfolio/_form.html.erb
52
53
  - app/views/admin/portfolio/_list.html.erb
54
+ - app/views/admin/portfolio/_locale_picker.html.erb
53
55
  - app/views/admin/portfolio/_sortable_list.html.erb
54
56
  - app/views/admin/portfolio/edit.html.erb
55
57
  - app/views/admin/portfolio/index.html.erb
@@ -58,22 +60,38 @@ files:
58
60
  - app/views/portfolio/empty.html.erb
59
61
  - app/views/portfolio/index.html.erb
60
62
  - app/views/portfolio/show.html.erb
63
+ - config/locales/bg.yml
64
+ - config/locales/cs.yml
61
65
  - config/locales/en.yml
66
+ - config/locales/es.yml
67
+ - config/locales/fr.yml
68
+ - config/locales/it.yml
69
+ - config/locales/lt.yml
62
70
  - config/locales/lv.yml
71
+ - config/locales/nb.yml
63
72
  - config/locales/nl.yml
73
+ - config/locales/pl.yml
64
74
  - config/locales/pt-BR.yml
75
+ - config/locales/rs.yml
76
+ - config/locales/ru.yml
65
77
  - config/locales/sl.yml
66
78
  - config/routes.rb
79
+ - db/migrate/1_create_structure_for_portfolio.rb
80
+ - db/migrate/2_translate_portfolio_entries.rb
81
+ - db/seeds/portfolio.rb
82
+ - features/manage_portfolio.feature
83
+ - features/step_definitions/portfolio_steps.rb
84
+ - features/support/factories.rb
85
+ - features/support/paths.rb
86
+ - features/visit_portfolio.feature
67
87
  - lib/gemspec.rb
68
- - lib/generators/refinerycms_portfolio/refinerycms_portfolio_generator.rb
69
- - lib/generators/refinerycms_portfolio/templates/db/migrate/migration_number_create_structure_for_portfolio.rb
70
- - lib/generators/refinerycms_portfolio/templates/db/seeds/portfolio.rb
88
+ - lib/generators/refinerycms_portfolio_generator.rb
71
89
  - lib/portfolio/version.rb
72
90
  - lib/portfolio.rb
73
91
  - lib/refinerycms-portfolio.rb
74
92
  - public/javascripts/portfolio.js
75
93
  - public/stylesheets/portfolio.css
76
- has_rdoc: true
94
+ - spec/models/portfolio_entry_spec.rb
77
95
  homepage: http://refinerycms.com
78
96
  licenses: []
79
97
 
@@ -87,6 +105,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
105
  requirements:
88
106
  - - ">="
89
107
  - !ruby/object:Gem::Version
108
+ hash: 3
90
109
  segments:
91
110
  - 0
92
111
  version: "0"
@@ -95,13 +114,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
114
  requirements:
96
115
  - - ">="
97
116
  - !ruby/object:Gem::Version
117
+ hash: 3
98
118
  segments:
99
119
  - 0
100
120
  version: "0"
101
121
  requirements: []
102
122
 
103
123
  rubyforge_project:
104
- rubygems_version: 1.3.7
124
+ rubygems_version: 1.8.10
105
125
  signing_key:
106
126
  specification_version: 3
107
127
  summary: Ruby on Rails portfolio plugin for RefineryCMS.
@@ -1,59 +0,0 @@
1
- require 'rails/generators/migration'
2
-
3
- class RefinerycmsPortfolioGenerator < Rails::Generators::NamedBase
4
-
5
- include Rails::Generators::Migration
6
-
7
- source_root File.expand_path('../templates', __FILE__)
8
- argument :name, :type => :string, :default => 'portfolio'
9
-
10
- def generate
11
- Dir.glob(File.expand_path('../templates/**/**', __FILE__)).each do |path|
12
- template path, plugin_path_for(path) unless File.directory?(path)
13
- end
14
- end
15
-
16
- protected
17
-
18
- def plugin_path_for(path)
19
- path = path.gsub(File.dirname(__FILE__) + "/templates/", "vendor/engines/#{plural_name}/")
20
- path = path.gsub("plural_name", plural_name)
21
- path = path.gsub("singular_name", singular_name)
22
- path = path.gsub(".migration", '')
23
-
24
- # hack can be removed after issue is fixed
25
- next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__))
26
- path = path.gsub("migration_number", next_migration_number)
27
-
28
- # replace our local db path with the app one instead.
29
- path = path.gsub("/db/", "/../../../db/")
30
- end
31
-
32
- end
33
-
34
- # Below is a hack until this issue:
35
- # https://rails.lighthouseapp.com/projects/8994/tickets/3820-make-railsgeneratorsmigrationnext_migration_number-method-a-class-method-so-it-possible-to-use-it-in-custom-generators
36
- # is fixed on the Rails project.
37
-
38
- require 'rails/generators/named_base'
39
- require 'rails/generators/migration'
40
- require 'rails/generators/active_model'
41
- require 'active_record'
42
-
43
- module ActiveRecord
44
- module Generators
45
- class Base < Rails::Generators::NamedBase #:nodoc:
46
- include Rails::Generators::Migration
47
-
48
- # Implement the required interface for Rails::Generators::Migration.
49
- def self.next_migration_number(dirname) #:nodoc:
50
- next_migration_number = current_migration_number(dirname) + 1
51
- if ActiveRecord::Base.timestamped_migrations
52
- [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
53
- else
54
- "%.3d" % next_migration_number
55
- end
56
- end
57
- end
58
- end
59
- end