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
@@ -0,0 +1,99 @@
|
|
1
|
+
class CatalogsController < FassetsCore::ApplicationController
|
2
|
+
before_filter :authenticate_user!, :except => [:index, :show]
|
3
|
+
|
4
|
+
before_filter :find_catalog, :except => [:index, :new, :create, :add_asset, :catalog_box]
|
5
|
+
def index
|
6
|
+
@catalogs = Catalog.all
|
7
|
+
end
|
8
|
+
def show
|
9
|
+
@filter = LabelFilter.new(params[:filter])
|
10
|
+
@assets = @catalog.assets.filter(@filter)
|
11
|
+
@counts = 0
|
12
|
+
logger.debug "Flash:"+flash.to_s
|
13
|
+
end
|
14
|
+
def new
|
15
|
+
@catalog = Catalog.new
|
16
|
+
end
|
17
|
+
def create
|
18
|
+
@catalog = Catalog.new(params[:catalog])
|
19
|
+
if @catalog.save
|
20
|
+
create_type_facet()
|
21
|
+
flash[:notice] = "Catalog was successfully created."
|
22
|
+
redirect_to catalogs_path
|
23
|
+
else
|
24
|
+
if params[:catalog][:title].blank?
|
25
|
+
flash[:error] = "Catalog could not be created! Title cannot be empty!"
|
26
|
+
else
|
27
|
+
flash[:error] = "Catalog could not be created!"
|
28
|
+
end
|
29
|
+
render :template => 'catalogs/index'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
def edit
|
33
|
+
@catalog = Catalog.find(params[:id])
|
34
|
+
end
|
35
|
+
def update
|
36
|
+
if params[:catalog][:title].blank?
|
37
|
+
flash[:error] = "Catalog could not be updated! Title cannot be empty!"
|
38
|
+
redirect_to :back
|
39
|
+
return
|
40
|
+
end
|
41
|
+
if @catalog.update_attributes(params[:catalog])
|
42
|
+
redirect_to catalog_path(@catalog)
|
43
|
+
else
|
44
|
+
render :action => 'edit'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
def destroy
|
48
|
+
@catalog.destroy
|
49
|
+
flash[:notice] = "Catalog was successfully destroyed."
|
50
|
+
redirect_to root_url
|
51
|
+
end
|
52
|
+
def add_asset
|
53
|
+
@catalog = Catalog.find(params[:catalog_id])
|
54
|
+
if Classification.where(:catalog_id => params[:catalog_id], :asset_id => params[:asset_id]).exists?
|
55
|
+
flash[:error] = "Asset already in catalog!"
|
56
|
+
redirect_to :back
|
57
|
+
return
|
58
|
+
end
|
59
|
+
classification = Classification.new(:catalog_id => params[:catalog_id], :asset_id => params[:asset_id]);
|
60
|
+
if classification.save
|
61
|
+
flash[:notice] = "Asset successfully added to catalog"
|
62
|
+
else
|
63
|
+
flash[:error] = "Could not add asset to catalog"
|
64
|
+
end
|
65
|
+
redirect_to catalog_path(@catalog)
|
66
|
+
end
|
67
|
+
def catalog_box
|
68
|
+
if params[:id]
|
69
|
+
@catalog = Catalog.find(params[:id])
|
70
|
+
else
|
71
|
+
@catalog = Catalog.first
|
72
|
+
end
|
73
|
+
@filter = LabelFilter.new(params[:filter])
|
74
|
+
@assets = @catalog.assets.filter(@filter)
|
75
|
+
@counts = 0
|
76
|
+
render :template => "catalogs/box", :layout => false, :locals => {:selected_catalog => @catalog.id}
|
77
|
+
end
|
78
|
+
def box_content
|
79
|
+
@filter = LabelFilter.new(params[:filter])
|
80
|
+
@assets = @catalog.assets.filter(@filter)
|
81
|
+
@counts = 0
|
82
|
+
render :partial => "box_content"
|
83
|
+
end
|
84
|
+
def box_facet
|
85
|
+
@filter = LabelFilter.new(params[:filter])
|
86
|
+
@counts = 0
|
87
|
+
render :partial => "box_facet", :collection => @catalog.facets, :as => :facet
|
88
|
+
end
|
89
|
+
protected
|
90
|
+
def create_type_facet
|
91
|
+
facet = Facet.new(:caption => "Content Type", :color => "orange", :label_order => "value ASC, caption ASC")
|
92
|
+
facet.catalog_id = @catalog.id
|
93
|
+
facet.save
|
94
|
+
end
|
95
|
+
def find_catalog
|
96
|
+
@catalog = Catalog.find(params[:id])
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class ClassificationsController < FassetsCore::ApplicationController
|
2
|
+
before_filter :authenticate_user!
|
3
|
+
before_filter :find_classification, :only => [:update, :destroy]
|
4
|
+
|
5
|
+
respond_to :html, :js
|
6
|
+
|
7
|
+
def create
|
8
|
+
if params[:asset_id]
|
9
|
+
@classification = Classification.new(:asset_id => params[:asset_id],:catalog_id => params[:catalog_id])
|
10
|
+
@classification.save
|
11
|
+
create_content_labeling(params[:asset_id],params[:catalog_id])
|
12
|
+
else
|
13
|
+
classification = Classification.new(params[:classification])
|
14
|
+
classification.save
|
15
|
+
end
|
16
|
+
render :nothing => true
|
17
|
+
end
|
18
|
+
def destroy
|
19
|
+
@classification.destroy
|
20
|
+
render :nothing => true
|
21
|
+
end
|
22
|
+
def update
|
23
|
+
if params[:commit] == "Drop"
|
24
|
+
@classification.destroy()
|
25
|
+
return
|
26
|
+
end
|
27
|
+
@classification.label_ids = params[:labels]
|
28
|
+
flash[:notice] = "Updated Classification"
|
29
|
+
respond_with do |format|
|
30
|
+
format.js
|
31
|
+
format.html {}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
def create_content_labeling(asset_id,catalog_id)
|
37
|
+
asset = Asset.find(asset_id)
|
38
|
+
content_facet = Facet.where(:catalog_id => catalog_id, :caption => "Content Type").first
|
39
|
+
unless content_facet
|
40
|
+
content_facet = Facet.create(:caption => "Content Type", :color => "orange", :label_order => "value ASC, caption ASC", :catalog_id => catalog_id)
|
41
|
+
end
|
42
|
+
media_type = asset.content.media_type.capitalize
|
43
|
+
label = Label.where(:facet_id => content_facet.id, :caption => media_type.to_s).first
|
44
|
+
unless label
|
45
|
+
label = Label.new(:facet_id => content_facet.id, :caption => media_type.to_s)
|
46
|
+
label.save
|
47
|
+
end
|
48
|
+
labeling = Labeling.new(:classification_id => @classification.id, :label_id => label.id)
|
49
|
+
labeling.save
|
50
|
+
end
|
51
|
+
|
52
|
+
def find_classification
|
53
|
+
@classification = Classification.find(params[:id])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class FacetsController < FassetsCore::ApplicationController
|
2
|
+
before_filter :authenticate_user!
|
3
|
+
before_filter :find_catalog
|
4
|
+
|
5
|
+
def new
|
6
|
+
end
|
7
|
+
def create
|
8
|
+
@facet = Facet.new(params[:facet])
|
9
|
+
@facet.catalog_id = @catalog.id
|
10
|
+
if @facet.save
|
11
|
+
flash[:notice] = "Facet was successfully created."
|
12
|
+
redirect_to edit_catalog_facet_path(@catalog, @facet)
|
13
|
+
else
|
14
|
+
if params[:facet][:caption].blank?
|
15
|
+
flash[:error] = "Facet could not be created! Caption cannot be empty!"
|
16
|
+
else
|
17
|
+
flash[:error] = "Facet could not be created!"
|
18
|
+
end
|
19
|
+
redirect_to :back
|
20
|
+
end
|
21
|
+
end
|
22
|
+
def edit
|
23
|
+
@facet = @catalog.facets.find(params[:id])
|
24
|
+
end
|
25
|
+
def update
|
26
|
+
if params[:facet][:caption].blank?
|
27
|
+
flash[:error] = "Facet could not be updated! Caption cannot be empty"
|
28
|
+
redirect_to :back
|
29
|
+
return
|
30
|
+
end
|
31
|
+
@facet = @catalog.facets.find(params[:id])
|
32
|
+
if @facet.update_attributes(params[:facet])
|
33
|
+
flash[:notice] = "Facet has been updated."
|
34
|
+
redirect_to edit_catalog_facet_path(@catalog, @facet)
|
35
|
+
else
|
36
|
+
render :action => 'edit'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
def destroy
|
40
|
+
@catalog = @catalog.facets.find(params[:id])
|
41
|
+
@catalog.destroy
|
42
|
+
flash[:notice] = "Facet was successfully destroyed."
|
43
|
+
redirect_to catalog_path(@catalog)
|
44
|
+
end
|
45
|
+
def sort
|
46
|
+
@facetsInScope = Facet.where("catalog_id = ?", @catalog.id)
|
47
|
+
params[:facet].each_with_index do |id, index|
|
48
|
+
@facetsInScope.update(id, :position => index)
|
49
|
+
end
|
50
|
+
render :nothing => true
|
51
|
+
end
|
52
|
+
protected
|
53
|
+
def find_catalog
|
54
|
+
@catalog = Catalog.find(params[:catalog_id])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class LabelsController < FassetsCore::ApplicationController
|
2
|
+
before_filter :authenticate_user!
|
3
|
+
before_filter :find_label, :except => [:create, :sort]
|
4
|
+
def create
|
5
|
+
@label = Label.new(params[:label])
|
6
|
+
@label.facet_id = params[:facet_id]
|
7
|
+
if @label.save
|
8
|
+
flash[:notice] = "Label was successfully created."
|
9
|
+
redirect_to edit_catalog_facet_path(params[:catalog_id], params[:facet_id])
|
10
|
+
else
|
11
|
+
if params[:label][:caption].blank?
|
12
|
+
flash[:error] = "Label could not be created! Caption cannot be empty!"
|
13
|
+
else
|
14
|
+
flash[:error] = "Label could not be created!"
|
15
|
+
end
|
16
|
+
redirect_to :back
|
17
|
+
end
|
18
|
+
end
|
19
|
+
def update
|
20
|
+
if params[:label][:caption].blank?
|
21
|
+
flash[:error] = "Label could not be updated! Caption cannot be empty!"
|
22
|
+
redirect_to :back
|
23
|
+
return
|
24
|
+
end
|
25
|
+
@label.update_attributes(params[:label])
|
26
|
+
flash[:notice] = "Label was successfully updated."
|
27
|
+
redirect_to edit_catalog_facet_path(params[:catalog_id], params[:facet_id])
|
28
|
+
end
|
29
|
+
def sort
|
30
|
+
params[:label].each_with_index do |id, position|
|
31
|
+
Label.update(id, :position => position+1)
|
32
|
+
end
|
33
|
+
respond_to do |format|
|
34
|
+
format.js {render :nothing => true}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
def destroy
|
38
|
+
@label.destroy
|
39
|
+
@facet = @label.facet
|
40
|
+
@catalog = @facet.catalog
|
41
|
+
@label = nil
|
42
|
+
|
43
|
+
flash[:notice] = "Label removed."
|
44
|
+
respond_to do |format|
|
45
|
+
format.js { }
|
46
|
+
format.html { redirect_to :back }
|
47
|
+
end
|
48
|
+
end
|
49
|
+
protected
|
50
|
+
def find_label
|
51
|
+
@label = Label.find(params[:id])
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
class TrayPositionsController < FassetsCore::ApplicationController
|
2
|
+
before_filter :authenticate_user!
|
3
|
+
def create
|
4
|
+
if current_user.tray_positions.maximum(:position)
|
5
|
+
params[:tray_position][:position] = current_user.tray_positions.maximum(:position)+1
|
6
|
+
else
|
7
|
+
params[:tray_position][:position] = 1
|
8
|
+
end
|
9
|
+
tp = TrayPosition.new(params[:tray_position])
|
10
|
+
tp.clipboard_type.capitalize! if tp.clipboard_type
|
11
|
+
tp.save
|
12
|
+
render :nothing => true
|
13
|
+
#redirect_to :back
|
14
|
+
end
|
15
|
+
def index
|
16
|
+
render :partial => "shared/tray"
|
17
|
+
end
|
18
|
+
def destroy
|
19
|
+
tp = TrayPosition.find(params[:id])
|
20
|
+
tp.destroy()
|
21
|
+
render :nothing => true
|
22
|
+
#redirect_to :back
|
23
|
+
end
|
24
|
+
def replace
|
25
|
+
respond_to do |format|
|
26
|
+
if params[:del]
|
27
|
+
format.html do
|
28
|
+
current_user.tray_positions.find(params[:del]).each do |tp|
|
29
|
+
# if !tp.clipboard_type && (tp.asset.classifications_count || 0) == 0
|
30
|
+
# tp.asset.content.destroy
|
31
|
+
# else
|
32
|
+
# tp.destroy
|
33
|
+
# end
|
34
|
+
tp.destroy
|
35
|
+
end
|
36
|
+
flash[:notice] = "Tray has been updated!"
|
37
|
+
redirect_to :back
|
38
|
+
end
|
39
|
+
end
|
40
|
+
if params[:tp]
|
41
|
+
format.json do
|
42
|
+
new_tp = nil
|
43
|
+
params[:tp].each_with_index do |id, position|
|
44
|
+
if id == "0"
|
45
|
+
new_tp = TrayPosition.new(:user_id => current_user.id, :position => position+1)
|
46
|
+
if params[:add_type] == 'asset'
|
47
|
+
new_tp.asset_id = params[:add_id]
|
48
|
+
else
|
49
|
+
new_tp.clipboard_id = params[:add_id]
|
50
|
+
new_tp.clipboard_type = params[:add_type].capitalize
|
51
|
+
end
|
52
|
+
new_tp.save
|
53
|
+
else
|
54
|
+
TrayPosition.update(id, :position => position+1)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
if new_tp
|
58
|
+
render :json => new_tp.to_json(:include => :clipboard)
|
59
|
+
else
|
60
|
+
render :json => {}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
if params["asset_id"] and params["asset_id"] != "undefined"
|
65
|
+
unless TrayPosition.where(:user_id => current_user.id, :asset_id => params["asset_id"]).exists?
|
66
|
+
if current_user.tray_positions.maximum(:position)
|
67
|
+
position = current_user.tray_positions.maximum(:position)+1
|
68
|
+
else
|
69
|
+
position = 1
|
70
|
+
end
|
71
|
+
new_tp = TrayPosition.new(:user_id => current_user.id, :asset_id => params["asset_id"],:position => position)
|
72
|
+
new_tp.save
|
73
|
+
end
|
74
|
+
end
|
75
|
+
format.html do
|
76
|
+
#redirect_to :back
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module AssetsHelper
|
2
|
+
def content_partial(content, partial)
|
3
|
+
content.class.to_s.underscore.pluralize + "/" + content.media_type.to_s.underscore + "_" + partial.to_s
|
4
|
+
end
|
5
|
+
|
6
|
+
# construct the path for the assets content
|
7
|
+
def asset_content_path(content)
|
8
|
+
begin
|
9
|
+
return url_for content
|
10
|
+
rescue NoMethodError
|
11
|
+
# it’s fine, if this fails this means, the engine should know about the url
|
12
|
+
end
|
13
|
+
engine = content.class.to_s.split("::").first + "::Engine"
|
14
|
+
send(engine.constantize.engine_name).url_for content
|
15
|
+
end
|
16
|
+
def edit_asset_content_path(content)
|
17
|
+
asset_content_path(content) + "/edit"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module FassetsCore
|
2
|
+
module ApplicationHelper
|
3
|
+
def tree_ol(acts_as_tree_set, init=true, &block)
|
4
|
+
if acts_as_tree_set.size > 0
|
5
|
+
if init
|
6
|
+
ret = '<ol class="sortable_frames">'
|
7
|
+
else
|
8
|
+
ret = '<ol>'
|
9
|
+
end
|
10
|
+
acts_as_tree_set.collect do |item|
|
11
|
+
#next if item.parent_id && init
|
12
|
+
ret += '<li id="frame_'+item.id.to_s+'" class="frame"><div>'
|
13
|
+
ret += yield item
|
14
|
+
ret += '</div>'
|
15
|
+
ret += tree_ol(item.children, false, &block) if item.children.size > 0
|
16
|
+
ret += '</li>'
|
17
|
+
end
|
18
|
+
ret += '</ol>'
|
19
|
+
end
|
20
|
+
unless ret == nil
|
21
|
+
ret.html_safe
|
22
|
+
end
|
23
|
+
end
|
24
|
+
def menutree_ol(acts_as_tree_set, init=true, &block)
|
25
|
+
if acts_as_tree_set.size > 0
|
26
|
+
if init
|
27
|
+
ret = '<ol class="frame_menu">'
|
28
|
+
else
|
29
|
+
ret = '<ol>'
|
30
|
+
end
|
31
|
+
number = 1
|
32
|
+
acts_as_tree_set.collect do |item|
|
33
|
+
#next if item.parent_id && init
|
34
|
+
ret += '<li id="'+item.position.to_s+'">'
|
35
|
+
ret += yield item
|
36
|
+
ret += menutree_ol(item.children, false, &block) if item.children.size > 0
|
37
|
+
ret += '</li>'
|
38
|
+
number += 1
|
39
|
+
end
|
40
|
+
ret += '</ol>'
|
41
|
+
end
|
42
|
+
unless ret == nil
|
43
|
+
ret.html_safe
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|