fassets_core 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +21 -0
- data/README.md +22 -0
- data/Rakefile +39 -0
- data/app/assets/images/fassets_core/add.png +0 -0
- data/app/assets/images/fassets_core/archive.png +0 -0
- data/app/assets/images/fassets_core/classify.png +0 -0
- data/app/assets/images/fassets_core/clipboard.png +0 -0
- data/app/assets/images/fassets_core/collapse.png +0 -0
- data/app/assets/images/fassets_core/collapsed.png +0 -0
- data/app/assets/images/fassets_core/delete.png +0 -0
- data/app/assets/images/fassets_core/drag.png +0 -0
- data/app/assets/images/fassets_core/edit.png +0 -0
- data/app/assets/images/fassets_core/link.png +0 -0
- data/app/assets/images/fassets_core/markup_preview.png +0 -0
- data/app/assets/images/fassets_core/remove.png +0 -0
- data/app/assets/images/fassets_core/sort.png +0 -0
- data/app/assets/images/fassets_core/warning.png +0 -0
- data/app/assets/javascripts/fassets_core/add_asset_box.js +102 -0
- data/app/assets/javascripts/fassets_core/application.js.erb +14 -0
- data/app/assets/javascripts/fassets_core/assets.js +31 -0
- data/app/assets/javascripts/fassets_core/catalog_box.js +73 -0
- data/app/assets/javascripts/fassets_core/catalogs.js +46 -0
- data/app/assets/javascripts/fassets_core/classification.js +37 -0
- data/app/assets/javascripts/fassets_core/edit_box.js +63 -0
- data/app/assets/javascripts/fassets_core/facets.js.erb +32 -0
- data/app/assets/javascripts/fassets_core/tray.js +30 -0
- data/app/assets/stylesheets/fassets_core/add_asset_box.css.scss +77 -0
- data/app/assets/stylesheets/fassets_core/application.css +16 -0
- data/app/assets/stylesheets/fassets_core/assets.css.scss +74 -0
- data/app/assets/stylesheets/fassets_core/catalog_box.css.scss +45 -0
- data/app/assets/stylesheets/fassets_core/collapsible.css.scss +54 -0
- data/app/assets/stylesheets/fassets_core/edit_box.css.scss +58 -0
- data/app/assets/stylesheets/fassets_core/facet.css.scss +56 -0
- data/app/assets/stylesheets/fassets_core/filter.css.scss +20 -0
- data/app/assets/stylesheets/fassets_core/forms.css.scss +12 -0
- data/app/assets/stylesheets/fassets_core/labels.css.scss +13 -0
- data/app/assets/stylesheets/fassets_core/master.css.scss +127 -0
- data/app/assets/stylesheets/fassets_core/sidebar.css.scss +84 -0
- data/app/assets/stylesheets/fassets_core/tray.css.scss +106 -0
- data/app/controllers/assets_controller.rb +115 -0
- data/app/controllers/catalogs_controller.rb +99 -0
- data/app/controllers/classifications_controller.rb +56 -0
- data/app/controllers/facets_controller.rb +57 -0
- data/app/controllers/fassets_core/application_controller.rb +5 -0
- data/app/controllers/labels_controller.rb +54 -0
- data/app/controllers/tray_positions_controller.rb +81 -0
- data/app/helpers/assets_helper.rb +20 -0
- data/app/helpers/catalogs_helper.rb +3 -0
- data/app/helpers/classifications_helper.rb +8 -0
- data/app/helpers/fassets_core/application_helper.rb +48 -0
- data/app/helpers/labels_helper.rb +3 -0
- data/app/helpers/tray_positions_helper.rb +3 -0
- data/app/models/asset.rb +52 -0
- data/app/models/catalog.rb +16 -0
- data/app/models/classification.rb +8 -0
- data/app/models/facet.rb +19 -0
- data/app/models/label.rb +11 -0
- data/app/models/label_filter.rb +16 -0
- data/app/models/labeling.rb +5 -0
- data/app/models/tray_position.rb +9 -0
- data/app/views/assets/_add_asset_sidebar.html.haml +8 -0
- data/app/views/assets/_classification.html.haml +33 -0
- data/app/views/assets/_form.html.haml +30 -0
- data/app/views/assets/_put_on_tray.html.haml +7 -0
- data/app/views/assets/edit.html.haml +15 -0
- data/app/views/assets/new.html.haml +25 -0
- data/app/views/assets/show.html.haml +13 -0
- data/app/views/catalogs/_box_catalog_list.html.haml +6 -0
- data/app/views/catalogs/_box_content.html.haml +13 -0
- data/app/views/catalogs/_catalog.html.haml +2 -0
- data/app/views/catalogs/_facet.html.haml +13 -0
- data/app/views/catalogs/_filter_item.html.haml +3 -0
- data/app/views/catalogs/_form.html.haml +6 -0
- data/app/views/catalogs/box.html.haml +6 -0
- data/app/views/catalogs/edit.html.haml +8 -0
- data/app/views/catalogs/index.html.haml +17 -0
- data/app/views/catalogs/new.html.haml +8 -0
- data/app/views/catalogs/show.html.haml +30 -0
- data/app/views/classifications/update.js.erb +4 -0
- data/app/views/facets/_form.html.haml +9 -0
- data/app/views/facets/edit.html.haml +15 -0
- data/app/views/labels/_form.haml +3 -0
- data/app/views/labels/_sidebar.html.haml +22 -0
- data/app/views/labels/destroy.js.erb +13 -0
- data/app/views/layouts/fassets_core/application.html.haml +16 -0
- data/app/views/shared/_asset.html.haml +22 -0
- data/app/views/shared/_asset_form.html.haml +7 -0
- data/app/views/shared/_classification.html.haml +23 -0
- data/app/views/shared/_clipboard.html.haml +10 -0
- data/app/views/shared/_error.html.haml +6 -0
- data/app/views/shared/_tray.html.haml +13 -0
- data/app/views/shared/_tray_position.html.haml +8 -0
- data/app/views/tray_positions/create.js.rjs +10 -0
- data/app/views/tray_positions/destroy.js.rjs +1 -0
- data/app/views/tray_positions/sort.js.rjs +15 -0
- data/config/initializers/mime_types.rb +2 -0
- data/config/initializers/uploader.rb +2 -0
- data/config/initializers/users.rb +7 -0
- data/config/routes.rb +34 -0
- data/db/migrate/001_create_catalogs.rb +13 -0
- data/db/migrate/002_create_facets.rb +14 -0
- data/db/migrate/003_create_labels.rb +12 -0
- data/db/migrate/005_create_classifications.rb +12 -0
- data/db/migrate/006_create_labelings.rb +12 -0
- data/db/migrate/007_create_tray_positions.rb +13 -0
- data/db/migrate/008_create_assets.rb +16 -0
- data/db/migrate/010_add_label_ordering.rb +10 -0
- data/db/migrate/017_add_clipboard.rb +11 -0
- data/db/migrate/20120803150826_add_position_to_facet.rb +5 -0
- data/db/schema.rb +141 -0
- data/db/seeds.rb +7 -0
- data/lib/acts_as_asset.rb +36 -0
- data/lib/authenticated_system.rb +187 -0
- data/lib/authenticated_test_helper.rb +20 -0
- data/lib/fassets_core.rb +6 -0
- data/lib/fassets_core/engine.rb +7 -0
- data/lib/fassets_core/plugins.rb +13 -0
- data/lib/fassets_core/test_helper.rb +3 -0
- data/lib/fassets_core/test_helper/every_assets_controller.rb +161 -0
- data/lib/fassets_core/test_helper/every_authenticated_controller.rb +10 -0
- data/lib/fassets_core/version.rb +3 -0
- data/lib/tasks/cucumber.rake +57 -0
- data/lib/tasks/fassets-core_tasks.rake +4 -0
- data/lib/template_manager.rb +27 -0
- data/test/fassets-core_test.rb +7 -0
- data/test/fixtures/asset_contents.yml +7 -0
- data/test/fixtures/assets.yml +7 -0
- data/test/fixtures/catalogs.yml +9 -0
- data/test/fixtures/classifications.yml +7 -0
- data/test/fixtures/facets.yml +9 -0
- data/test/fixtures/frames.yml +11 -0
- data/test/fixtures/image_assets.yml +7 -0
- data/test/fixtures/labellings.yml +7 -0
- data/test/fixtures/labels.yml +9 -0
- data/test/fixtures/presentations.yml +7 -0
- data/test/fixtures/slides.yml +11 -0
- data/test/fixtures/slots.yml +0 -0
- data/test/fixtures/topics.yml +11 -0
- data/test/fixtures/tray_positions.yml +7 -0
- data/test/fixtures/users.yml +31 -0
- data/test/functional/assets_controller_test.rb +8 -0
- data/test/functional/catalogs_controller_test.rb +8 -0
- data/test/functional/classifications_controller_test.rb +8 -0
- data/test/functional/content_controller_test.rb +8 -0
- data/test/functional/facets_controller_test.rb +8 -0
- data/test/functional/file_assets_controller_test.rb +8 -0
- data/test/functional/files_controller_test.rb +8 -0
- data/test/functional/labellings_controller_test.rb +8 -0
- data/test/functional/labels_controller_test.rb +8 -0
- data/test/functional/presentations_controller_test.rb +8 -0
- data/test/functional/sessions_controller_test.rb +82 -0
- data/test/functional/slides_controller_test.rb +8 -0
- data/test/functional/slots_controller_test.rb +8 -0
- data/test/functional/tray_positions_controller_test.rb +8 -0
- data/test/functional/urls_controller_test.rb +8 -0
- data/test/functional/users_controller_test.rb +58 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/performance/browsing_test.rb +9 -0
- data/test/test_helper.rb +10 -0
- data/test/unit/asset_content_test.rb +8 -0
- data/test/unit/asset_test.rb +8 -0
- data/test/unit/catalog_test.rb +8 -0
- data/test/unit/classification_test.rb +8 -0
- data/test/unit/facet_test.rb +8 -0
- data/test/unit/frame_test.rb +8 -0
- data/test/unit/image_asset_test.rb +8 -0
- data/test/unit/label_test.rb +8 -0
- data/test/unit/labelling_test.rb +8 -0
- data/test/unit/presentation_test.rb +8 -0
- data/test/unit/slide_test.rb +8 -0
- data/test/unit/slot_test.rb +8 -0
- data/test/unit/topic_test.rb +8 -0
- data/test/unit/tray_position_test.rb +8 -0
- data/test/unit/user_test.rb +103 -0
- metadata +453 -0
data/app/models/asset.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
class Asset < ActiveRecord::Base
|
2
|
+
belongs_to :user
|
3
|
+
belongs_to :content, :polymorphic => true
|
4
|
+
has_many :classifications, :dependent => :destroy
|
5
|
+
has_many :labelings, :through => :classifications
|
6
|
+
has_many :tray_positions, :dependent => :destroy
|
7
|
+
|
8
|
+
validates_associated :content
|
9
|
+
validates_presence_of :name,:content_type
|
10
|
+
|
11
|
+
after_create :put_on_tray
|
12
|
+
|
13
|
+
def publish=(test)
|
14
|
+
end
|
15
|
+
def published=(test)
|
16
|
+
end
|
17
|
+
def published
|
18
|
+
1
|
19
|
+
end
|
20
|
+
def self.filter(filter)
|
21
|
+
options = {:select => "assets.*", :order => "name"}
|
22
|
+
unless filter.empty?
|
23
|
+
options[:joins] = "LEFT OUTER JOIN labelings ON labelings.classification_id=classifications.id"
|
24
|
+
options[:conditions] = filter.to_condition
|
25
|
+
options[:group] = "assets.id HAVING COUNT(label_id)=#{filter.size}"
|
26
|
+
end
|
27
|
+
all options
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.count_for_labels(filter)
|
31
|
+
options = {:include => [:labelings], :group => "label_id"}
|
32
|
+
unless filter.empty?
|
33
|
+
options[:conditions] = "assets.id IN(
|
34
|
+
SELECT DISTINCT assets.id
|
35
|
+
FROM assets
|
36
|
+
LEFT OUTER JOIN classifications ON (assets.id = classifications.asset_id)
|
37
|
+
LEFT OUTER JOIN labelings ON (labelings.classification_id=classifications.id)
|
38
|
+
WHERE (#{filter.to_condition})
|
39
|
+
GROUP BY assets.id
|
40
|
+
HAVING COUNT(label_id)=#{filter.size})"
|
41
|
+
filter.to_condition
|
42
|
+
end
|
43
|
+
count options
|
44
|
+
end
|
45
|
+
|
46
|
+
def put_on_tray
|
47
|
+
return if user.nil?
|
48
|
+
|
49
|
+
tray_positions.create(:user_id => user.id, :asset_id => id, :position => user.tray_positions.maximum(:position) ? user.tray_positions.maximum(:position)+1 : 1)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Catalog < ActiveRecord::Base
|
2
|
+
has_many :facets, :include => :labels, :dependent => :destroy
|
3
|
+
has_many :classifications, :dependent => :destroy
|
4
|
+
has_many :assets, :through => :classifications
|
5
|
+
|
6
|
+
validates_presence_of :title
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
#has_permalink :title
|
11
|
+
|
12
|
+
#def to_param
|
13
|
+
# "#{id}-#{permalink}"
|
14
|
+
#end
|
15
|
+
end
|
16
|
+
|
data/app/models/facet.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
class Facet < ActiveRecord::Base
|
2
|
+
LABEL_ORDER = [["ascending", "value ASC, caption ASC"],
|
3
|
+
["descending", "value DESC, caption DESC"],
|
4
|
+
["manual", "position"]]
|
5
|
+
|
6
|
+
belongs_to :catalog
|
7
|
+
has_many :labels, :dependent => :destroy
|
8
|
+
validates_presence_of :caption
|
9
|
+
|
10
|
+
scope :exclude, lambda {|ids|
|
11
|
+
{ :conditions => ["id NOT IN(?)", ids]}
|
12
|
+
}
|
13
|
+
|
14
|
+
def ordered_labels
|
15
|
+
#self.labels.find(:all, :order => self.label_order)
|
16
|
+
self.labels.order(self.label_order)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
data/app/models/label.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
class Label < ActiveRecord::Base
|
2
|
+
belongs_to :facet
|
3
|
+
has_many :labelings, :dependent => :destroy
|
4
|
+
has_many :classifications, :through => :labelings
|
5
|
+
|
6
|
+
validates_presence_of :caption
|
7
|
+
scope :in, lambda {|ids|
|
8
|
+
{:conditions => ['labels.id IN (?)', ids], :include => :facet, :order => "facet_id"}
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class LabelFilter < Array
|
2
|
+
def initialize(filter_query)
|
3
|
+
label_ids = (filter_query || "").split('-').map{|id| id.to_i}
|
4
|
+
super(label_ids)
|
5
|
+
end
|
6
|
+
def to_condition
|
7
|
+
"labelings.label_id IN(#{self.join(',')})"
|
8
|
+
end
|
9
|
+
def to_query_include(id)
|
10
|
+
(self + [id]).join('-')
|
11
|
+
end
|
12
|
+
def to_query_exclude(id)
|
13
|
+
self.reject{|i| i == id}.join('-')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class TrayPosition < ActiveRecord::Base
|
2
|
+
belongs_to :asset, :include => :content
|
3
|
+
belongs_to :user
|
4
|
+
belongs_to :clipboard, :polymorphic => true
|
5
|
+
validates_associated :asset, :clipboard
|
6
|
+
validates_presence_of :position
|
7
|
+
#validates_uniqueness_of :asset_id, :scope => [:user_id], :message => "Asset is already on tray!"
|
8
|
+
end
|
9
|
+
|
@@ -0,0 +1,33 @@
|
|
1
|
+
.classification_form
|
2
|
+
=form_for Classification.new(:asset_id => @content.asset.id), :url => main_app.classifications_path do |f|
|
3
|
+
%p
|
4
|
+
%label{:for => 'catalog_id'} New:
|
5
|
+
=select("classification", "catalog_id", Catalog.all.inject([]){|m,c| m << [c.title, c.id]})
|
6
|
+
=hidden_field_tag "classification[asset_id]", @content.asset.id.to_s
|
7
|
+
=submit_tag "Create", :class => "classification_create"
|
8
|
+
|
9
|
+
|
10
|
+
.classification_sidebar
|
11
|
+
.title Classifications
|
12
|
+
%ul.collection
|
13
|
+
-catalogs = []
|
14
|
+
-@content.asset.classifications.each do |classification|
|
15
|
+
-catalogs << classification.catalog_id
|
16
|
+
%li.classification
|
17
|
+
.content
|
18
|
+
=form_for classification, :remote => true , :url => main_app.classification_path(classification) do |f|
|
19
|
+
.classification_header
|
20
|
+
=link_to classification.catalog.title, main_app.catalog_path(classification.catalog), :class => "classification_title"
|
21
|
+
=submit_tag "Drop", :class => "classification_drop", :classification_id => classification.id
|
22
|
+
.classification_facets
|
23
|
+
-classification.catalog.facets.each do |facet|
|
24
|
+
.facet{:class => "#{facet.color}_lite"}
|
25
|
+
.caption{:class => facet.color}
|
26
|
+
=facet.caption
|
27
|
+
%ul
|
28
|
+
-facet.labels.each do |label|
|
29
|
+
%li.label
|
30
|
+
=check_box_tag "labels[]", label.id, classification.label_ids.include?(label.id)
|
31
|
+
=link_to label.caption
|
32
|
+
=submit_tag "Save"
|
33
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-unless new
|
2
|
+
#edit_header
|
3
|
+
#content
|
4
|
+
#messages
|
5
|
+
#type
|
6
|
+
=@content.media_type.capitalize
|
7
|
+
#action
|
8
|
+
%span.action
|
9
|
+
=button_to "Delete", asset_content_path(@content),
|
10
|
+
:method => :delete,
|
11
|
+
:onclick => "return confirm('Are you sure?')",
|
12
|
+
:class => "delete_asset_button"
|
13
|
+
=render :partial => "assets/put_on_tray"
|
14
|
+
=render :partial => "#{@content.class.to_s.underscore.pluralize}/actions" rescue nil
|
15
|
+
#asset_preview
|
16
|
+
=render content_partial(@content, :preview)
|
17
|
+
|
18
|
+
#asset_form
|
19
|
+
=form_for @content, :url => asset_content_path(@content), :html => {:class => "fassets_core asset_form", :multipart => true} do |f|
|
20
|
+
=render :partial => "shared/error", :locals => {:target => @content}
|
21
|
+
=fields_for "asset", @content.asset do |asset|
|
22
|
+
%p
|
23
|
+
%label{:for => 'name'} Name:
|
24
|
+
=asset.text_field :name
|
25
|
+
#name_warning
|
26
|
+
=render :partial => "#{@content.class.to_s.underscore.pluralize}/form", :locals => {:new => new}, :object => f
|
27
|
+
=submit_tag @content.new_record? ? "Create" : "Save",
|
28
|
+
:class => "asset_submit_button",
|
29
|
+
:data => { :asset_id => @content.asset.id, :asset_type => @content.asset.content_type, :content_id => @content.id }
|
30
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
-if user_signed_in?
|
2
|
+
-unless TrayPosition.where(:asset_id => @content.asset.id, :user_id => current_user.id).exists?
|
3
|
+
-tp = TrayPosition.new(:asset_id => @content.asset.id, :user_id => current_user.id)
|
4
|
+
=form_for [current_user, tp], :url => main_app.user_tray_positions_path(current_user,tp), :html => {:class => "inline"} do |f|
|
5
|
+
=f.hidden_field :asset_id
|
6
|
+
=f.hidden_field :user_id
|
7
|
+
=submit_tag "-> Tray", :class => "put_on_tray_button", :data => { :asset_id => @content.asset.id, :user_id => current_user.id }
|
@@ -0,0 +1,15 @@
|
|
1
|
+
=content_for :h1 do
|
2
|
+
#type
|
3
|
+
=@content.media_type.capitalize
|
4
|
+
#title
|
5
|
+
=link_to @content.asset.name, asset_content_path(@content)
|
6
|
+
#action
|
7
|
+
%span.action
|
8
|
+
=button_to "Delete", asset_content_path(@content), :method => :delete, :onclick => "return confirm('Are you sure?')"
|
9
|
+
=render :partial => "assets/put_on_tray"
|
10
|
+
|
11
|
+
#sidebar.fassets_core
|
12
|
+
=render :partial => "assets/classification", :locals => {:asset => @content.asset}
|
13
|
+
=render :partial => "#{@content.class.to_s.underscore.pluralize}/sidebar"
|
14
|
+
#main.fassets_core
|
15
|
+
=render :partial => "assets/form", :locals => {:new => false}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
-content_for :h1 do
|
2
|
+
#type
|
3
|
+
=@content.class.to_s
|
4
|
+
#name
|
5
|
+
New
|
6
|
+
|
7
|
+
-unless @asset_types.nil?
|
8
|
+
#add_asset_sidebar
|
9
|
+
=render :partial => "add_asset_sidebar"
|
10
|
+
|
11
|
+
-unless @content.nil?
|
12
|
+
#add_asset_content
|
13
|
+
#main.fassets_core
|
14
|
+
=form_for @content, :url => asset_content_path(@content),:html => {:multipart => true} do |f|
|
15
|
+
=render :partial => "shared/error", :locals => {:target => @content}
|
16
|
+
=fields_for "asset" do |asset|
|
17
|
+
%p
|
18
|
+
%label{:for => 'name'} Name:
|
19
|
+
=asset.text_field :name
|
20
|
+
#name_warning
|
21
|
+
%p
|
22
|
+
%label{:for => 'catalog_id'} Catalog:
|
23
|
+
=select("classification", "catalog_id", Catalog.all.inject([]){|m,c| m << [c.title, c.id]})
|
24
|
+
=render :partial => @content.class.to_s.underscore.pluralize + "/form", :locals => {:new => true}, :object => f
|
25
|
+
=submit_tag "Create", :class => "asset_create_button"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#asset_preview
|
2
|
+
=render content_partial(@content, :preview)
|
3
|
+
|
4
|
+
=content_for :h1 do
|
5
|
+
#type
|
6
|
+
=@content.media_type.capitalize
|
7
|
+
#name
|
8
|
+
=@content.asset.name
|
9
|
+
-if user_signed_in?
|
10
|
+
%span.action
|
11
|
+
=link_to image_tag("fassets_core/edit.png"), edit_asset_content_path(@content)
|
12
|
+
=render :partial => "assets/put_on_tray", :locals => {:current_user => current_user}
|
13
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
-unless @filter.empty?
|
2
|
+
#filter
|
3
|
+
%ul
|
4
|
+
-Label.in(@filter).each do |filter_item|
|
5
|
+
%li.item
|
6
|
+
%strong{:class => filter_item.facet.color}="#{filter_item.facet.caption}: #{filter_item.caption}"
|
7
|
+
=link_to "drop", "/catalog_box",
|
8
|
+
:id => @catalog,
|
9
|
+
:filter => @filter.to_query_exclude(filter_item.id),
|
10
|
+
:class => "facet_drop_link"
|
11
|
+
%li{:style => "clear:both"}=link_to "clear filter", "/catalog_box?id="+@catalog.id.to_s, :class => "clear_filter"
|
12
|
+
%ul#assets
|
13
|
+
=render :partial => "shared/asset", :collection => @assets, :locals => {:tp => nil}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
%li.facet{:id => "facet_"+facet.id.to_s }
|
2
|
+
.caption{:class => facet.color}
|
3
|
+
=facet.caption
|
4
|
+
-if user_signed_in?
|
5
|
+
=link_to image_tag("fassets_core/edit.png"), edit_catalog_facet_path(@catalog, facet)
|
6
|
+
%span.handle=image_tag("fassets_core/drag.png")
|
7
|
+
%ul{:class => "#{facet.color}_lite"}
|
8
|
+
-facet.labels.each do |label|
|
9
|
+
-if @counts[label.id] && !@filter.include?(label.id)
|
10
|
+
%li.label
|
11
|
+
=link_to label.caption, catalog_path(@catalog, :filter => @filter.to_query_include(label.id))
|
12
|
+
-if @counts[label.id] > 1
|
13
|
+
%span.count="#{@counts[label.id]}×"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
=content_for :h1 do
|
2
|
+
Fassets Development
|
3
|
+
#sidebar.fassets_core
|
4
|
+
-if user_signed_in?
|
5
|
+
.collapsible
|
6
|
+
%h2.title New Catalog
|
7
|
+
=form_for Catalog.new, :url => catalogs_path do |f|
|
8
|
+
=render :partial => "form", :object => f
|
9
|
+
=submit_tag "Create"
|
10
|
+
%ul.collection
|
11
|
+
-Catalog.all.each do |catalog|
|
12
|
+
%li
|
13
|
+
=link_to(catalog.title, catalog_path(catalog))
|
14
|
+
.content=catalog.info
|
15
|
+
|
16
|
+
#main
|
17
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
=content_for :h1 do
|
2
|
+
#type Catalog
|
3
|
+
#name
|
4
|
+
=@catalog.title
|
5
|
+
-if user_signed_in?
|
6
|
+
%span.action
|
7
|
+
=link_to image_tag("fassets_core/edit.png"), edit_catalog_path(@catalog)
|
8
|
+
#sidebar.fassets_core
|
9
|
+
-if user_signed_in?
|
10
|
+
.collapsible
|
11
|
+
%h2.title Add Facet
|
12
|
+
=form_for [@catalog, Facet.new], :url => catalog_facets_path(@catalog, Facet.new) do |f|
|
13
|
+
=render :partial => "facets/form", :object => f
|
14
|
+
=submit_tag "Create"
|
15
|
+
%ol#facets{"data-update-url" => sort_catalog_facets_url(@catalog)}
|
16
|
+
=render :partial => "facet", :collection => @catalog.facets.all(:order => "position ASC")
|
17
|
+
|
18
|
+
#catalog_main
|
19
|
+
-if @filter.empty?
|
20
|
+
%h2 Assets
|
21
|
+
-else
|
22
|
+
%h2
|
23
|
+
Filtered Assets
|
24
|
+
#filter
|
25
|
+
%ul
|
26
|
+
=render :partial => "filter_item", :collection => Label.in(@filter)
|
27
|
+
%li{:style => "clear:both"}=link_to "clear filter", catalog_path(@catalog), :class => "icon remove"
|
28
|
+
%ul#assets
|
29
|
+
=render :partial => "shared/asset", :collection => @assets, :locals => {:tp => nil}
|
30
|
+
|