vendor/assets/javascripts/bhf/application.js in bhf-0.6.2 vs vendor/assets/javascripts/bhf/application.js in bhf-0.6.3

- old
+ new

@@ -4,344 +4,344 @@ //= require ./mootools_ujs_ap //= require_tree ./classes/ var ajaxNote = new Ajaxify(); var quickEdit = new AjaxEdit(); -var pageSetup = function(){ - window.addEvent('domready', function(){ - ajaxNote.setup(); - var lang = document.html.get('lang'); - if (lang === 'en') { - lang = 'en-US'; - } - else { - lang = lang+'-'+lang.toUpperCase(); - } - Locale.use(lang); - var wysiwyg = []; - var setupJsForm = function(scope){ - scope.getElements('.wysiwyg').each(function(elem){ - wysiwyg.push(elem.mooEditable()); - }); +var bhfInit = function(){ + ajaxNote.setup(); + var lang = document.html.get('lang'); + if (lang === 'en') { + lang = 'en-US'; + } + else { + lang = lang+'-'+lang.toUpperCase(); + } + Locale.use(lang); + var wysiwyg = []; + var setupJsForm = function(scope){ + scope.getElements('.wysiwyg').each(function(elem){ + wysiwyg.push(elem.mooEditable()); + }); + + scope.getElements('.multiple_field').each(function(elem){ + new MultipleFields(elem); + }); + scope.getElements('.array_holder').each(function(elem){ + new ArrayFields(elem); + }); + + scope.getElements('.picker').each(function(input){ + var options = { + timePicker: true, + format: '%B %d, %Y %H:%M' + }; + if (input.hasClass('date')) { + options = { + timePicker: false, + format: '%B %d, %Y' + }; + } + else if (input.hasClass('time')) { + options = { + pickOnly: 'time', + format: '%H:%M' + }; + } - scope.getElements('.multiple_field').each(function(elem){ - new MultipleFields(elem); - }); - scope.getElements('.array_holder').each(function(elem){ - new ArrayFields(elem); - }); + var hiddenInput = input.clone(); + input.value = new Date().parse(input.value).format(options.format); + input.erase('name'); + hiddenInput.set('type', 'hidden').inject(input, 'after'); - scope.getElements('.picker').each(function(input){ - var options = { - timePicker: true, - format: '%B %d, %Y %H:%M' - }; - if (input.hasClass('date')) { - options = { - timePicker: false, - format: '%B %d, %Y' - }; + new Picker.Date(input, Object.merge({ + onSelect: function(date){ + hiddenInput.value = date.format('db'); } - else if (input.hasClass('time')) { - options = { - pickOnly: 'time', - format: '%H:%M' - }; - } - - var hiddenInput = input.clone(); - input.value = new Date().parse(input.value).format(options.format); - input.erase('name'); - hiddenInput.set('type', 'hidden').inject(input, 'after'); - - new Picker.Date(input, Object.merge({ - onSelect: function(date){ - hiddenInput.value = date.format('db'); - } - }, options)); - }); + }, options)); + }); + + scope.getElements('.wmd_editor').each(function(mdTa){ + var headline, toggleHtmlPreview, toggleLivePreview, livePreview, htmlPreview; - scope.getElements('.wmd_editor').each(function(mdTa){ - var headline, toggleHtmlPreview, toggleLivePreview, livePreview, htmlPreview; - - var togglePreview = function(e){ - var htmlMode = e.target.hasClass('toggle_html_preview'); - livePreview.toggleClass('hide', htmlMode); - htmlPreview.toggleClass('hide', !htmlMode); - toggleLivePreview.toggleClass('active', !htmlMode); - toggleHtmlPreview.toggleClass('active', htmlMode); - }; - - headline = new Element('h6.preview_switch', {text: 'Preview'}); - - toggleHtmlPreview = new Element('span.toggle_html_preview', {text: 'HTML'}) - .addEvent('click', togglePreview) - .inject(headline); - toggleLivePreview = new Element('span.toggle_live_preview', {text: 'Live'}) - .addEvent('click', togglePreview) - .inject(headline); + var togglePreview = function(e){ + var htmlMode = e.target.hasClass('toggle_html_preview'); + livePreview.toggleClass('hide', htmlMode); + htmlPreview.toggleClass('hide', !htmlMode); + toggleLivePreview.toggleClass('active', !htmlMode); + toggleHtmlPreview.toggleClass('active', htmlMode); + }; + + headline = new Element('h6.preview_switch', {text: 'Preview'}); + + toggleHtmlPreview = new Element('span.toggle_html_preview', {text: 'HTML'}) + .addEvent('click', togglePreview) + .inject(headline); + toggleLivePreview = new Element('span.toggle_live_preview', {text: 'Live'}) + .addEvent('click', togglePreview) + .inject(headline); - headline.inject(mdTa, 'after'); - - livePreview = new Element('div.wmd-preview.hide').inject(headline, 'after'); - htmlPreview = new Element('div.wmd-output.hide').inject(livePreview, 'after'); - - new WMDEditor({ - input: mdTa, - button_bar: new Element('div').inject(mdTa, 'before'), - preview: livePreview, - output: htmlPreview, - buttons: 'bold italic link image ol ul heading hr undo redo help', - modifierKeys: false, - autoFormatting: false + headline.inject(mdTa, 'after'); + + livePreview = new Element('div.wmd-preview.hide').inject(headline, 'after'); + htmlPreview = new Element('div.wmd-output.hide').inject(livePreview, 'after'); + + new WMDEditor({ + input: mdTa, + button_bar: new Element('div').inject(mdTa, 'before'), + preview: livePreview, + output: htmlPreview, + buttons: 'bold italic link image ol ul heading hr undo redo help', + modifierKeys: false, + autoFormatting: false + }); + }); + + scope.getElements('.map_data_lat').each(function(lat){ + new Setlatlng(lat); + }); + }; + + quickEdit.setup({ + holderParent: $('content'), + onStartRequest: function(form){ + ajaxNote.loading(); + }, + onFormInjected: function(form){ + setupJsForm(form); + scrollContent(); + ajaxNote.success(); + }, + onSave: function(form){ + ajaxNote.success(); + }, + onBeforeSubmit: function(){ + ajaxNote.loading(); + wysiwyg.each(function(elem){ + elem.saveContent(); + }); + } + }); + + var platforms = document.body.getElements('.platform'); + var mainForm = document.id('main_form'); + + if (platforms.length) { + var setupSortables = function(scope){ + scope.getElements('.sortable').each(function(sortableElems){ + new Sortables(sortableElems, { + handle: '.handle', + onStart: function(element, clone){ + element.addClass('dragged'); + }, + onComplete: function(element){ + element.removeClass('dragged'); + new Request({ + method: 'put', + url: this.element.getParent('tbody').get('data-sort-url') + }).send({data: {order: this.serialize()}}); + } }); }); - - scope.getElements('.map_data_lat').each(function(lat){ - new Setlatlng(lat); - }); }; + var updatePlatform = function(href, platform, callback){ + ajaxNote.loading(); + new Request.HTML({ + method: 'get', + url: href, + onSuccess: function(a, b, html, js){ + platform.innerHTML = html; + if (callback) { + callback.call(); + } + setupSortables(platform); + Browser.exec(js); + ajaxNote.success(); + windowHight = document.body.clientHeight; + document.body.fireEvent('platformUpdate'); + } + }).send(); + }; - quickEdit.setup({ - holderParent: $('content'), - onStartRequest: function(form){ + platforms.addEvents({ + 'click:relay(.pagination a, thead a)': function(e){ + e.preventDefault(); + updatePlatform(this.get('href'), this.getParent('.platform')); + }, + 'submit:relay(.search)': function(e){ ajaxNote.loading(); + e.preventDefault(); + var parent = this.getParent('.platform'); + var hidden_search = e.target.getElement('.hidden_search'); + if (hidden_search) { + hidden_search.destroy(); + } + + new Request.HTML({ + method: 'get', + url: this.get('action'), + onSuccess: function(a, b, html){ + parent.innerHTML = html; + setupSortables(parent); + ajaxNote.success(); + } + }).send({data: this}); }, - onFormInjected: function(form){ - setupJsForm(form); - scrollContent(); - ajaxNote.success(); + 'click:relay(.quick_edit)': function(e){ + e.preventDefault(); + quickEdit.startEdit(this, this.getParent('tr')); }, - onSave: function(form){ - ajaxNote.success(); + 'click:relay(.action a)': function(e){ + this.addClass('clicked'); + setTimeout(function(){ + this.removeClass('clicked'); + }.bind(this), 1500); }, - onBeforeSubmit: function(){ - ajaxNote.loading(); - wysiwyg.each(function(elem){ - elem.saveContent(); + 'click:relay(.delete)': function(e){ + e.target.addEvents({ + 'ajax:success': function(html){ + this.getParent('tr').dispose(); + }, + 'ajax:failure': function(html){ + alert(Locale.get('Messages.warning')); + } }); } }); - var platforms = document.body.getElements('.platform'); - var mainForm = document.id('main_form'); - - if (platforms.length) { - var setupSortables = function(scope){ - scope.getElements('.sortable').each(function(sortableElems){ - new Sortables(sortableElems, { - handle: '.handle', - onStart: function(element, clone){ - element.addClass('dragged'); - }, - onComplete: function(element){ - element.removeClass('dragged'); - new Request({ - method: 'put', - url: this.element.getParent('tbody').get('data-sort-url') - }).send({data: {order: this.serialize()}}); - } - }); + quickEdit.addEvents({ + successAndChange: function(json){ + var tr = this.wrapElement; + tr.getElements('td').each(function(td){ + var name = td.get('data-column-name'); + if ( ! name) { return; } + var a = td.getElement('a.quick_edit'); + (a ? a : td).innerHTML = json[name] || ''; }); - }; - var updatePlatform = function(href, platform, callback){ - ajaxNote.loading(); - new Request.HTML({ - method: 'get', - url: href, - onSuccess: function(a, b, html, js){ - platform.innerHTML = html; - if (callback) { - callback.call(); - } - setupSortables(platform); - Browser.exec(js); - ajaxNote.success(); - windowHight = document.body.clientHeight; - } - }).send(); - }; + }, + successAndNext: function(json){ + var tr = this.wrapElement; + var nextTr = tr.getNext('tr'); - platforms.addEvents({ - 'click:relay(.pagination a, thead a)': function(e){ - e.preventDefault(); - updatePlatform(this.get('href'), this.getParent('.platform')); - }, - 'submit:relay(.search)': function(e){ - ajaxNote.loading(); - e.preventDefault(); - var parent = this.getParent('.platform'); - var hidden_search = e.target.getElement('.hidden_search'); - if (hidden_search) { - hidden_search.destroy(); - } - - new Request.HTML({ - method: 'get', - url: this.get('action'), - onSuccess: function(a, b, html){ - parent.innerHTML = html; - setupSortables(parent); - ajaxNote.success(); - } - }).send({data: this}); - }, - 'click:relay(.quick_edit)': function(e){ - e.preventDefault(); - quickEdit.startEdit(this, this.getParent('tr')); - }, - 'click:relay(.action a)': function(e){ - this.addClass('clicked'); - setTimeout(function(){ - this.removeClass('clicked'); - }.bind(this), 1500); - }, - 'click:relay(.delete)': function(e){ - e.target.addEvents({ - 'ajax:success': function(html){ - this.getParent('tr').dispose(); - }, - 'ajax:failure': function(html){ - alert('Something went wrong!'); - } - }); + if (nextTr) { + quickEdit.startEdit(nextTr.getElement('a'), nextTr); } - }); - - quickEdit.addEvents({ - successAndChange: function(json){ - var tr = this.wrapElement; - tr.getElements('td').each(function(td){ - var name = td.get('data-column-name'); - if ( ! name) { return; } - var a = td.getElement('a.quick_edit'); - (a ? a : td).innerHTML = json[name] || ''; - }); - }, - successAndNext: function(json){ - var tr = this.wrapElement; - var nextTr = tr.getNext('tr'); - - if (nextTr) { - quickEdit.startEdit(nextTr.getElement('a'), nextTr); + else { + var platform = tr.getParent('.platform'); + var loadMore = platform.getElement('.load_more'); + if (loadMore) { + trIndex = tr.getParent('tbody').getElements('tr').indexOf(tr); + updatePlatform(loadMore.get('href'), platform, function(){ + platform.getElements('tbody tr').each(function(newTr, index){ + if (trIndex === index) { + nextTr = newTr.getNext('tr'); + quickEdit.startEdit(nextTr.getElement('a'), nextTr); + } + }); + }); } else { - var platform = tr.getParent('.platform'); - var loadMore = platform.getElement('.load_more'); - if (loadMore) { - trIndex = tr.getParent('tbody').getElements('tr').indexOf(tr); - updatePlatform(loadMore.get('href'), platform, function(){ - platform.getElements('tbody tr').each(function(newTr, index){ - if (trIndex === index) { - nextTr = newTr.getNext('tr'); - quickEdit.startEdit(nextTr.getElement('a'), nextTr); - } - }); - }); - } - else { - nextTr = platform.getElements('tbody tr')[0]; - quickEdit.startEdit(nextTr.getElement('a'), nextTr); - } + nextTr = platform.getElements('tbody tr')[0]; + quickEdit.startEdit(nextTr.getElement('a'), nextTr); } } - }); - setupSortables(document.body); - } - else if (mainForm) { - setupJsForm(mainForm); + } + }); + setupSortables(document.body); + } + else if (mainForm) { + setupJsForm(mainForm); - mainForm.addEvents({ - 'click:relay(.quick_edit)': function(e){ - e.preventDefault(); - quickEdit.startEdit(this); - }, - 'click:relay(.delete)': function(e){ - e.target.addEvents({ - 'ajax:success': function(html){ - var relation = e.target.getParent('.relation'); - if (relation.getElements('li').length < 2) { - relation.getPrevious('.empty').removeClass('hide'); - if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) { - relation.getNext('.add_field').removeClass('hide'); - } + mainForm.addEvents({ + 'click:relay(.quick_edit)': function(e){ + e.preventDefault(); + quickEdit.startEdit(this); + }, + 'click:relay(.delete)': function(e){ + e.target.addEvents({ + 'ajax:success': function(html){ + var relation = e.target.getParent('.relation'); + if (relation.getElements('li').length < 2) { + relation.getPrevious('.empty').removeClass('hide'); + if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) { + relation.getNext('.add_field').removeClass('hide'); } - e.target.getParent('li').dispose(); - }, - 'ajax:failure': function(html){ - alert('Something went wrong!'); } - }); - } - }); - - quickEdit.addEvents({ - successAndAdd: function(json){ - var relation = this.wrapElement.getPrevious('.relation'); - relation.getPrevious('.empty').addClass('hide'); - if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) { - relation.getNext('.add_field').addClass('hide'); + e.target.getParent('li').dispose(); + }, + 'ajax:failure': function(html){ + alert(Locale.get('Messages.warning')); } - relation.adopt( - new Element('li').adopt( - new Element('a.quick_edit', {text: json.to_bhf_s || '', href: json.edit_path}) - ) - ); - }, - successAndChange: function(json){ - this.wrapElement.set('text', json.to_bhf_s || ''); - }, - successAndNext: function(json){ - var a = this.wrapElement; - var li = a.getParent('li'); - if ( ! li) { - this.close(); - return; - } - var holder = li.getNext('li'); + }); + } + }); - if ( ! holder) { - holder = li.getParent('ul'); - } - quickEdit.startEdit(holder.getElement('a')); + quickEdit.addEvents({ + successAndAdd: function(json){ + var relation = this.wrapElement.getPrevious('.relation'); + relation.getPrevious('.empty').addClass('hide'); + if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) { + relation.getNext('.add_field').addClass('hide'); } - }); - } - var windowHight = document.body.clientHeight; - window.onresize = function(e){ - windowHight = document.body.clientHeight; - }; - var scrollContent = function(){ - var innerForm = quickEdit.holder.getElement('form'); - if ( ! innerForm) { return; } - var scroll = document.body.scrollTop-70; - if (scroll < 10) { - scroll = 10; - } - if (scroll + innerForm.getSize().y > windowHight) { return; } - quickEdit.holder.setStyle('padding-top', scroll); - }; - window.onscroll = scrollContent; + relation.adopt( + new Element('li').adopt( + new Element('a.quick_edit', {text: json.to_bhf_s || '', href: json.edit_path}) + ) + ); + }, + successAndChange: function(json){ + this.wrapElement.set('text', json.to_bhf_s || ''); + }, + successAndNext: function(json){ + var a = this.wrapElement; + var li = a.getParent('li'); + if ( ! li) { + this.close(); + return; + } + var holder = li.getNext('li'); - var fm = $('flash_massages'); - if (fm) { - fm.removeClass.delay(4000, fm, 'show'); + if ( ! holder) { + holder = li.getParent('ul'); + } + quickEdit.startEdit(holder.getElement('a')); + } + }); + } + var windowHight = document.body.clientHeight; + window.onresize = function(e){ + windowHight = document.body.clientHeight; + }; + var scrollContent = function(){ + var innerForm = quickEdit.holder.getElement('form'); + if ( ! innerForm) { return; } + var scroll = document.body.scrollTop-70; + if (scroll < 10) { + scroll = 10; } + if (scroll + innerForm.getSize().y > windowHight) { return; } + quickEdit.holder.setStyle('padding-top', scroll); + }; + window.onscroll = scrollContent; - new BrowserUpdate({vs:{i:8,f:7,o:10.01,s:4,n:9}}); - }); + var fm = $('flash_massages'); + if (fm) { + fm.removeClass.delay(4000, fm, 'show'); + } + + new BrowserUpdate({vs:{i:8,f:7,o:10.01,s:4,n:9}}); }; -pageSetup(); +window.addEvent('domready', bhfInit); + if (document.addEventListener) { document.addEventListener('page:fetch', function(){ ajaxNote.loading(); }); document.addEventListener('page:load', function(){ quickEdit.removeEvents(); - pageSetup(); + bhfInit(); rails.applyEvents(); ajaxNote.success(); }); }