diff --git a/app/views/paloma/_callback_hook.html.erb b/app/views/paloma/_callback_hook.html.erb index 1e39edd..d0ff50c 100644 --- a/app/views/paloma/_callback_hook.html.erb +++ b/app/views/paloma/_callback_hook.html.erb @@ -11,13 +11,13 @@ } // Remove any callback details if any - $('.paloma-callback-details[data-id!=' + id + ']').remove(); + $('.paloma-callback-details[data-id!=' + <%= id %> + ']').remove(); var run = function(){ var callbacks = <%= callbacks.to_json.html_safe %>; for (var i = 0, len = callbacks.length; i < len; i++){ - Paloma.execute(callback[i]); + Paloma.execute(callbacks[i]); } }; diff --git a/lib/paloma/action_controller_extension.rb b/lib/paloma/action_controller_extension.rb index f1430c1..0cec6b5 100644 --- a/lib/paloma/action_controller_extension.rb +++ b/lib/paloma/action_controller_extension.rb @@ -130,9 +130,9 @@ module Paloma end - def parse_action action + def parse_action action = nil action ||= self.action_name - action.split('_').map(&:titleize).join + action.camelize(:lower) end end diff --git a/spec/test_app/app/assets/javascripts/paloma/_filters.js b/spec/test_app/app/assets/javascripts/paloma/_filters.js deleted file mode 100644 index f0890b7..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/_filters.js +++ /dev/null @@ -1,130 +0,0 @@ -// For testing only -window.filtersExecuted = window.filtersExecuted || {before : [], after : []}; - - -(function(){ - var filter = new Paloma.FilterScope('/'); - var _x = Paloma.variableContainer; - - - // To-Be-Skipped Before Filters - filter.as('Standard Skip Before Filter').before_all().perform(function(params){ - filtersExecuted.before.push('Standard Skip Before Filter'); - }); - - filter.as('Only Skip Before Filter').before_all().perform(function(params){ - filtersExecuted.before.push('Only Skip Before Filter'); - }); - - filter.as('Except Skip Before Filter').before_all().perform(function(params){ - filtersExecuted.before.push('Except Skip Before Filter'); - }); - - - // To-Be-Skipped After Filters - filter.as('Standard Skip After Filter').after_all().perform(function(params){ - filtersExecuted.after.push('Standard Skip After Filter'); - }); - - filter.as('Only Skip After Filter').after_all().perform(function(params){ - filtersExecuted.after.push('Only Skip After Filter'); - }); - - filter.as('Except Skip After Filter').after_all().perform(function(params){ - filtersExecuted.after.push('Except Skip After Filter'); - }); - - - // To-Be-Skipped Around Filters - filter.as('Standard Skip Around Filter').around_all().perform(function(params){ - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Standard Skip Around Filter'); - }); - - filter.as('Only Skip Around Filter').around_all().perform(function(params){ - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Only Skip Around Filter'); - }); - - filter.as('Except Skip Around Filter').around_all().perform(function(params){ - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Except Skip Around Filter'); - }); - - - - // Before - filter.as('Application Standard Before'). - before('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Application Standard Before'); - }); - - - filter.as('Application Before All'). - before_all().perform(function(params) - { - filtersExecuted.before.push('Application Before All'); - }); - - - filter.as('Application Except Before'). - except_before('basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Application Except Before'); - }); - - - // After - filter.as('Application Standard After'). - after('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Application Standard After'); - }); - - - filter.as('Application After All'). - after_all().perform(function(params) - { - filtersExecuted.after.push('Application After All'); - }); - - - filter.as('Application Except After'). - except_after('basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Application Except After'); - }); - - - // Around - filter.as('Application Standard Around'). - around('basic_action', 'another_basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Application Standard Around'); - }); - - - filter.as('Application Around All'). - around_all().perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Application Around All'); - }); - - - filter.as('Application Except Around'). - except_around('basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Application Except Around'); - }); - -})(); diff --git a/spec/test_app/app/assets/javascripts/paloma/_locals.js b/spec/test_app/app/assets/javascripts/paloma/_locals.js deleted file mode 100644 index 938e062..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/_locals.js +++ /dev/null @@ -1,17 +0,0 @@ -(function(){ -Paloma.locals['/'] = {}; -locals = Paloma.locals['/']; - -// Locals starts here -locals.applicationHelperMethod = function(){ - return "I'm from application locals!" -}; - - -locals.toBeOverriden = function(){ - return "Override me!" -}; - - -// Locals ends here -})(); diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/_filters.js b/spec/test_app/app/assets/javascripts/paloma/bar/_filters.js deleted file mode 100644 index 18877ef..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/_filters.js +++ /dev/null @@ -1,96 +0,0 @@ -// For testing only -window.filtersExecuted = window.filtersExecuted || {before : [], after : []}; - - -(function(){ - var filter = new Paloma.FilterScope('bar'); - var _x = Paloma.variableContainer; - - filter.skip_before_filter('Standard Skip Before Filter'); - filter.skip_before_filter('Only Skip Before Filter').only('basic_action'); - filter.skip_before_filter('Except Skip Before Filter').except('yet_another_basic_action'); - - filter.skip_after_filter('Standard Skip After Filter'); - filter.skip_after_filter('Only Skip After Filter').only('basic_action'); - filter.skip_after_filter('Except Skip After Filter').except('yet_another_basic_action'); - - filter.skip_around_filter('Standard Skip Around Filter'); - filter.skip_around_filter('Only Skip Around Filter').only('basic_action'); - filter.skip_around_filter('Except Skip Around Filter').except('yet_another_basic_action'); - - - // Before - filter.as('Standard Before'). - before('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Standard Before'); - }); - - - filter.as('Before All'). - before_all().perform(function(params) - { - filtersExecuted.before.push('Before All'); - }); - - - filter.as('Except Before'). - except_before('basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Except Before'); - }); - - - // After - filter.as('Standard After'). - after('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Standard After'); - }); - - - filter.as('After All'). - after_all().perform(function(params) - { - filtersExecuted.after.push('After All'); - }); - - - filter.as('Except After'). - except_after('basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Except After'); - }); - - - // Around - filter.as('Standard Around'). - around('basic_action', 'another_basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Standard Around'); - }); - - - filter.as('Around All'). - around_all().perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Around All'); - }); - - - filter.as('Except Around'). - except_around('basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Except Around'); - }); - -})(); diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/_locals.js b/spec/test_app/app/assets/javascripts/paloma/bar/_locals.js deleted file mode 100644 index 06f645a..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/_locals.js +++ /dev/null @@ -1 +0,0 @@ -Paloma.callbacks['bar'] = {}; diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/_manifest.js b/spec/test_app/app/assets/javascripts/paloma/bar/_manifest.js deleted file mode 100644 index cfaa921..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/_manifest.js +++ /dev/null @@ -1,3 +0,0 @@ -//= require ./_locals.js -//= require ./_filters.js -//= require_tree . diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/another_basic_action.js b/spec/test_app/app/assets/javascripts/paloma/bar/another_basic_action.js deleted file mode 100644 index c096881..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/another_basic_action.js +++ /dev/null @@ -1,5 +0,0 @@ -Paloma.callbacks['bar']['another_basic_action'] = function(params) -{ - window.callback = "['bar']['another_basic_action']"; - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/basic_action.js b/spec/test_app/app/assets/javascripts/paloma/bar/basic_action.js deleted file mode 100644 index 7e86ef4..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/basic_action.js +++ /dev/null @@ -1,5 +0,0 @@ -Paloma.callbacks['bar']['basic_action'] = function(params) -{ - window.callback = "['bar']['basic_action']"; - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/different_params.js b/spec/test_app/app/assets/javascripts/paloma/bar/different_params.js deleted file mode 100644 index 178041b..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/different_params.js +++ /dev/null @@ -1,4 +0,0 @@ -Paloma.callbacks['bar']['different_params'] = function(params) -{ - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/bar/yet_another_basic_action.js b/spec/test_app/app/assets/javascripts/paloma/bar/yet_another_basic_action.js deleted file mode 100644 index 3ac2d47..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/bar/yet_another_basic_action.js +++ /dev/null @@ -1,5 +0,0 @@ -Paloma.callbacks['bar']['yet_another_basic_action'] = function(params) -{ - window.callback = "['bar']['yet_another_basic_action']"; - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/foo.js b/spec/test_app/app/assets/javascripts/paloma/foo.js index b2a23cf..3bc5f8f 100644 --- a/spec/test_app/app/assets/javascripts/paloma/foo.js +++ b/spec/test_app/app/assets/javascripts/paloma/foo.js @@ -2,18 +2,8 @@ var self = Paloma.Resource.create('Foo'); - self.prototype.basicAction = function(){ - window.callback = "['foo']['basic_action']"; - window.params = params; - - window.helperMethodValue = _l.helperMethod(); - window.helperVariableValue = _l.helperVariable; - window.overriden = _l.toBeOverriden(); - - _x.xVisibility.push('Foo'); - - window.locals = _l; + self.prototype.basicAction = function(params){ + console.log(params); }; - })(); \ No newline at end of file diff --git a/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js b/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js deleted file mode 100644 index 72a7977..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js +++ /dev/null @@ -1,24 +0,0 @@ -(function(){ - var filter = new Paloma.FilterScope('foo'); - var _x = Paloma.variableContainer; - - - filter.as('Before Foo'). - before_all().perform(function(params){ - _x.xVisibility = ['Before Foo']; - }); - - - filter.as('After Foo'). - after_all().perform(function(params){ - _x.xVisibility.push('After Foo'); - }); - - - filter.as('Around Foo'). - around_all().perform(function(params){ - _x.xVisibility.push('Around Foo'); - window.xVisibilityFinal = _x.xVisibility; - }); - -})(); diff --git a/spec/test_app/app/assets/javascripts/paloma/foo/_locals.js b/spec/test_app/app/assets/javascripts/paloma/foo/_locals.js deleted file mode 100644 index 0d55ee7..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/foo/_locals.js +++ /dev/null @@ -1,21 +0,0 @@ -(function(){ -Paloma.callbacks['foo'] = {}; -Paloma.locals['foo'] = {}; -locals = Paloma.locals['foo']; - -// Locals starts here -locals.helperMethod = function(){ - return 100; -}; - -locals.helperVariable = 99; - - -locals.toBeOverriden = function(){ - return "Override!" -}; - - -// Locals ends here -Paloma.inheritLocals({from : '/', to : 'foo'}); -})(); diff --git a/spec/test_app/app/assets/javascripts/paloma/foo/_manifest.js b/spec/test_app/app/assets/javascripts/paloma/foo/_manifest.js deleted file mode 100644 index cfaa921..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/foo/_manifest.js +++ /dev/null @@ -1,3 +0,0 @@ -//= require ./_locals.js -//= require ./_filters.js -//= require_tree . diff --git a/spec/test_app/app/assets/javascripts/paloma/foo/basic_action.js b/spec/test_app/app/assets/javascripts/paloma/foo/basic_action.js deleted file mode 100644 index dc6eabe..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/foo/basic_action.js +++ /dev/null @@ -1,21 +0,0 @@ -(function(){ -var _x = Paloma.variableContainer, - _L= Paloma.locals, - _l = _L['foo']; - - -Paloma.callbacks['foo']['basic_action'] = function(params) -{ - window.callback = "['foo']['basic_action']"; - window.params = params; - - window.helperMethodValue = _l.helperMethod(); - window.helperVariableValue = _l.helperVariable; - window.overriden = _l.toBeOverriden(); - - _x.xVisibility.push('Foo'); - - window.locals = _l; -}; - -})(); \ No newline at end of file diff --git a/spec/test_app/app/assets/javascripts/paloma/foo/skip_callback.js b/spec/test_app/app/assets/javascripts/paloma/foo/skip_callback.js deleted file mode 100644 index 5e730f3..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/foo/skip_callback.js +++ /dev/null @@ -1,6 +0,0 @@ -Paloma.callbacks['foo']['skip_callback'] = function(params) -{ - // Must not reach this code. - window.callback = "foo/skip_callback"; - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/index.js b/spec/test_app/app/assets/javascripts/paloma/index.js index 0fee68a..95f9aa5 100644 --- a/spec/test_app/app/assets/javascripts/paloma/index.js +++ b/spec/test_app/app/assets/javascripts/paloma/index.js @@ -1,6 +1,2 @@ -//= require paloma_core.js -//= require ./_filters.js -//= require ./_locals.js -//= require ./foo/_manifest.js -//= require ./bar/_manifest.js -//= require ./sample_namespace/_manifest.js +//= require paloma.js +//= require_tree . diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/_filters.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/_filters.js deleted file mode 100644 index d4e2854..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/_filters.js +++ /dev/null @@ -1,83 +0,0 @@ -// For testing only -window.filtersExecuted = window.filtersExecuted || {before : [], after : []}; - - -(function(){ - var filter = new Paloma.FilterScope('sample_namespace'); - var _x = Paloma.variableContainer; - - // Before - filter.as('Namespaced Standard Before'). - before('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Namespaced Standard Before'); - }); - - - filter.as('Namespaced Before All'). - before_all().perform(function(params) - { - filtersExecuted.before.push('Namespaced Before All'); - }); - - - filter.as('Namespaced Except Before'). - except_before('basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Namespaced Except Before'); - }); - - - // After - filter.as('Namespaced Standard After'). - after('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Namespaced Standard After'); - }); - - - filter.as('Namespaced After All'). - after_all().perform(function(params) - { - filtersExecuted.after.push('Namespaced After All'); - }); - - - filter.as('Namespaced Except After'). - except_after('basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Namespaced Except After'); - }); - - - // Around - filter.as('Namespaced Standard Around'). - around('basic_action', 'another_basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Namespaced Standard Around'); - }); - - - filter.as('Namespaced Around All'). - around_all().perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Namespaced Around All'); - }); - - - filter.as('Namespaced Except Around'). - except_around('basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Namespaced Except Around'); - }); - -})(); diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/_manifest.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/_manifest.js deleted file mode 100644 index c818c93..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/_manifest.js +++ /dev/null @@ -1,2 +0,0 @@ -//= require ./_filters.js -//= require ./baz/_manifest.js diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_filters.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_filters.js deleted file mode 100644 index 4b93e09..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_filters.js +++ /dev/null @@ -1,84 +0,0 @@ -// For testing only -window.filtersExecuted = window.filtersExecuted || {before : [], after : []}; - - -(function(){ - var filter = new Paloma.FilterScope('sample_namespace/baz'); - var _x = Paloma.variableContainer; - - - // Before - filter.as('Standard Before'). - before('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Standard Before'); - }); - - - filter.as('Before All'). - before_all().perform(function(params) - { - filtersExecuted.before.push('Before All'); - }); - - - filter.as('Except Before'). - except_before('basic_action'). - perform(function(params) - { - filtersExecuted.before.push('Except Before'); - }); - - - // After - filter.as('Standard After'). - after('basic_action', 'another_basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Standard After'); - }); - - - filter.as('After All'). - after_all().perform(function(params) - { - filtersExecuted.after.push('After All'); - }); - - - filter.as('Except After'). - except_after('basic_action'). - perform(function(params) - { - filtersExecuted.after.push('Except After'); - }); - - - // Around - filter.as('Standard Around'). - around('basic_action', 'another_basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Standard Around'); - }); - - - filter.as('Around All'). - around_all().perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Around All'); - }); - - - filter.as('Except Around'). - except_around('basic_action'). - perform(function(params) - { - var execution = window.callback ? 'after' : 'before'; - filtersExecuted[execution].push('Except Around'); - }); - -})(); \ No newline at end of file diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_locals.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_locals.js deleted file mode 100644 index 7a5db3b..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_locals.js +++ /dev/null @@ -1 +0,0 @@ -Paloma.callbacks['sample_namespace/baz'] = {} diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_manifest.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_manifest.js deleted file mode 100644 index 8793aa6..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/_manifest.js +++ /dev/null @@ -1,2 +0,0 @@ -//= require ./_locals.js -//= require_tree . \ No newline at end of file diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/another_basic_action.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/another_basic_action.js deleted file mode 100644 index 6365aed..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/another_basic_action.js +++ /dev/null @@ -1,5 +0,0 @@ -Paloma.callbacks['sample_namespace/baz']['another_basic_action'] = function(params) -{ - window.callback = "['sample_namespace/baz']['another_basic_action']"; - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/basic_action.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/basic_action.js deleted file mode 100644 index e30f623..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/basic_action.js +++ /dev/null @@ -1,5 +0,0 @@ -Paloma.callbacks['sample_namespace/baz']['basic_action'] = function(params) -{ - window.callback = "['sample_namespace/baz']['basic_action']"; - window.params = params; -}; diff --git a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/yet_another_basic_action.js b/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/yet_another_basic_action.js deleted file mode 100644 index 9a6ac85..0000000 --- a/spec/test_app/app/assets/javascripts/paloma/sample_namespace/baz/yet_another_basic_action.js +++ /dev/null @@ -1,5 +0,0 @@ -Paloma.callbacks['sample_namespace/baz']['yet_another_basic_action'] = function(params) -{ - window.callback = "['sample_namespace/baz']['yet_another_basic_action']"; - window.params = params; -}; diff --git a/vendor/assets/javascripts/paloma.js b/vendor/assets/javascripts/paloma.js index d860562..095b384 100644 --- a/vendor/assets/javascripts/paloma.js +++ b/vendor/assets/javascripts/paloma.js @@ -8,13 +8,13 @@ window.Paloma = window.Paloma || {}; P.execute = function(callback){ - var resource = P.Resources[callback.resource]; + var resource = P.Resources[ callback['resource'] ]; if (resource == undefined){ return false; } - var action = resource[action]; - if (action == undefined){ return false; } + var instance = new resource(), + action = callback['action']; - action(callback.params); + if (instance[action] != null){ instance[action](callback['params']); } }; @@ -26,20 +26,18 @@ window.Paloma = window.Paloma || {}; options = defaultOptions(options); var path = name.split('.'), - resource = name.pop(), - namespace = name.pop(); + resource = path.pop(), + namespace = path.pop(); - var constructor = function(){}; + var Resource = function(){}; if (namespace != null){ P.Resources[namespace] = P.Resource[namespace] || {}; - P.Resources[namespace][resource] = constructor; + return P.Resources[namespace][resource] = Resource; } else { - P.Resources[resource] = constructor; + return P.Resources[resource] = Resource; } - - return constructor; }; @@ -51,6 +49,8 @@ window.Paloma = window.Paloma || {}; var defaultOptions = function(options){ + options = options || {}; + var values = {}; values['extend'] = options['extend'] != null ? options['extend'] : null; diff --git a/vendor/assets/javascripts/paloma_core.js b/vendor/assets/javascripts/paloma_core.js deleted file mode 100644 index 06b9cd5..0000000 --- a/vendor/assets/javascripts/paloma_core.js +++ /dev/null @@ -1,296 +0,0 @@ -(function(){ -window.Paloma = { - callbacks : {}, - filterScopes : {}, - locals : {}, - variableContainer : {} -}; - - -var FILTER_TYPES = {}, - FILTER_TYPE_NAMES = ['BEFORE', 'AFTER', 'AROUND'], - INCLUSION_TYPES = {}, - INCLUSION_TYPE_NAMES = ['ALL', 'ONLY', 'EXCEPT']; - -FILTER_TYPES.BEFORE = 0; -FILTER_TYPES.AFTER = 1; -FILTER_TYPES.AROUND = 2; - -INCLUSION_TYPES.ALL = 3; -INCLUSION_TYPES.ONLY = 4; -INCLUSION_TYPES.EXCEPT = 5; - - -Paloma.inheritLocals = function(options){ - var from = Paloma.locals[options['from']], - to = Paloma.locals[options['to']]; - - for (var local in from){ - // Overriding is allowed. - if ( to.hasOwnProperty(local) ){ continue; } - - to[local] = from[local]; - } -}; - - - -Paloma.FilterScope = function(name){ - this.name = name; - - this.filters = {}; - this.skippers = {}; - - for (var i = 0, n = FILTER_TYPE_NAMES.length; i < n; i++){ - var type = FILTER_TYPE_NAMES[i].toUpperCase(); - this.filters[ FILTER_TYPES[type] ] = []; - this.skippers[ FILTER_TYPES[type] ] = []; - } - - Paloma.filterScopes[name] = this; -}; - - -// Creates a new Filter instance registered under this FilterScope. -Paloma.FilterScope.prototype.as = function(filterName){ - return (new Paloma.Filter(this, filterName)); -}; - - -// skip_*_filter/s methods -(function(){ - for (var i = 0, n = FILTER_TYPE_NAMES.length; i < n; i++){ - var type = FILTER_TYPE_NAMES[i], - singular = 'skip_' + type.toLowerCase() + '_filter', - plural = singular + 's', - method = function(skipperType){ - return function(){ - return (new Paloma.Skipper(this, FILTER_TYPES[skipperType], arguments)); - }; - }; - - Paloma.FilterScope.prototype[singular] = new method(type); - Paloma.FilterScope.prototype[plural] = Paloma.FilterScope.prototype[singular]; - } -})(); - - - - -// Skipper class -Paloma.Skipper = function(scope, type, filters){ - this.scope = scope; - this.type = type; - this.filters = Array.prototype.slice.call(filters); - this.inclusionType = INCLUSION_TYPES.ALL; - this.actions = []; - - // Register this skipper on its scope. - this.scope.skippers[this.type].push(this); -}; - - -Paloma.Skipper.prototype.skip = function(filter, action){ - if (this.filters.indexOf(filter.name) == -1){ return false; } - - var actionIsListed = this.actions.indexOf(action) != -1, - isAllActions = this.inclusionType == INCLUSION_TYPES.ALL, - isQualified = this.inclusionType == INCLUSION_TYPES.ONLY && actionIsListed, - isNotExcepted = this.inclusionType == INCLUSION_TYPES.EXCEPT && !actionIsListed; - - return (isAllActions || isQualified || isNotExcepted); -}; - - -Paloma.Skipper.prototype.only = function(){ - this.inclusionType = INCLUSION_TYPES.ONLY; - this.actions = Array.prototype.slice.call(arguments); -}; - - -Paloma.Skipper.prototype.except = function(){ - this.inclusionType = INCLUSION_TYPES.EXCEPT; - this.actions = Array.prototype.slice.call(arguments); -}; - - - -// Filter class -Paloma.Filter = function(scope, name){ - this.scope = scope; - this.name = name; - - this.type = undefined; - this.inclusionType = INCLUSION_TYPES.ONLY; - - this.actions = []; - this.method = undefined; -}; - - -// Create Methods: -// - before, after, around, *_all, except_* -(function(){ -var Basic = function(type){ - return function(){ - return this.setProperties(type, INCLUSION_TYPES.ONLY, arguments); - }; -}; - -var All = function(type){ - return function(){ - return this.setProperties(type, INCLUSION_TYPES.ALL, []); - }; -}; - -var Except = function(type){ - return function(){ - return this.setProperties(type, INCLUSION_TYPES.EXCEPT, arguments); - }; -}; - -for (var i = 0, n = FILTER_TYPE_NAMES.length; i < n; i++){ - var name = FILTER_TYPE_NAMES[i].toLowerCase(), - type = FILTER_TYPES[name.toUpperCase()]; - - Paloma.Filter.prototype[name] = new Basic(type); - Paloma.Filter.prototype[name + '_all'] = new All(type); - Paloma.Filter.prototype['except_' + name] = new Except(type); -} -})(); -// End of creating methods. - - -// This will be the last method to be invoked when declaring a filter. -// This will set what method/function will be executed when the filter is called. -Paloma.Filter.prototype.perform = function(method){ - this.method = method; - - // This is the only time the filter is registered to its owner scope. - this.scope.filters[this.type].push(this); - return this; -}; - - -Paloma.Filter.prototype.isApplicable = function(action){ - var actionIsListed = this.actions.indexOf(action) != -1, - isAllActions = this.inclusionType == INCLUSION_TYPES.ALL, - isQualified = this.inclusionType == INCLUSION_TYPES.ONLY && actionIsListed, - isNotExcepted = this.inclusionType == INCLUSION_TYPES.EXCEPT && !actionIsListed; - - return (isAllActions || isQualified || isNotExcepted); -}; - - -Paloma.Filter.prototype.setProperties = function(type, inclusion, actions){ - this.type = type; - this.inclusionType = inclusion; - this.actions = Array.prototype.slice.call(actions); - return this; -}; - - - - -// Execute callback that corresponds to the controller and action passed. -Paloma.execute = function(controller, action, params){ - var callbackFound = true; - - var callback = Paloma.callbacks[controller]; - callbackFound = callback != undefined; - - if (callbackFound){ - callback = callback[action]; - callbackFound = callback != undefined; - } - - // Parse parameters - params = params || {}; - - // Request details - var requestControllerPath = params['controller_path'].split('/'); - params['controller'] = requestControllerPath.pop(); - params['namespace'] = requestControllerPath.join('/'); - - // Callback details - var callbackControllerPath = controller.split('/'); - params['callback_controller'] = callbackControllerPath.pop(); - params['callback_namespace'] = callbackControllerPath.join('/'); - params['callback_controller_path'] = controller; - params['callback_action'] = action; - - - var beforeFilters = getOrderedFilters( - FILTER_TYPES.BEFORE, - params['callback_namespace'], - controller, - action); - - var afterFilters = getOrderedFilters( - FILTER_TYPES.AFTER, - params['callback_namespace'], - controller, - action); - - // Start filter and callback executions - performFilters(beforeFilters, params); - if (callbackFound){ callback(params); } - performFilters(afterFilters, params); - - // variableContainer is used to share variable between filters and callbacks. - // It will be cleared after it is used. - Paloma.variableContainer = []; -}; - - -var getOrderedFilters = function(beforeOrAfter, namespace, controller, action){ - var filters = [], - applicableFilters = [], - skippers = [], - scopes = [ - Paloma.filterScopes['/'], - Paloma.filterScopes[namespace], - Paloma.filterScopes[controller]]; - - for (var i = 0, n = scopes.length; i < n; i++){ - var scope = scopes[i]; - if (scope == undefined){ continue; } - - var mainFilters = scope.filters[beforeOrAfter], - aroundFilters = scope.filters[FILTER_TYPES.AROUND]; - - // Around Filters have lower precedence than before or after filters. - if (mainFilters != undefined){ filters = filters.concat(mainFilters); } - if (aroundFilters != undefined){ filters = filters.concat(aroundFilters); } - - skippers = skippers.concat( - scope.skippers[beforeOrAfter], - scope.skippers[FILTER_TYPES.AROUND]); - } - - - // Select only applicable filters for the passed action. - for (var i = 0, n = filters.length; i < n; i++){ - var filter = filters[i], - isApplicable = filter.isApplicable(action), - isNotSkipped = true; - - for (var k = 0, len = skippers.length; k < len; k++){ - if ( skippers[k].skip(filter, action) ){ isNotSkipped = false; break;} - } - - if (isApplicable && isNotSkipped){ applicableFilters.push(filter); } - } - - return applicableFilters; -}; - - -var performFilters = function(filters, params){ - for (var i = 0, n = filters.length; i < n; i++){ - filters[i].method(params); - } -}; - - -})(); \ No newline at end of file diff --git a/vendor/assets/javascripts/paloma_core.old.js b/vendor/assets/javascripts/paloma_core.old.js index c0fbeb0..f1f1c94 100644 --- a/vendor/assets/javascripts/paloma_core.old.js +++ b/vendor/assets/javascripts/paloma_core.old.js @@ -1,4 +1,4 @@ -(function(){ +/*(function(){ window.Paloma = { callbacks : {}, filterScopes : {}, @@ -293,4 +293,4 @@ var performFilters = function(filters, params){ }; -})(); \ No newline at end of file +})();*/ \ No newline at end of file