Author: olamy
Date: Wed Jan 16 21:49:17 2013
New Revision: 1434425
URL: http://svn.apache.org/viewvc?rev=1434425&view=rev
Log:
sammyjs 0.7.2
Added:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js
(contents, props changed)
- copied, changed from r1434424,
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.1.js
Removed:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.1.js
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.html
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.html
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.html?rev=1434425&r1=1434424&r2=1434425&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.html
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/index.html
Wed Jan 16 21:49:17 2013
@@ -33,7 +33,7 @@
<script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>
<script type="text/javascript"
src="js/jquery-ui-1.9.2.custom.min.js"></script>
- <script type="text/javascript" src="js/sammy.0.7.1.js"></script>
+ <script type="text/javascript" src="js/sammy.0.7.2.js"></script>
<script type="text/javascript" data-main="js/archiva/archiva.js"
src="js/require.2.1.2.js"></script>
<title>Apache Archiva</title>
Modified:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js?rev=1434425&r1=1434424&r2=1434425&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/archiva/archiva.js
Wed Jan 16 21:49:17 2013
@@ -78,7 +78,7 @@ $.ajax({
"tmpl": "tmpl.min",
"purl": "purl-2.2.1",
"prettify": "prettify",
- "sammy": "sammy.0.7.1",
+ "sammy": "sammy.0.7.2",
"select2": "select2.min-3.2",
"jqueryFileTree": "jqueryFileTree-1.0.1",
"redback": "redback/redback",
Copied:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js
(from r1434424,
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.1.js)
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js?p2=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js&p1=archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.1.js&r1=1434424&r2=1434425&rev=1434425&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.1.js
(original)
+++
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js
Wed Jan 16 21:49:17 2013
@@ -1,5 +1,5 @@
// name: sammy
-// version: 0.7.1
+// version: 0.7.2
// Sammy.js / http://sammyjs.org
@@ -14,6 +14,7 @@
$.sammy = window.Sammy = factory($);
}
})(function($){
+
var Sammy,
PATH_REPLACER = "([^\/]+)",
PATH_NAME_MATCHER = /:([\w\d]+)/g,
@@ -30,7 +31,9 @@
return String(s).replace(/&(?!\w+;)/g, '&').replace(/</g,
'<').replace(/>/g, '>').replace(/"/g, '"');
},
_routeWrapper = function(verb) {
- return function(path, callback) { return this.route.apply(this, [verb,
path, callback]); };
+ return function() {
+ return this.route.apply(this,
[verb].concat(Array.prototype.slice.call(arguments)));
+ };
},
_template_cache = {},
_has_history = !!(window.history && history.pushState),
@@ -84,7 +87,7 @@
}
};
- Sammy.VERSION = '0.7.1';
+ Sammy.VERSION = '0.7.2';
// Add to the global logger pool. Takes a function that accepts an
// unknown number of arguments and should print them or send them somewhere
@@ -212,6 +215,17 @@
}
});
+
+ // Return whether the event targets this window.
+ Sammy.targetIsThisWindow = function targetIsThisWindow(event) {
+ var targetWindow = $(event.target).attr('target');
+ if ( targetWindow === '_blank' ) { return false; }
+ if ( targetWindow == null || targetWindow === window.name || targetWindow
=== '_self' ) { return true; }
+ if ( targetWindow === 'top' && window === window.top ) { return true; }
+ return false;
+ }
+
+
// The DefaultLocationProxy is the default location proxy for all Sammy
applications.
// A location proxy is a prototype that conforms to a simple interface. The
purpose
// of a location proxy is to notify the Sammy.Application its bound to when
the location
@@ -262,6 +276,7 @@ $.extend(Sammy.DefaultLocationProxy.prot
if (proxy.is_native === false && !non_native) {
proxy.is_native = true;
window.clearInterval(lp._interval);
+ lp._interval = null;
}
app.trigger('location-changed');
});
@@ -271,14 +286,14 @@ $.extend(Sammy.DefaultLocationProxy.prot
app.trigger('location-changed');
});
// bind to link clicks that have routes
- $('a').live('click.history-' + this.app.eventNamespace(), function(e) {
- if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) {
+ $(document).delegate('a', 'click.history-' +
this.app.eventNamespace(), function (e) {
+ if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) {
return;
}
var full_path = lp.fullPath(this);
if (this.hostname == window.location.hostname &&
app.lookupRoute('get', full_path) &&
- this.target !== '_blank') {
+ Sammy.targetIsThisWindow(e)) {
e.preventDefault();
proxy.setLocation(full_path);
return false;
@@ -295,10 +310,11 @@ $.extend(Sammy.DefaultLocationProxy.prot
unbind: function() {
$(window).unbind('hashchange.' + this.app.eventNamespace());
$(window).unbind('popstate.' + this.app.eventNamespace());
- $('a').die('click.history-' + this.app.eventNamespace());
+ $(document).undelegate('a', 'click.history-' +
this.app.eventNamespace());
Sammy.DefaultLocationProxy._bindings--;
if (Sammy.DefaultLocationProxy._bindings <= 0) {
window.clearInterval(Sammy.DefaultLocationProxy._interval);
+ Sammy.DefaultLocationProxy._interval = null;
}
},
@@ -523,7 +539,7 @@ $.extend(Sammy.DefaultLocationProxy.prot
}
},
- // provide log() override for inside an app that includes the relevant
application element_selector
+ // provide log() override for inside an app that includes the relevant
application element_selector
log: function() {
Sammy.log.apply(Sammy,
Array.prototype.concat.apply([this.element_selector],arguments));
},
@@ -546,14 +562,14 @@ $.extend(Sammy.DefaultLocationProxy.prot
// It is also possible to pass a string as the callback, which is
looked up as the name
// of a method on the application.
//
- route: function(verb, path, callback) {
- var app = this, param_names = [], add_route, path_match;
+ route: function(verb, path) {
+ var app = this, param_names = [], add_route, path_match, callback =
Array.prototype.slice.call(arguments,2);
// if the method signature is just (path, callback)
// assume the verb is 'any'
- if (!callback && _isFunction(path)) {
+ if (callback.length === 0 && _isFunction(path)) {
path = verb;
- callback = path;
+ callback = [path];
verb = 'any';
}
@@ -574,10 +590,12 @@ $.extend(Sammy.DefaultLocationProxy.prot
// replace with the path replacement
path = new RegExp(path.replace(PATH_NAME_MATCHER, PATH_REPLACER) +
"$");
}
- // lookup callback
- if (typeof callback == 'string') {
- callback = app[callback];
- }
+ // lookup callbacks
+ $.each(callback,function(i,cb){
+ if (typeof(cb) === 'string') {
+ callback[i] = app[cb];
+ }
+ });
add_route = function(with_verb) {
var r = {verb: with_verb, path: path, callback: callback, param_names:
param_names};
@@ -799,6 +817,58 @@ $.extend(Sammy.DefaultLocationProxy.prot
return this;
},
+ // Adds a onComplete function to the application. onComplete functions are
executed
+ // at the end of a chain of route callbacks, if they call
next(). Unlike after,
+ // which is called as soon as the route is complete, onComplete
is like a final next()
+ // for all routes, and is thus run asynchronously
+ //
+ // ### Example
+ //
+ // app.get('/chain',function(context,next){
+ // console.log('chain1');
+ // next();
+ // },function(context,next){
+ // console.log('chain2');
+ // next();
+ // });
+ // app.get('/link',function(context,next){
+ // console.log('link1');
+ // next();
+ // },function(context,next){
+ // console.log('link2');
+ // next();
+ // });
+ // app.onComplete(function(){
+ // console.log("Running finally")
+ // });
+ //
+ // If you go to '/chain', you will get the following messages:
+ // chain1
+ // chain2
+ // Running onComplete
+ //
+ //
+ // If you go to /link, you will get the following messages:
+ // link1
+ // link2
+ // Running onComplete
+ //
+ // It really comes to play when doing asynchronous:
+ // app.get('/chain',function(context,next){
+ // $.get('/my/url',function(){
+ // console.log('chain1');
+ // next();
+ // })
+ // },function(context,next){
+ // console.log('chain2');
+ // next();
+ // });
+ //
+ onComplete: function(callback) {
+ this._onComplete = callback;
+ return this;
+ },
+
// Returns `true` if the current application is running.
isRunning: function() {
return this._running;
@@ -906,6 +976,7 @@ $.extend(Sammy.DefaultLocationProxy.prot
// bind to submit to capture post/put/delete routes
this.bind('submit', function(e) {
+ if ( !Sammy.targetIsThisWindow(e) ) { return true; }
var returned = app._checkFormSubmission($(e.target).closest('form'));
return (returned === false) ? e.preventDefault() : false;
});
@@ -940,6 +1011,13 @@ $.extend(Sammy.DefaultLocationProxy.prot
return this;
},
+ // Not only runs `unbind` but also destroys the app reference.
+ destroy: function() {
+ this.unload();
+ delete Sammy.apps[this.element_selector];
+ return this;
+ },
+
// Will bind a single callback function to every event that is already
// being listened to in the app. This includes all the `APP_EVENTS`
// as well as any custom events defined with `bind()`.
@@ -1015,7 +1093,10 @@ $.extend(Sammy.DefaultLocationProxy.prot
path_params,
final_returned;
- this.log('runRoute', [verb, path].join(' '));
+ if (this.debug) {
+ this.log('runRoute', [verb, path].join(' '));
+ }
+
this.trigger('run-route', {verb: verb, path: path, params: params});
if (typeof params == 'undefined') { params = {}; }
@@ -1047,10 +1128,13 @@ $.extend(Sammy.DefaultLocationProxy.prot
arounds = this.arounds.slice(0);
befores = this.befores.slice(0);
// set the callback args to the context + contents of the splat
- callback_args = [context].concat(params.splat);
+ callback_args = [context];
+ if (params.splat) {
+ callback_args =
callback_args.concat(params.splat);
+ }
// wrap the route up with the before filters
wrapped_route = function() {
- var returned;
+ var returned, i, nextRoute;
while (befores.length > 0) {
before = befores.shift();
// check the options
@@ -1061,7 +1145,23 @@ $.extend(Sammy.DefaultLocationProxy.prot
}
app.last_route = route;
context.trigger('event-context-before', {context: context});
- returned = route.callback.apply(context, callback_args);
+ // run multiple callbacks
+ if (typeof(route.callback) ===
"function") {
+ route.callback =
[route.callback];
+ }
+ if (route.callback &&
route.callback.length) {
+ i = -1;
+ nextRoute = function() {
+ i++;
+ if (route.callback[i]) {
+ returned =
route.callback[i].apply(context,callback_args);
+ } else if
(app._onComplete && typeof(app._onComplete === "function")) {
+
app._onComplete(context);
+ }
+ };
+ callback_args.push(nextRoute);
+ nextRoute();
+ }
context.trigger('event-context-after', {context: context});
return returned;
};
@@ -1134,9 +1234,9 @@ $.extend(Sammy.DefaultLocationProxy.prot
}
// Do we have to match against multiple paths?
if (_isArray(options.path)){
- var results, numopt, opts;
+ var results, numopt, opts, len;
results = [];
- for (numopt in options.path){
+ for (numopt = 0, len = options.path.length; numopt < len; numopt += 1)
{
opts = $.extend({}, options, {path: options.path[numopt]});
results.push(this.contextMatchesOptions(context, opts));
}
@@ -1225,7 +1325,7 @@ $.extend(Sammy.DefaultLocationProxy.prot
// clear the templateCache
clearTemplateCache: function() {
- return _template_cache = {};
+ return (_template_cache = {});
},
// This throws a '404 Not Found' error by invoking `error()`.
@@ -1272,7 +1372,7 @@ $.extend(Sammy.DefaultLocationProxy.prot
$_method = $form.find('input[name="_method"]');
if ($_method.length > 0) { verb = $_method.val(); }
if (!verb) { verb = $form[0].getAttribute('method'); }
- if (!verb || verb == '') { verb = 'get'; }
+ if (!verb || verb === '') { verb = 'get'; }
return $.trim(verb.toString().toLowerCase());
},
@@ -1282,7 +1382,11 @@ $.extend(Sammy.DefaultLocationProxy.prot
$form = $(form);
path = $form.attr('action') || '';
verb = this._getFormVerb($form);
- this.log('_checkFormSubmission', $form, path, verb);
+
+ if (this.debug) {
+ this.log('_checkFormSubmission', $form, path, verb);
+ }
+
if (verb === 'get') {
params = this._serializeFormParams($form);
if (params !== '') { path += '?' + params; }
@@ -1712,13 +1816,21 @@ $.extend(Sammy.DefaultLocationProxy.prot
if (callback) {
$.each(data, function(i, value) {
var idata = {}, engine = this.next_engine || location;
- name ? (idata[name] = value) : (idata = value);
+ if (name) {
+ idata[name] = value;
+ } else {
+ idata = value;
+ }
callback(value, rctx.event_context.interpolate(content, idata,
engine));
});
} else {
return this.collect(data, function(i, value) {
var idata = {}, engine = this.next_engine || location;
- name ? (idata[name] = value) : (idata = value);
+ if (name) {
+ idata[name] = value;
+ } else {
+ idata = value;
+ }
return this.event_context.interpolate(content, idata, engine);
}, true);
}
@@ -1908,6 +2020,11 @@ $.extend(Sammy.DefaultLocationProxy.prot
return new Sammy.RenderContext(this).load(location, options, callback);
},
+ // create a new `Sammy.RenderContext` calling `loadPartials()` with
`partials`.
+ loadPartials: function(partials) {
+ return new Sammy.RenderContext(this).loadPartials(partials);
+ },
+
// `render()` the `location` with `data` and then `swap()` the
// app's `$element` with the rendered content.
partial: function(location, data, callback, partials) {
@@ -2000,4 +2117,4 @@ $.extend(Sammy.DefaultLocationProxy.prot
return Sammy;
});
-})(jQuery, window);
+})(jQuery, window);
\ No newline at end of file
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/js/sammy.0.7.2.js
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision