mix-rails-albums 0.12.1 → 0.12.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/admix/photos.js.erb +4 -17
- data/app/assets/javascripts/{albums.js → application.js} +0 -0
- data/app/assets/javascripts/backbone/application.js.coffee +12 -0
- data/app/assets/javascripts/backbone/models/photo.js.coffee +39 -0
- data/app/assets/javascripts/backbone/routers/photos_router.js.coffee +36 -0
- data/app/assets/javascripts/backbone/templates/photos/edit.jst.ejs +20 -0
- data/app/assets/javascripts/backbone/templates/photos/index.jst.ejs +15 -0
- data/app/assets/javascripts/backbone/templates/photos/modal.hamlc.erb +14 -0
- data/app/assets/javascripts/backbone/templates/photos/new.jst.ejs +20 -0
- data/app/assets/javascripts/backbone/templates/photos/photo.jst.ejs +6 -0
- data/app/assets/javascripts/backbone/templates/photos/show.jst.ejs +12 -0
- data/app/assets/javascripts/backbone/templates/photos/thumbnail.hamlc.erb +16 -0
- data/app/assets/javascripts/backbone/templates/photos/upload_index.hamlc.erb +1 -0
- data/app/assets/javascripts/backbone/views/photos/edit_view.js.coffee +24 -0
- data/app/assets/javascripts/backbone/views/photos/index_view.js.coffee +20 -0
- data/app/assets/javascripts/backbone/views/photos/new_view.js.coffee +37 -0
- data/app/assets/javascripts/backbone/views/photos/photo_view.js.coffee +19 -0
- data/app/assets/javascripts/backbone/views/photos/show_view.js.coffee +8 -0
- data/app/assets/javascripts/backbone/views/photos/thumbnail_view.js.coffee +30 -0
- data/app/assets/javascripts/backbone/views/photos/upload_index_view.js.coffee +22 -0
- data/app/assets/javascripts/collections/filelist.js +1 -0
- data/app/assets/javascripts/models/fileitem.js +3 -0
- data/app/assets/javascripts/photos/upload.js.coffee.erb +9 -0
- data/app/assets/javascripts/routers/photo_router.js.coffee.erb +7 -0
- data/app/assets/javascripts/templates/photo_modal_edit.hamlc.erb +14 -0
- data/app/assets/javascripts/templates/photo_view.hamlc.erb +1 -1
- data/app/assets/javascripts/views/filelistview.js +2 -0
- data/app/assets/javascripts/views/fileview.js +6 -1
- data/app/assets/javascripts/views/photo_modal_view.js.coffee +25 -0
- data/app/models/photo.rb +2 -2
- data/app/views/admix/photos/_upload.html.haml +2 -2
- data/config/routes.rb +5 -1
- data/lib/mix-rails-albums.rb +1 -1
- data/lib/mix-rails-albums/version.rb +1 -1
- metadata +72 -52
- data/app/assets/javascripts/colorbox/jquery.colorbox-min.js +0 -4
- data/app/assets/javascripts/photo_uploader.coffee +0 -2
@@ -1,6 +1,4 @@
|
|
1
1
|
//= require hamlcoffee
|
2
|
-
//= require ../photo_uploader
|
3
|
-
//
|
4
2
|
//= require_tree ../models
|
5
3
|
//= require_tree ../collections
|
6
4
|
//= require_tree ../views
|
@@ -9,25 +7,14 @@
|
|
9
7
|
|
10
8
|
<% url = Rails.application.routes.url_helpers %>
|
11
9
|
|
12
|
-
|
13
|
-
_.extend(Backbone.Model.prototype, {
|
14
|
-
set: function(attrs, options) {
|
15
|
-
if ('_id' in attrs) { this.id = attrs._id; }
|
16
|
-
oldSet.apply(this, [attrs, options]);
|
17
|
-
return this;
|
18
|
-
}
|
19
|
-
});
|
10
|
+
new PhotoRouter();
|
20
11
|
|
12
|
+
jQuery(function() {
|
21
13
|
|
22
|
-
|
23
|
-
|
24
|
-
var fileZip, fileZipView;
|
25
|
-
|
26
|
-
|
14
|
+
var fileZip, fileZipView, fileListView;
|
27
15
|
var fileList = new FileList();
|
28
16
|
fileList.url = $("#files").data('url');
|
29
|
-
|
30
|
-
|
17
|
+
|
31
18
|
jQuery("#uploader").change(function(el) {
|
32
19
|
|
33
20
|
var files = el.currentTarget.files;
|
File without changes
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class Application.Models.Photo extends Backbone.Model
|
2
|
+
paramRoot: 'photo'
|
3
|
+
idAttribute: '_id'
|
4
|
+
defaults:
|
5
|
+
image: null
|
6
|
+
description: null
|
7
|
+
progress: 0
|
8
|
+
|
9
|
+
initialize: ->
|
10
|
+
@on 'add', @onAdd, @
|
11
|
+
|
12
|
+
onAdd: ->
|
13
|
+
xhr = new XMLHttpRequest()
|
14
|
+
xhr.open "POST", @url
|
15
|
+
datas = new FormData()
|
16
|
+
datas.append "image", @get("image")
|
17
|
+
xhr.upload.addEventListener "progress", (e) =>
|
18
|
+
if e.lengthComputable
|
19
|
+
currentState = (e.loaded / e.total) * 100
|
20
|
+
@set progress: currentState
|
21
|
+
|
22
|
+
xhr.onreadystatechange = (e) =>
|
23
|
+
if e.currentTarget.readyState is 4
|
24
|
+
@set progress: 100
|
25
|
+
@trigger "uploadCompleted"
|
26
|
+
if xhr.responseText
|
27
|
+
responseObject = JSON.parse(xhr.responseText)
|
28
|
+
@set responseObject
|
29
|
+
else
|
30
|
+
console.log "Não foi possível enviar o arquivo"
|
31
|
+
|
32
|
+
|
33
|
+
# Start send the file.
|
34
|
+
xhr.send datas
|
35
|
+
|
36
|
+
class Application.Collections.PhotosCollection extends Backbone.Collection
|
37
|
+
model: Application.Models.Photo
|
38
|
+
url: '/photos'
|
39
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class Application.Routers.PhotosRouter extends Backbone.Router
|
2
|
+
initialize: (options) ->
|
3
|
+
@photos = new Application.Collections.PhotosCollection()
|
4
|
+
@photos.reset options.photos
|
5
|
+
|
6
|
+
routes:
|
7
|
+
"new" : "newPhoto"
|
8
|
+
"index" : "index"
|
9
|
+
"upload_index" : "upload_index"
|
10
|
+
":id/edit" : "edit"
|
11
|
+
":id" : "show"
|
12
|
+
".*" : "index"
|
13
|
+
|
14
|
+
newPhoto: ->
|
15
|
+
@view = new Application.Views.Photos.NewView(collection: @photos)
|
16
|
+
$("#photos").html(@view.render().el)
|
17
|
+
|
18
|
+
index: ->
|
19
|
+
@view = new Application.Views.Photos.IndexView(photos: @photos)
|
20
|
+
$("#photos").html(@view.render().el)
|
21
|
+
|
22
|
+
upload_index: ->
|
23
|
+
@view = new Application.Views.Photos.UploadIndexView(photos: @photos)
|
24
|
+
$("#photos").html(@view.render().el)
|
25
|
+
|
26
|
+
show: (id) ->
|
27
|
+
photo = @photos.get(id)
|
28
|
+
|
29
|
+
@view = new Application.Views.Photos.ShowView(model: photo)
|
30
|
+
$("#photos").html(@view.render().el)
|
31
|
+
|
32
|
+
edit: (id) ->
|
33
|
+
photo = @photos.get(id)
|
34
|
+
|
35
|
+
@view = new Application.Views.Photos.EditView(model: photo)
|
36
|
+
$("#photos").html(@view.render().el)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<h1>Edit photo</h1>
|
2
|
+
|
3
|
+
<form id="edit-photo" name="photo">
|
4
|
+
<div class="field">
|
5
|
+
<label for="image"> image:</label>
|
6
|
+
<input type="text" name="image" id="image" value="<%= image %>" >
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="field">
|
10
|
+
<label for="description"> description:</label>
|
11
|
+
<input type="text" name="description" id="description" value="<%= description %>" >
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<input type="submit" value="Update Photo" />
|
16
|
+
</div>
|
17
|
+
|
18
|
+
</form>
|
19
|
+
|
20
|
+
<a href="#/index">Back</a>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.modal.hide.fade.admix-photo-modal{id: "photo-modal-#{@id}"}
|
2
|
+
.modal-header
|
3
|
+
%button.close{"aria-hidden" => "true", "data-dismiss" => "modal", :type => "button"} ×
|
4
|
+
%h3 Detalhes da foto
|
5
|
+
.modal-body
|
6
|
+
.edit-area.pull-right
|
7
|
+
%textarea.span5{id: "input_photo_description_#{@id}",placeholder: 'Adicione uma descrição para esta foto.'}
|
8
|
+
#{@description}
|
9
|
+
.photo
|
10
|
+
%img{src: @image.medium.url}
|
11
|
+
%p One fine body…
|
12
|
+
.modal-footer
|
13
|
+
%a.btn{href:"#", "data-dismiss": "modal"} Cancelar
|
14
|
+
%a.btn.btn-primary.save{:href => "#"} Salvar mudanças
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<h1>New photo</h1>
|
2
|
+
|
3
|
+
<form id="new-photo" name="photo">
|
4
|
+
<div class="field">
|
5
|
+
<label for="image"> image:</label>
|
6
|
+
<input type="text" name="image" id="image" value="<%= image %>" >
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="field">
|
10
|
+
<label for="description"> description:</label>
|
11
|
+
<input type="text" name="description" id="description" value="<%= description %>" >
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<input type="submit" value="Create Photo" />
|
16
|
+
</div>
|
17
|
+
|
18
|
+
</form>
|
19
|
+
|
20
|
+
<a href="#/index">Back</a>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
.thumbnail.file-item
|
2
|
+
.file-title
|
3
|
+
= @title
|
4
|
+
%a.link-popover{"data-content" => "<i class=icon-edit></i> Edit"}
|
5
|
+
.loading-file
|
6
|
+
- if @image.url
|
7
|
+
%a.photo-link{href: "#"}
|
8
|
+
%img{src: ROOT_PATH + @image.thumb.url}
|
9
|
+
- else
|
10
|
+
%img{src: "http://placehold.it/130x90&text=Carregando"}
|
11
|
+
-if (@progress != null && @progress < 100)
|
12
|
+
%div{class: (@progress < 100) ? 'progress progress-striped active' : 'progress'}
|
13
|
+
.bar{style: "width:#{@progress}%;"}
|
14
|
+
.caption
|
15
|
+
%a.file-action.delete{href: "#"}
|
16
|
+
<%= image_tag "albums/delete.png" %>
|
@@ -0,0 +1 @@
|
|
1
|
+
.photos-container
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Application.Views.Photos ||= {}
|
2
|
+
|
3
|
+
class Application.Views.Photos.EditView extends Backbone.View
|
4
|
+
template: JST["backbone/templates/photos/edit"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"submit #edit-photo": "update"
|
8
|
+
|
9
|
+
update: (e) ->
|
10
|
+
e.preventDefault()
|
11
|
+
e.stopPropagation()
|
12
|
+
|
13
|
+
@model.save(null,
|
14
|
+
success: (photo) =>
|
15
|
+
@model = photo
|
16
|
+
window.location.hash = "/#{@model.id}"
|
17
|
+
)
|
18
|
+
|
19
|
+
render: ->
|
20
|
+
@$el.html(@template(@model.toJSON() ))
|
21
|
+
|
22
|
+
this.$("form").backboneLink(@model)
|
23
|
+
|
24
|
+
return this
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Application.Views.Photos ||= {}
|
2
|
+
|
3
|
+
class Application.Views.Photos.IndexView extends Backbone.View
|
4
|
+
template: JST["backbone/templates/photos/index"]
|
5
|
+
|
6
|
+
initialize: () ->
|
7
|
+
@options.photos.bind('reset', @addAll)
|
8
|
+
|
9
|
+
addAll: () =>
|
10
|
+
@options.photos.each(@addOne)
|
11
|
+
|
12
|
+
addOne: (photo) =>
|
13
|
+
view = new Application.Views.Photos.PhotoView({model : photo})
|
14
|
+
@$("tbody").append(view.render().el)
|
15
|
+
|
16
|
+
render: =>
|
17
|
+
@$el.html(@template(photos: @options.photos.toJSON() ))
|
18
|
+
@addAll()
|
19
|
+
|
20
|
+
return this
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Application.Views.Photos ||= {}
|
2
|
+
|
3
|
+
class Application.Views.Photos.NewView extends Backbone.View
|
4
|
+
template: JST["backbone/templates/photos/new"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"submit #new-photo": "save"
|
8
|
+
|
9
|
+
constructor: (options) ->
|
10
|
+
super(options)
|
11
|
+
@model = new @collection.model()
|
12
|
+
|
13
|
+
@model.bind("change:errors", () =>
|
14
|
+
this.render()
|
15
|
+
)
|
16
|
+
|
17
|
+
save: (e) ->
|
18
|
+
e.preventDefault()
|
19
|
+
e.stopPropagation()
|
20
|
+
|
21
|
+
@model.unset("errors")
|
22
|
+
|
23
|
+
@collection.create(@model.toJSON(),
|
24
|
+
success: (photo) =>
|
25
|
+
@model = photo
|
26
|
+
window.location.hash = "/#{@model.id}"
|
27
|
+
|
28
|
+
error: (photo, jqXHR) =>
|
29
|
+
@model.set({errors: $.parseJSON(jqXHR.responseText)})
|
30
|
+
)
|
31
|
+
|
32
|
+
render: ->
|
33
|
+
@$el.html(@template(@model.toJSON() ))
|
34
|
+
|
35
|
+
this.$("form").backboneLink(@model)
|
36
|
+
|
37
|
+
return this
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Application.Views.Photos ||= {}
|
2
|
+
|
3
|
+
class Application.Views.Photos.PhotoView extends Backbone.View
|
4
|
+
template: JST["backbone/templates/photos/photo"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"click .destroy" : "destroy"
|
8
|
+
|
9
|
+
tagName: "tr"
|
10
|
+
|
11
|
+
destroy: () ->
|
12
|
+
@model.destroy()
|
13
|
+
this.remove()
|
14
|
+
|
15
|
+
return false
|
16
|
+
|
17
|
+
render: ->
|
18
|
+
@$el.html(@template(@model.toJSON() ))
|
19
|
+
return this
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Application.Views.Photos ||= {}
|
2
|
+
|
3
|
+
class Application.Views.Photos.PhotoView extends Backbone.View
|
4
|
+
template: JST["backbone/templates/photos/thumbnail"]
|
5
|
+
|
6
|
+
events:
|
7
|
+
"click .destroy" : "destroy"
|
8
|
+
"click .photo-link": "photo_link",
|
9
|
+
|
10
|
+
tagName: "li"
|
11
|
+
className: 'span2'
|
12
|
+
|
13
|
+
initialize: ->
|
14
|
+
@model.on "change", @render, this
|
15
|
+
@model.on "uploadCompleted", @removeProgressBar, this
|
16
|
+
|
17
|
+
removeProgressBar: ->
|
18
|
+
@$el.find(".progress").fadeOut() unless @$el is undefined
|
19
|
+
|
20
|
+
destroy: () ->
|
21
|
+
@model.destroy()
|
22
|
+
this.remove()
|
23
|
+
|
24
|
+
return false
|
25
|
+
|
26
|
+
photo_link: () ->
|
27
|
+
|
28
|
+
render: ->
|
29
|
+
@$el.html(@template(@model.toJSON() ))
|
30
|
+
return this
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Application.Views.Photos ||= {}
|
2
|
+
|
3
|
+
class Application.Views.Photos.UploadIndexView extends Backbone.View
|
4
|
+
template: JST["backbone/templates/photos/upload_index"]
|
5
|
+
tagName: 'ul'
|
6
|
+
className: 'thumbnails'
|
7
|
+
|
8
|
+
initialize: () ->
|
9
|
+
@options.photos.bind('reset', @addAll)
|
10
|
+
|
11
|
+
addAll: () =>
|
12
|
+
@options.photos.each(@addOne)
|
13
|
+
|
14
|
+
addOne: (photo) =>
|
15
|
+
view = new Application.Views.Photos.PhotoView({model : photo})
|
16
|
+
@$(".photos-container").append(view.render().el)
|
17
|
+
|
18
|
+
render: =>
|
19
|
+
@$el.html(@template(photos: @options.photos.toJSON() ))
|
20
|
+
@addAll()
|
21
|
+
|
22
|
+
return this
|
@@ -0,0 +1,14 @@
|
|
1
|
+
.modal.hide.fade.admix-photo-modal{id: "photo-modal-#{@id}"}
|
2
|
+
.modal-header
|
3
|
+
%button.close{"aria-hidden" => "true", "data-dismiss" => "modal", :type => "button"} ×
|
4
|
+
%h3 Detalhes da foto
|
5
|
+
.modal-body
|
6
|
+
.edit-area.pull-right
|
7
|
+
%textarea.span5{id: "input_photo_description_#{@id}",placeholder: 'Adicione uma descrição para esta foto.'}
|
8
|
+
#{@description}
|
9
|
+
.photo
|
10
|
+
%img{src: @image.medium.url}
|
11
|
+
%p One fine body…
|
12
|
+
.modal-footer
|
13
|
+
%a.btn{href:"#", "data-dismiss": "modal"} Cancelar
|
14
|
+
%a.btn.btn-primary.save{:href => "#"} Salvar mudanças
|
@@ -4,7 +4,7 @@
|
|
4
4
|
%a.link-popover{"data-content" => "<i class=icon-edit></i> Edit"}
|
5
5
|
.loading-file
|
6
6
|
- if @image.url
|
7
|
-
%a.
|
7
|
+
%a.photo-link{href: "#"}
|
8
8
|
%img{src: ROOT_PATH + @image.thumb.url}
|
9
9
|
- else
|
10
10
|
%img{src: "http://placehold.it/130x90&text=Carregando"}
|
@@ -9,7 +9,9 @@ var FileListView = Backbone.View.extend({
|
|
9
9
|
},
|
10
10
|
addOne: function(fileItem){
|
11
11
|
var fileView = new FileView({model: fileItem});
|
12
|
+
var photoModalView = new PhotoModalView({model: fileItem});
|
12
13
|
this.$el.append(fileView.render().el);
|
14
|
+
this.$el.append(photoModalView.render().el);
|
13
15
|
}
|
14
16
|
|
15
17
|
});
|
@@ -2,7 +2,8 @@ var FileView = Backbone.View.extend({
|
|
2
2
|
tagName: 'li',
|
3
3
|
className: 'span2',
|
4
4
|
events: {
|
5
|
-
"click .delete": "delete"
|
5
|
+
"click .delete": "delete",
|
6
|
+
"click .photo-link": "photo_link",
|
6
7
|
},
|
7
8
|
initialize: function(){
|
8
9
|
this.template = JST['photo_view']
|
@@ -30,5 +31,9 @@ var FileView = Backbone.View.extend({
|
|
30
31
|
}
|
31
32
|
});
|
32
33
|
this.$el.fadeOut();
|
34
|
+
},
|
35
|
+
photo_link: function(e) {
|
36
|
+
e.preventDefault();
|
37
|
+
Backbone.history.navigate(":photo_id/ajax_edit".replace(':photo_id', this.model.get('id')), {trigger: true});
|
33
38
|
}
|
34
39
|
});
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class window.PhotoModalView extends Backbone.View
|
2
|
+
tagName: "div"
|
3
|
+
#className: "span2"
|
4
|
+
events:
|
5
|
+
"click .save": "save_changes"
|
6
|
+
|
7
|
+
initialize: ->
|
8
|
+
@template = JST["photo_modal_edit"]
|
9
|
+
@model.on "change", @render, this
|
10
|
+
|
11
|
+
render: ->
|
12
|
+
data = _.defaults(@model.attributes,
|
13
|
+
progress: null
|
14
|
+
id: null
|
15
|
+
title: null
|
16
|
+
)
|
17
|
+
html = @template(@model.attributes)
|
18
|
+
$(@el).html html
|
19
|
+
this
|
20
|
+
|
21
|
+
save_changes: (e) ->
|
22
|
+
e.preventDefault()
|
23
|
+
description = $("#input_photo_description_#{@model.get('id')}").val()
|
24
|
+
@model.set(description: description)
|
25
|
+
@model.save()
|
data/app/models/photo.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
- content_for :javascripts do
|
2
|
-
= javascript_include_tag '
|
2
|
+
= javascript_include_tag 'photos/upload'
|
3
3
|
|
4
4
|
%h3 Upload de fotos
|
5
5
|
#upload-buttons{:style => "padding: 20px;"}
|
@@ -14,4 +14,4 @@
|
|
14
14
|
%a.btn.btn-primary.btn-upload{:onclick => "jQuery('#uploaderZip').click();"}= t('photos.btn.upload_zip')
|
15
15
|
|
16
16
|
#fileZip
|
17
|
-
%ul#
|
17
|
+
%ul#photos.thumbnails{'data-url' => admix_album_photos_path(defined?(parent) ? parent : resource)}
|
data/config/routes.rb
CHANGED
data/lib/mix-rails-albums.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mix-rails-albums
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -114,78 +114,98 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
-
- app/
|
118
|
-
- app/controllers/admix/albums_controller.rb
|
119
|
-
- app/controllers/admix/photos_controller.rb
|
120
|
-
- app/controllers/albums_controller.rb
|
121
|
-
- app/assets/stylesheets/skins/tango/next-horizontal.png
|
117
|
+
- app/assets/stylesheets/skins/tango/next-vertical.png
|
122
118
|
- app/assets/stylesheets/skins/tango/skin.css
|
119
|
+
- app/assets/stylesheets/skins/tango/next-horizontal.png
|
123
120
|
- app/assets/stylesheets/skins/tango/prev-vertical.png
|
124
|
-
- app/assets/stylesheets/skins/tango/next-vertical.png
|
125
121
|
- app/assets/stylesheets/skins/tango/credits.txt
|
126
122
|
- app/assets/stylesheets/skins/tango/prev-horizontal.png
|
127
|
-
- app/assets/stylesheets/skins/ie7/loading.gif
|
128
|
-
- app/assets/stylesheets/skins/ie7/prev-horizontal.gif
|
129
|
-
- app/assets/stylesheets/skins/ie7/skin.css
|
130
|
-
- app/assets/stylesheets/skins/ie7/loading_small.gif
|
131
|
-
- app/assets/stylesheets/skins/ie7/credits.txt
|
132
123
|
- app/assets/stylesheets/skins/ie7/loading-small.gif
|
124
|
+
- app/assets/stylesheets/skins/ie7/skin.css
|
133
125
|
- app/assets/stylesheets/skins/ie7/next-horizontal.gif
|
126
|
+
- app/assets/stylesheets/skins/ie7/credits.txt
|
127
|
+
- app/assets/stylesheets/skins/ie7/loading_small.gif
|
128
|
+
- app/assets/stylesheets/skins/ie7/loading.gif
|
129
|
+
- app/assets/stylesheets/skins/ie7/prev-horizontal.gif
|
134
130
|
- app/assets/stylesheets/colorbox/colorbox.css.scss
|
135
|
-
- app/assets/images/
|
136
|
-
- app/assets/images/
|
137
|
-
- app/assets/images/
|
138
|
-
- app/assets/images/
|
139
|
-
- app/assets/images/
|
140
|
-
- app/assets/images/colorbox/border.png
|
141
|
-
- app/assets/images/colorbox/loading.gif
|
142
|
-
- app/assets/images/colorbox/loading_background.png
|
143
|
-
- app/assets/images/colorbox/controls.png
|
131
|
+
- app/assets/images/colorbox/ie6/borderMiddleLeft.png
|
132
|
+
- app/assets/images/colorbox/ie6/borderTopRight.png
|
133
|
+
- app/assets/images/colorbox/ie6/borderBottomLeft.png
|
134
|
+
- app/assets/images/colorbox/ie6/borderTopLeft.png
|
135
|
+
- app/assets/images/colorbox/ie6/borderBottomCenter.png
|
144
136
|
- app/assets/images/colorbox/ie6/borderTopCenter.png
|
145
137
|
- app/assets/images/colorbox/ie6/borderMiddleRight.png
|
146
138
|
- app/assets/images/colorbox/ie6/borderBottomRight.png
|
147
|
-
- app/assets/images/colorbox/
|
148
|
-
- app/assets/images/colorbox/
|
149
|
-
- app/assets/images/colorbox/
|
150
|
-
- app/assets/images/colorbox/
|
151
|
-
- app/assets/images/colorbox/ie6/borderMiddleLeft.png
|
139
|
+
- app/assets/images/colorbox/border.png
|
140
|
+
- app/assets/images/colorbox/loading_background.png
|
141
|
+
- app/assets/images/colorbox/controls.png
|
142
|
+
- app/assets/images/colorbox/loading.gif
|
152
143
|
- app/assets/images/colorbox/overlay.png
|
144
|
+
- app/assets/images/albums/delete.png
|
145
|
+
- app/assets/images/albums/photos.png
|
146
|
+
- app/assets/images/albums/rotate_cw.png
|
147
|
+
- app/assets/images/albums/rotate_ccw.png
|
148
|
+
- app/assets/images/albums/crop.png
|
149
|
+
- app/assets/javascripts/application.js
|
150
|
+
- app/assets/javascripts/backbone/views/photos/upload_index_view.js.coffee
|
151
|
+
- app/assets/javascripts/backbone/views/photos/thumbnail_view.js.coffee
|
152
|
+
- app/assets/javascripts/backbone/views/photos/index_view.js.coffee
|
153
|
+
- app/assets/javascripts/backbone/views/photos/show_view.js.coffee
|
154
|
+
- app/assets/javascripts/backbone/views/photos/photo_view.js.coffee
|
155
|
+
- app/assets/javascripts/backbone/views/photos/new_view.js.coffee
|
156
|
+
- app/assets/javascripts/backbone/views/photos/edit_view.js.coffee
|
157
|
+
- app/assets/javascripts/backbone/models/photo.js.coffee
|
158
|
+
- app/assets/javascripts/backbone/templates/photos/index.jst.ejs
|
159
|
+
- app/assets/javascripts/backbone/templates/photos/show.jst.ejs
|
160
|
+
- app/assets/javascripts/backbone/templates/photos/edit.jst.ejs
|
161
|
+
- app/assets/javascripts/backbone/templates/photos/thumbnail.hamlc.erb
|
162
|
+
- app/assets/javascripts/backbone/templates/photos/photo.jst.ejs
|
163
|
+
- app/assets/javascripts/backbone/templates/photos/modal.hamlc.erb
|
164
|
+
- app/assets/javascripts/backbone/templates/photos/new.jst.ejs
|
165
|
+
- app/assets/javascripts/backbone/templates/photos/upload_index.hamlc.erb
|
166
|
+
- app/assets/javascripts/backbone/application.js.coffee
|
167
|
+
- app/assets/javascripts/backbone/routers/photos_router.js.coffee
|
153
168
|
- app/assets/javascripts/admix/photos.js.erb
|
154
|
-
- app/assets/javascripts/albums/jquery.jcarousel.min.js
|
155
|
-
- app/assets/javascripts/albums/show.js.coffee
|
156
|
-
- app/assets/javascripts/templates/photo_view.hamlc.erb
|
157
|
-
- app/assets/javascripts/collections/filelist.js
|
158
|
-
- app/assets/javascripts/colorbox/jquery.colorbox-min.js
|
159
|
-
- app/assets/javascripts/photo_uploader.coffee
|
160
|
-
- app/assets/javascripts/models/fileitem.js
|
161
|
-
- app/assets/javascripts/models/filezip.js
|
162
|
-
- app/assets/javascripts/albums.js
|
163
|
-
- app/assets/javascripts/views/filelistview.js
|
164
|
-
- app/assets/javascripts/views/filezipview.js
|
165
169
|
- app/assets/javascripts/views/fileview.js
|
166
|
-
- app/
|
167
|
-
- app/
|
168
|
-
- app/
|
169
|
-
- app/
|
170
|
-
- app/models/
|
171
|
-
- app/
|
172
|
-
- app/
|
173
|
-
- app/
|
170
|
+
- app/assets/javascripts/views/filezipview.js
|
171
|
+
- app/assets/javascripts/views/photo_modal_view.js.coffee
|
172
|
+
- app/assets/javascripts/views/filelistview.js
|
173
|
+
- app/assets/javascripts/photos/upload.js.coffee.erb
|
174
|
+
- app/assets/javascripts/models/filezip.js
|
175
|
+
- app/assets/javascripts/models/fileitem.js
|
176
|
+
- app/assets/javascripts/collections/filelist.js
|
177
|
+
- app/assets/javascripts/templates/photo_view.hamlc.erb
|
178
|
+
- app/assets/javascripts/templates/photo_modal_edit.hamlc.erb
|
179
|
+
- app/assets/javascripts/routers/photo_router.js.coffee.erb
|
180
|
+
- app/assets/javascripts/albums/show.js.coffee
|
181
|
+
- app/assets/javascripts/albums/jquery.jcarousel.min.js
|
174
182
|
- app/views/admix/photos/index.html.haml
|
175
183
|
- app/views/admix/photos/_upload.html.haml
|
184
|
+
- app/views/admix/albums/_form_fields.html.haml
|
185
|
+
- app/views/admix/albums/_table_actions.html.haml
|
186
|
+
- app/views/admix/albums/_show.html.haml
|
176
187
|
- app/views/albums/index.html.haml
|
177
188
|
- app/views/albums/show.html.haml
|
178
|
-
-
|
179
|
-
-
|
180
|
-
-
|
189
|
+
- app/controllers/albums_controller.rb
|
190
|
+
- app/controllers/admix/albums_controller.rb
|
191
|
+
- app/controllers/admix/photos_controller.rb
|
192
|
+
- app/models/album.rb
|
193
|
+
- app/models/admix/photos_datagrid.rb
|
194
|
+
- app/models/admix/albums_datagrid.rb
|
195
|
+
- app/models/photo.rb
|
196
|
+
- app/helpers/admix/albums_helper.rb
|
197
|
+
- app/uploaders/albums/image_uploader.rb
|
181
198
|
- config/initializers/carrierwave.rb
|
182
199
|
- config/initializers/albums.rb
|
183
200
|
- config/routes.rb
|
184
201
|
- config/application.rb
|
202
|
+
- config/locales/photos.pt-BR.yml
|
203
|
+
- config/locales/albums.pt-BR.yml
|
204
|
+
- config/locales/albums.en.yml
|
185
205
|
- lib/tasks/albums_tasks.rake
|
186
|
-
- lib/mix-rails-albums.rb
|
187
206
|
- lib/mix-rails-albums/version.rb
|
188
207
|
- lib/mix-rails-albums/engine.rb
|
208
|
+
- lib/mix-rails-albums.rb
|
189
209
|
- MIT-LICENSE
|
190
210
|
- Rakefile
|
191
211
|
- README.rdoc
|
@@ -203,7 +223,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
203
223
|
version: '0'
|
204
224
|
segments:
|
205
225
|
- 0
|
206
|
-
hash: -
|
226
|
+
hash: -52676259253557303
|
207
227
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
228
|
none: false
|
209
229
|
requirements:
|
@@ -212,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
232
|
version: '0'
|
213
233
|
segments:
|
214
234
|
- 0
|
215
|
-
hash: -
|
235
|
+
hash: -52676259253557303
|
216
236
|
requirements: []
|
217
237
|
rubyforge_project:
|
218
238
|
rubygems_version: 1.8.24
|
@@ -1,4 +0,0 @@
|
|
1
|
-
// ColorBox v1.3.20.2 - jQuery lightbox plugin
|
2
|
-
// (c) 2012 Jack Moore - jacklmoore.com
|
3
|
-
// License: http://www.opensource.org/licenses/mit-license.php
|
4
|
-
(function(a,b,c){function Z(c,d,e){var g=b.createElement(c);return d&&(g.id=f+d),e&&(g.style.cssText=e),a(g)}function $(a){var b=y.length,c=(Q+a)%b;return 0>c?b+c:c}function _(a,b){return Math.round((/%/.test(a)?("x"===b?z.width():z.height())/100:1)*parseInt(a,10))}function ab(a){return K.photo||/\.(gif|png|jp(e|g|eg)|bmp|ico)((#|\?).*)?$/i.test(a)}function bb(){var b,c=a.data(P,e);null==c?(K=a.extend({},d),console&&console.log&&console.log("Error: cboxElement missing settings object")):K=a.extend({},c);for(b in K)a.isFunction(K[b])&&"on"!==b.slice(0,2)&&(K[b]=K[b].call(P));K.rel=K.rel||P.rel||a(P).data("rel")||"nofollow",K.href=K.href||a(P).attr("href"),K.title=K.title||P.title,"string"==typeof K.href&&(K.href=a.trim(K.href))}function cb(b,c){a.event.trigger(b),c&&c.call(P)}function db(){var a,d,e,b=f+"Slideshow_",c="click."+f;K.slideshow&&y[1]?(d=function(){F.html(K.slideshowStop).unbind(c).bind(j,function(){(K.loop||y[Q+1])&&(a=setTimeout(W.next,K.slideshowSpeed))}).bind(i,function(){clearTimeout(a)}).one(c+" "+k,e),r.removeClass(b+"off").addClass(b+"on"),a=setTimeout(W.next,K.slideshowSpeed)},e=function(){clearTimeout(a),F.html(K.slideshowStart).unbind([j,i,k,c].join(" ")).one(c,function(){W.next(),d()}),r.removeClass(b+"on").addClass(b+"off")},K.slideshowAuto?d():e()):r.removeClass(b+"off "+b+"on")}function eb(b){U||(P=b,bb(),y=a(P),Q=0,"nofollow"!==K.rel&&(y=a("."+g).filter(function(){var c,b=a.data(this,e);return b&&(c=a(this).data("rel")||b.rel||this.rel),c===K.rel}),Q=y.index(P),-1===Q&&(y=y.add(P),Q=y.length-1)),S||(S=T=!0,r.show(),K.returnFocus&&a(P).blur().one(l,function(){a(this).focus()}),q.css({opacity:+K.opacity,cursor:K.overlayClose?"pointer":"auto"}).show(),K.w=_(K.initialWidth,"x"),K.h=_(K.initialHeight,"y"),W.position(),o&&z.bind("resize."+p+" scroll."+p,function(){q.css({width:z.width(),height:z.height(),top:z.scrollTop(),left:z.scrollLeft()})}).trigger("resize."+p),cb(h,K.onOpen),J.add(D).hide(),I.html(K.close).show()),W.load(!0))}function fb(){!r&&b.body&&(Y=!1,z=a(c),r=Z(X).attr({id:e,"class":n?f+(o?"IE6":"IE"):""}).hide(),q=Z(X,"Overlay",o?"position:absolute":"").hide(),C=Z(X,"LoadingOverlay").add(Z(X,"LoadingGraphic")),s=Z(X,"Wrapper"),t=Z(X,"Content").append(A=Z(X,"LoadedContent","width:0; height:0; overflow:hidden"),D=Z(X,"Title"),E=Z(X,"Current"),G=Z(X,"Next"),H=Z(X,"Previous"),F=Z(X,"Slideshow").bind(h,db),I=Z(X,"Close")),s.append(Z(X).append(Z(X,"TopLeft"),u=Z(X,"TopCenter"),Z(X,"TopRight")),Z(X,!1,"clear:left").append(v=Z(X,"MiddleLeft"),t,w=Z(X,"MiddleRight")),Z(X,!1,"clear:left").append(Z(X,"BottomLeft"),x=Z(X,"BottomCenter"),Z(X,"BottomRight"))).find("div div").css({"float":"left"}),B=Z(X,!1,"position:absolute; width:9999px; visibility:hidden; display:none"),J=G.add(H).add(E).add(F),a(b.body).append(q,r.append(s,B)))}function gb(){return r?(Y||(Y=!0,L=u.height()+x.height()+t.outerHeight(!0)-t.height(),M=v.width()+w.width()+t.outerWidth(!0)-t.width(),N=A.outerHeight(!0),O=A.outerWidth(!0),r.css({"padding-bottom":L,"padding-right":M}),G.click(function(){W.next()}),H.click(function(){W.prev()}),I.click(function(){W.close()}),q.click(function(){K.overlayClose&&W.close()}),a(b).bind("keydown."+f,function(a){var b=a.keyCode;S&&K.escKey&&27===b&&(a.preventDefault(),W.close()),S&&K.arrowKey&&y[1]&&(37===b?(a.preventDefault(),H.click()):39===b&&(a.preventDefault(),G.click()))}),a(b).delegate("."+g,"click",function(a){a.which>1||a.shiftKey||a.altKey||a.metaKey||(a.preventDefault(),eb(this))})),!0):!1}var q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,Y,d={transition:"elastic",speed:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,inline:!1,html:!1,iframe:!1,fastIframe:!0,photo:!1,href:!1,title:!1,rel:!1,opacity:.9,preloading:!0,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",open:!1,returnFocus:!0,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0},e="colorbox",f="cbox",g=f+"Element",h=f+"_open",i=f+"_load",j=f+"_complete",k=f+"_cleanup",l=f+"_closed",m=f+"_purge",n=!a.support.opacity&&!a.support.style,o=n&&!c.XMLHttpRequest,p=f+"_IE6",X="div";a.colorbox||(a(fb),W=a.fn[e]=a[e]=function(b,c){var f=this;if(b=b||{},fb(),gb()){if(!f[0]){if(f.selector)return f;f=a("<a/>"),b.open=!0}c&&(b.onComplete=c),f.each(function(){a.data(this,e,a.extend({},a.data(this,e)||d,b))}).addClass(g),(a.isFunction(b.open)&&b.open.call(f)||b.open)&&eb(f[0])}return f},W.position=function(a,b){function j(a){u[0].style.width=x[0].style.width=t[0].style.width=a.style.width,t[0].style.height=v[0].style.height=w[0].style.height=a.style.height}var c,h,i,d=0,e=0,g=r.offset();z.unbind("resize."+f),r.css({top:-9e4,left:-9e4}),h=z.scrollTop(),i=z.scrollLeft(),K.fixed&&!o?(g.top-=h,g.left-=i,r.css({position:"fixed"})):(d=h,e=i,r.css({position:"absolute"})),e+=K.right!==!1?Math.max(z.width()-K.w-O-M-_(K.right,"x"),0):K.left!==!1?_(K.left,"x"):Math.round(Math.max(z.width()-K.w-O-M,0)/2),d+=K.bottom!==!1?Math.max(z.height()-K.h-N-L-_(K.bottom,"y"),0):K.top!==!1?_(K.top,"y"):Math.round(Math.max(z.height()-K.h-N-L,0)/2),r.css({top:g.top,left:g.left}),a=r.width()===K.w+O&&r.height()===K.h+N?0:a||0,s[0].style.width=s[0].style.height="9999px",c={width:K.w+O,height:K.h+N,top:d,left:e},0===a&&r.css(c),r.dequeue().animate(c,{duration:a,complete:function(){j(this),T=!1,s[0].style.width=K.w+O+M+"px",s[0].style.height=K.h+N+L+"px",K.reposition&&setTimeout(function(){z.bind("resize."+f,W.position)},1),b&&b()},step:function(){j(this)}})},W.resize=function(a){S&&(a=a||{},a.width&&(K.w=_(a.width,"x")-O-M),a.innerWidth&&(K.w=_(a.innerWidth,"x")),A.css({width:K.w}),a.height&&(K.h=_(a.height,"y")-N-L),a.innerHeight&&(K.h=_(a.innerHeight,"y")),a.innerHeight||a.height||(A.css({height:"auto"}),K.h=A.height()),A.css({height:K.h}),W.position("none"===K.transition?0:K.speed))},W.prep=function(b){function g(){return K.w=K.w||A.width(),K.w=K.mw&&K.mw<K.w?K.mw:K.w,K.w}function h(){return K.h=K.h||A.height(),K.h=K.mh&&K.mh<K.h?K.mh:K.h,K.h}if(S){var c,d="none"===K.transition?0:K.speed;A.remove(),A=Z(X,"LoadedContent").append(b),A.hide().appendTo(B.show()).css({width:g(),overflow:K.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(t),B.hide(),a(R).css({"float":"none"}),o&&a("select").not(r.find("select")).filter(function(){return"hidden"!==this.style.visibility}).css({visibility:"hidden"}).one(k,function(){this.style.visibility="inherit"}),c=function(){function s(){n&&r[0].style.removeAttribute("filter")}var b,c,h,l,o,p,q,g=y.length,i="frameBorder",k="allowTransparency";if(S){if(l=function(){clearTimeout(V),C.detach().hide(),cb(j,K.onComplete)},n&&R&&A.fadeIn(100),D.html(K.title).add(A).show(),g>1){if("string"==typeof K.current&&E.html(K.current.replace("{current}",Q+1).replace("{total}",g)).show(),G[K.loop||g-1>Q?"show":"hide"]().html(K.next),H[K.loop||Q?"show":"hide"]().html(K.previous),K.slideshow&&F.show(),K.preloading)for(b=[$(-1),$(1)];c=y[b.pop()];)q=a.data(c,e),q&&q.href?(o=q.href,a.isFunction(o)&&(o=o.call(c))):o=c.href,ab(o)&&(p=new Image,p.src=o)}else J.hide();K.iframe?(h=Z("iframe")[0],i in h&&(h[i]=0),k in h&&(h[k]="true"),K.scrolling||(h.scrolling="no"),a(h).attr({src:K.href,name:(new Date).getTime(),"class":f+"Iframe",allowFullScreen:!0,webkitAllowFullScreen:!0,mozallowfullscreen:!0}).one("load",l).one(m,function(){h.src="//about:blank"}).appendTo(A),K.fastIframe&&a(h).trigger("load")):l(),"fade"===K.transition?r.fadeTo(d,1,s):s()}},"fade"===K.transition?r.fadeTo(d,0,function(){W.position(0,c)}):W.position(d,c)}},W.load=function(b){var c,d,e=W.prep;T=!0,R=!1,P=y[Q],b||bb(),cb(m),cb(i,K.onLoad),K.h=K.height?_(K.height,"y")-N-L:K.innerHeight&&_(K.innerHeight,"y"),K.w=K.width?_(K.width,"x")-O-M:K.innerWidth&&_(K.innerWidth,"x"),K.mw=K.w,K.mh=K.h,K.maxWidth&&(K.mw=_(K.maxWidth,"x")-O-M,K.mw=K.w&&K.w<K.mw?K.w:K.mw),K.maxHeight&&(K.mh=_(K.maxHeight,"y")-N-L,K.mh=K.h&&K.h<K.mh?K.h:K.mh),c=K.href,V=setTimeout(function(){C.show().appendTo(t)},100),K.inline?(Z(X).hide().insertBefore(a(c)[0]).one(m,function(){a(this).replaceWith(A.children())}),e(a(c))):K.iframe?e(" "):K.html?e(K.html):ab(c)?(a(R=new Image).addClass(f+"Photo").error(function(){K.title=!1,e(Z(X,"Error").html(K.imgError))}).load(function(){var a;R.onload=null,K.scalePhotos&&(d=function(){R.height-=R.height*a,R.width-=R.width*a},K.mw&&R.width>K.mw&&(a=(R.width-K.mw)/R.width,d()),K.mh&&R.height>K.mh&&(a=(R.height-K.mh)/R.height,d())),K.h&&(R.style.marginTop=Math.max(K.h-R.height,0)/2+"px"),y[1]&&(K.loop||y[Q+1])&&(R.style.cursor="pointer",R.onclick=function(){W.next()}),n&&(R.style.msInterpolationMode="bicubic"),setTimeout(function(){e(R)},1)}),setTimeout(function(){R.src=c},1)):c&&B.load(c,K.data,function(b,c){e("error"===c?Z(X,"Error").html(K.xhrError):a(this).contents())})},W.next=function(){!T&&y[1]&&(K.loop||y[Q+1])&&(Q=$(1),W.load())},W.prev=function(){!T&&y[1]&&(K.loop||Q)&&(Q=$(-1),W.load())},W.close=function(){S&&!U&&(U=!0,S=!1,cb(k,K.onCleanup),z.unbind("."+f+" ."+p),q.fadeTo(200,0),r.stop().fadeTo(300,0,function(){r.add(q).css({opacity:1,cursor:"auto"}).hide(),cb(m),A.remove(),setTimeout(function(){U=!1,cb(l,K.onClosed)},1)}))},W.remove=function(){a([]).add(r).add(q).remove(),r=null,a("."+g).removeData(e).removeClass(g),a(b).undelegate("."+g)},W.element=function(){return a(P)},W.settings=d)})(jQuery,document,window);
|