mirror of https://github.com/apache/archiva.git
sammyjs 0.7.2
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1434425 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1daecccbdd
commit
18dfe3a475
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
<script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>
|
<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/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>
|
<script type="text/javascript" data-main="js/archiva/archiva.js" src="js/require.2.1.2.js"></script>
|
||||||
|
|
||||||
<title>Apache Archiva</title>
|
<title>Apache Archiva</title>
|
||||||
|
|
|
@ -78,7 +78,7 @@ $.ajax({
|
||||||
"tmpl": "tmpl.min",
|
"tmpl": "tmpl.min",
|
||||||
"purl": "purl-2.2.1",
|
"purl": "purl-2.2.1",
|
||||||
"prettify": "prettify",
|
"prettify": "prettify",
|
||||||
"sammy": "sammy.0.7.1",
|
"sammy": "sammy.0.7.2",
|
||||||
"select2": "select2.min-3.2",
|
"select2": "select2.min-3.2",
|
||||||
"jqueryFileTree": "jqueryFileTree-1.0.1",
|
"jqueryFileTree": "jqueryFileTree-1.0.1",
|
||||||
"redback": "redback/redback",
|
"redback": "redback/redback",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// name: sammy
|
// name: sammy
|
||||||
// version: 0.7.1
|
// version: 0.7.2
|
||||||
|
|
||||||
// Sammy.js / http://sammyjs.org
|
// Sammy.js / http://sammyjs.org
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
||||||
$.sammy = window.Sammy = factory($);
|
$.sammy = window.Sammy = factory($);
|
||||||
}
|
}
|
||||||
})(function($){
|
})(function($){
|
||||||
|
|
||||||
var Sammy,
|
var Sammy,
|
||||||
PATH_REPLACER = "([^\/]+)",
|
PATH_REPLACER = "([^\/]+)",
|
||||||
PATH_NAME_MATCHER = /:([\w\d]+)/g,
|
PATH_NAME_MATCHER = /:([\w\d]+)/g,
|
||||||
|
@ -30,7 +31,9 @@
|
||||||
return String(s).replace(/&(?!\w+;)/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
return String(s).replace(/&(?!\w+;)/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
||||||
},
|
},
|
||||||
_routeWrapper = function(verb) {
|
_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 = {},
|
_template_cache = {},
|
||||||
_has_history = !!(window.history && history.pushState),
|
_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
|
// Add to the global logger pool. Takes a function that accepts an
|
||||||
// unknown number of arguments and should print them or send them somewhere
|
// 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.
|
// 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
|
// 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
|
// of a location proxy is to notify the Sammy.Application its bound to when the location
|
||||||
|
@ -262,6 +276,7 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
if (proxy.is_native === false && !non_native) {
|
if (proxy.is_native === false && !non_native) {
|
||||||
proxy.is_native = true;
|
proxy.is_native = true;
|
||||||
window.clearInterval(lp._interval);
|
window.clearInterval(lp._interval);
|
||||||
|
lp._interval = null;
|
||||||
}
|
}
|
||||||
app.trigger('location-changed');
|
app.trigger('location-changed');
|
||||||
});
|
});
|
||||||
|
@ -271,14 +286,14 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
app.trigger('location-changed');
|
app.trigger('location-changed');
|
||||||
});
|
});
|
||||||
// bind to link clicks that have routes
|
// bind to link clicks that have routes
|
||||||
$('a').live('click.history-' + this.app.eventNamespace(), function(e) {
|
$(document).delegate('a', 'click.history-' + this.app.eventNamespace(), function (e) {
|
||||||
if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) {
|
if (e.isDefaultPrevented() || e.metaKey || e.ctrlKey) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var full_path = lp.fullPath(this);
|
var full_path = lp.fullPath(this);
|
||||||
if (this.hostname == window.location.hostname &&
|
if (this.hostname == window.location.hostname &&
|
||||||
app.lookupRoute('get', full_path) &&
|
app.lookupRoute('get', full_path) &&
|
||||||
this.target !== '_blank') {
|
Sammy.targetIsThisWindow(e)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
proxy.setLocation(full_path);
|
proxy.setLocation(full_path);
|
||||||
return false;
|
return false;
|
||||||
|
@ -295,10 +310,11 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
unbind: function() {
|
unbind: function() {
|
||||||
$(window).unbind('hashchange.' + this.app.eventNamespace());
|
$(window).unbind('hashchange.' + this.app.eventNamespace());
|
||||||
$(window).unbind('popstate.' + 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--;
|
Sammy.DefaultLocationProxy._bindings--;
|
||||||
if (Sammy.DefaultLocationProxy._bindings <= 0) {
|
if (Sammy.DefaultLocationProxy._bindings <= 0) {
|
||||||
window.clearInterval(Sammy.DefaultLocationProxy._interval);
|
window.clearInterval(Sammy.DefaultLocationProxy._interval);
|
||||||
|
Sammy.DefaultLocationProxy._interval = null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -546,14 +562,14 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
// It is also possible to pass a string as the callback, which is looked up as the name
|
// It is also possible to pass a string as the callback, which is looked up as the name
|
||||||
// of a method on the application.
|
// of a method on the application.
|
||||||
//
|
//
|
||||||
route: function(verb, path, callback) {
|
route: function(verb, path) {
|
||||||
var app = this, param_names = [], add_route, path_match;
|
var app = this, param_names = [], add_route, path_match, callback = Array.prototype.slice.call(arguments,2);
|
||||||
|
|
||||||
// if the method signature is just (path, callback)
|
// if the method signature is just (path, callback)
|
||||||
// assume the verb is 'any'
|
// assume the verb is 'any'
|
||||||
if (!callback && _isFunction(path)) {
|
if (callback.length === 0 && _isFunction(path)) {
|
||||||
path = verb;
|
path = verb;
|
||||||
callback = path;
|
callback = [path];
|
||||||
verb = 'any';
|
verb = 'any';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -574,10 +590,12 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
// replace with the path replacement
|
// replace with the path replacement
|
||||||
path = new RegExp(path.replace(PATH_NAME_MATCHER, PATH_REPLACER) + "$");
|
path = new RegExp(path.replace(PATH_NAME_MATCHER, PATH_REPLACER) + "$");
|
||||||
}
|
}
|
||||||
// lookup callback
|
// lookup callbacks
|
||||||
if (typeof callback == 'string') {
|
$.each(callback,function(i,cb){
|
||||||
callback = app[callback];
|
if (typeof(cb) === 'string') {
|
||||||
|
callback[i] = app[cb];
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
add_route = function(with_verb) {
|
add_route = function(with_verb) {
|
||||||
var r = {verb: with_verb, path: path, callback: callback, param_names: param_names};
|
var r = {verb: with_verb, path: path, callback: callback, param_names: param_names};
|
||||||
|
@ -799,6 +817,58 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
return this;
|
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.
|
// Returns `true` if the current application is running.
|
||||||
isRunning: function() {
|
isRunning: function() {
|
||||||
return this._running;
|
return this._running;
|
||||||
|
@ -906,6 +976,7 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
|
|
||||||
// bind to submit to capture post/put/delete routes
|
// bind to submit to capture post/put/delete routes
|
||||||
this.bind('submit', function(e) {
|
this.bind('submit', function(e) {
|
||||||
|
if ( !Sammy.targetIsThisWindow(e) ) { return true; }
|
||||||
var returned = app._checkFormSubmission($(e.target).closest('form'));
|
var returned = app._checkFormSubmission($(e.target).closest('form'));
|
||||||
return (returned === false) ? e.preventDefault() : false;
|
return (returned === false) ? e.preventDefault() : false;
|
||||||
});
|
});
|
||||||
|
@ -940,6 +1011,13 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
return this;
|
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
|
// Will bind a single callback function to every event that is already
|
||||||
// being listened to in the app. This includes all the `APP_EVENTS`
|
// being listened to in the app. This includes all the `APP_EVENTS`
|
||||||
// as well as any custom events defined with `bind()`.
|
// as well as any custom events defined with `bind()`.
|
||||||
|
@ -1015,7 +1093,10 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
path_params,
|
path_params,
|
||||||
final_returned;
|
final_returned;
|
||||||
|
|
||||||
|
if (this.debug) {
|
||||||
this.log('runRoute', [verb, path].join(' '));
|
this.log('runRoute', [verb, path].join(' '));
|
||||||
|
}
|
||||||
|
|
||||||
this.trigger('run-route', {verb: verb, path: path, params: params});
|
this.trigger('run-route', {verb: verb, path: path, params: params});
|
||||||
if (typeof params == 'undefined') { params = {}; }
|
if (typeof params == 'undefined') { params = {}; }
|
||||||
|
|
||||||
|
@ -1047,10 +1128,13 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
arounds = this.arounds.slice(0);
|
arounds = this.arounds.slice(0);
|
||||||
befores = this.befores.slice(0);
|
befores = this.befores.slice(0);
|
||||||
// set the callback args to the context + contents of the splat
|
// 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
|
// wrap the route up with the before filters
|
||||||
wrapped_route = function() {
|
wrapped_route = function() {
|
||||||
var returned;
|
var returned, i, nextRoute;
|
||||||
while (befores.length > 0) {
|
while (befores.length > 0) {
|
||||||
before = befores.shift();
|
before = befores.shift();
|
||||||
// check the options
|
// check the options
|
||||||
|
@ -1061,7 +1145,23 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
}
|
}
|
||||||
app.last_route = route;
|
app.last_route = route;
|
||||||
context.trigger('event-context-before', {context: context});
|
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});
|
context.trigger('event-context-after', {context: context});
|
||||||
return returned;
|
return returned;
|
||||||
};
|
};
|
||||||
|
@ -1134,9 +1234,9 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
}
|
}
|
||||||
// Do we have to match against multiple paths?
|
// Do we have to match against multiple paths?
|
||||||
if (_isArray(options.path)){
|
if (_isArray(options.path)){
|
||||||
var results, numopt, opts;
|
var results, numopt, opts, len;
|
||||||
results = [];
|
results = [];
|
||||||
for (numopt in options.path){
|
for (numopt = 0, len = options.path.length; numopt < len; numopt += 1) {
|
||||||
opts = $.extend({}, options, {path: options.path[numopt]});
|
opts = $.extend({}, options, {path: options.path[numopt]});
|
||||||
results.push(this.contextMatchesOptions(context, opts));
|
results.push(this.contextMatchesOptions(context, opts));
|
||||||
}
|
}
|
||||||
|
@ -1225,7 +1325,7 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
|
|
||||||
// clear the templateCache
|
// clear the templateCache
|
||||||
clearTemplateCache: function() {
|
clearTemplateCache: function() {
|
||||||
return _template_cache = {};
|
return (_template_cache = {});
|
||||||
},
|
},
|
||||||
|
|
||||||
// This throws a '404 Not Found' error by invoking `error()`.
|
// This throws a '404 Not Found' error by invoking `error()`.
|
||||||
|
@ -1272,7 +1372,7 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
$_method = $form.find('input[name="_method"]');
|
$_method = $form.find('input[name="_method"]');
|
||||||
if ($_method.length > 0) { verb = $_method.val(); }
|
if ($_method.length > 0) { verb = $_method.val(); }
|
||||||
if (!verb) { verb = $form[0].getAttribute('method'); }
|
if (!verb) { verb = $form[0].getAttribute('method'); }
|
||||||
if (!verb || verb == '') { verb = 'get'; }
|
if (!verb || verb === '') { verb = 'get'; }
|
||||||
return $.trim(verb.toString().toLowerCase());
|
return $.trim(verb.toString().toLowerCase());
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1282,7 +1382,11 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
$form = $(form);
|
$form = $(form);
|
||||||
path = $form.attr('action') || '';
|
path = $form.attr('action') || '';
|
||||||
verb = this._getFormVerb($form);
|
verb = this._getFormVerb($form);
|
||||||
|
|
||||||
|
if (this.debug) {
|
||||||
this.log('_checkFormSubmission', $form, path, verb);
|
this.log('_checkFormSubmission', $form, path, verb);
|
||||||
|
}
|
||||||
|
|
||||||
if (verb === 'get') {
|
if (verb === 'get') {
|
||||||
params = this._serializeFormParams($form);
|
params = this._serializeFormParams($form);
|
||||||
if (params !== '') { path += '?' + params; }
|
if (params !== '') { path += '?' + params; }
|
||||||
|
@ -1712,13 +1816,21 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
if (callback) {
|
if (callback) {
|
||||||
$.each(data, function(i, value) {
|
$.each(data, function(i, value) {
|
||||||
var idata = {}, engine = this.next_engine || location;
|
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));
|
callback(value, rctx.event_context.interpolate(content, idata, engine));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return this.collect(data, function(i, value) {
|
return this.collect(data, function(i, value) {
|
||||||
var idata = {}, engine = this.next_engine || location;
|
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);
|
return this.event_context.interpolate(content, idata, engine);
|
||||||
}, true);
|
}, true);
|
||||||
}
|
}
|
||||||
|
@ -1908,6 +2020,11 @@ $.extend(Sammy.DefaultLocationProxy.prototype , {
|
||||||
return new Sammy.RenderContext(this).load(location, options, callback);
|
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
|
// `render()` the `location` with `data` and then `swap()` the
|
||||||
// app's `$element` with the rendered content.
|
// app's `$element` with the rendered content.
|
||||||
partial: function(location, data, callback, partials) {
|
partial: function(location, data, callback, partials) {
|
Loading…
Reference in New Issue