2012-01-16 22:59:59 +00:00
|
|
|
Locomotive.Views.InlinEditor ||= {}
|
|
|
|
|
|
|
|
class Locomotive.Views.InlinEditor.ToolbarView extends Backbone.View
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
el: '#toolbar .inner'
|
2012-01-16 22:59:59 +00:00
|
|
|
|
|
|
|
events:
|
2012-01-17 01:53:49 +00:00
|
|
|
'change .editing-mode input[type=checkbox]': 'toggle_editing_mode'
|
2012-01-17 11:05:39 +00:00
|
|
|
'click .back a': 'back'
|
2012-01-17 16:04:45 +00:00
|
|
|
'click .element-actions a.save': 'save_changes'
|
|
|
|
'click .element-actions a.cancel': 'cancel_changes'
|
2012-01-16 22:59:59 +00:00
|
|
|
|
|
|
|
render: ->
|
|
|
|
super
|
2012-01-17 16:04:45 +00:00
|
|
|
|
|
|
|
console.log('render toolbar')
|
2012-01-16 22:59:59 +00:00
|
|
|
|
2012-01-17 01:53:49 +00:00
|
|
|
@enable_editing_mode_checkbox()
|
2012-01-16 22:59:59 +00:00
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
@enable_content_locale_picker()
|
|
|
|
|
2012-01-16 22:59:59 +00:00
|
|
|
@
|
|
|
|
|
2012-01-17 11:05:39 +00:00
|
|
|
notify: (aloha_editable) ->
|
|
|
|
console.log('editable_element has been modified...')
|
2012-01-17 01:53:49 +00:00
|
|
|
|
|
|
|
window.bar = aloha_editable
|
|
|
|
|
|
|
|
element_id = aloha_editable.obj.attr('data-element-id')
|
|
|
|
@model.get('editable_elements').get(element_id).set
|
|
|
|
content: aloha_editable.getContents()
|
|
|
|
|
|
|
|
@$('.element-actions').show()
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
@hide_editing_mode_block()
|
|
|
|
|
|
|
|
show_status: (status, growl) ->
|
|
|
|
growl ||= false
|
|
|
|
|
|
|
|
message = @$('h1').attr("data-#{status}-status")
|
|
|
|
@$('h1').html(message).removeClass().addClass(status)
|
|
|
|
|
|
|
|
$.growl('error', message) if growl
|
|
|
|
|
|
|
|
@
|
|
|
|
|
|
|
|
save_changes: (event) ->
|
2012-01-17 01:53:49 +00:00
|
|
|
event.stopPropagation() & event.preventDefault()
|
|
|
|
|
|
|
|
previous_attributes = _.clone @model.attributes
|
|
|
|
|
|
|
|
@model.save {},
|
|
|
|
success: (model, response, xhr) =>
|
|
|
|
model.attributes = previous_attributes
|
|
|
|
@$('.element-actions').hide()
|
2012-01-17 16:04:45 +00:00
|
|
|
@show_editing_mode_block()
|
2012-01-17 01:53:49 +00:00
|
|
|
error: (model, xhr) =>
|
|
|
|
@$('.element-actions').hide()
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
cancel_changes: (event) ->
|
2012-01-17 01:53:49 +00:00
|
|
|
event.stopPropagation() & event.preventDefault()
|
2012-01-17 11:05:39 +00:00
|
|
|
@options.target[0].contentWindow.location.href = @options.target[0].contentWindow.location.href
|
|
|
|
|
|
|
|
back: (event) ->
|
|
|
|
event.stopPropagation() & event.preventDefault()
|
2012-01-24 21:04:49 +00:00
|
|
|
if @model
|
|
|
|
window.location.href = @model.get('edit_url')
|
|
|
|
else
|
|
|
|
window.location.href = window.Locomotive.mounted_on + '/pages'
|
2012-01-17 01:53:49 +00:00
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
show_editing_mode_block: ->
|
2012-01-17 01:53:49 +00:00
|
|
|
@$('.editing-mode').show()
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
hide_editing_mode_block: ->
|
|
|
|
@$('.editing-mode').hide()
|
|
|
|
|
2012-01-17 01:53:49 +00:00
|
|
|
toggle_editing_mode: (event) ->
|
2012-01-17 11:05:39 +00:00
|
|
|
return if @editable_elements() == null
|
|
|
|
|
2012-01-16 22:59:59 +00:00
|
|
|
if $(event.target).is(':checked')
|
|
|
|
@editable_elements().aloha()
|
|
|
|
else
|
|
|
|
@editable_elements().removeClass('aloha-editable-highlight').mahalo()
|
|
|
|
|
|
|
|
editable_elements: ->
|
2012-01-17 11:05:39 +00:00
|
|
|
if @options.target[0].contentWindow.Aloha
|
|
|
|
@options.target[0].contentWindow.Aloha.jQuery('.editable-long-text, .editable-short-text')
|
|
|
|
else
|
|
|
|
null
|
2012-01-16 22:59:59 +00:00
|
|
|
|
2012-01-17 01:53:49 +00:00
|
|
|
enable_editing_mode_checkbox: ->
|
|
|
|
@$('.editing-mode input[type=checkbox]').checkToggle
|
2012-01-16 22:59:59 +00:00
|
|
|
on_label_color: '#fff'
|
|
|
|
off_label_color: '#bbb'
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
enable_content_locale_picker: ->
|
|
|
|
_window = @options.target[0].contentWindow
|
|
|
|
link = @$('#content-locale-picker-link')
|
|
|
|
picker = $('#content-locale-picker')
|
|
|
|
|
|
|
|
return if picker.size() == 0
|
|
|
|
|
|
|
|
link.bind 'click', (event) ->
|
|
|
|
event.stopPropagation() & event.preventDefault()
|
|
|
|
picker.toggle()
|
|
|
|
|
|
|
|
picker.find('li').bind 'click', (event) =>
|
|
|
|
current = @get_locale_attributes(link)
|
|
|
|
selected = @get_locale_attributes($(event.target).closest('li'))
|
|
|
|
|
|
|
|
@set_locale_attributes(link, selected)
|
|
|
|
@set_locale_attributes($(event.target).closest('li'), current)
|
|
|
|
|
|
|
|
picker.toggle()
|
|
|
|
|
2012-01-26 01:33:39 +00:00
|
|
|
_window.location.href = '/' + @model.get('localized_fullpaths')[selected[1]] + '/_edit'
|
2012-01-17 16:04:45 +00:00
|
|
|
|
|
|
|
get_locale_attributes: (context) ->
|
|
|
|
[context.find('img').attr('src'), context.find('span.text').html()]
|
|
|
|
|
|
|
|
set_locale_attributes: (context, values) ->
|
|
|
|
context.find('img').attr('src', values[0])
|
|
|
|
context.find('span.text').html(values[1])
|
|
|
|
|
2012-01-16 22:59:59 +00:00
|
|
|
refresh: ->
|
2012-01-17 11:05:39 +00:00
|
|
|
console.log('refreshing toolbar...')
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
@$('h1').html(@model.get('title')).removeClass()
|
2012-01-17 11:05:39 +00:00
|
|
|
|
|
|
|
if @$('.editing-mode input[type=checkbox]').is(':checked')
|
|
|
|
@$('.editing-mode div.switchArea').trigger('click')
|
|
|
|
|
|
|
|
@$('.element-actions').hide()
|
|
|
|
|
2012-01-17 16:04:45 +00:00
|
|
|
@show_editing_mode_block()
|