[repoapi] fold ClientConnection into Connection
Connection replaces ClientConnection everywhere.
Some notes:
* testlib: .client_cnx and .repo_cnx become aliases of .cnx (we might
not want to tell people to update their tests again for just no real
benefit, so we'll live with these aliases for a while)
* entity.as_rset must not be cached because we risk caching result
sets having a Connection object as .req (helps unittest_breadcrumbs)
* entity._cw_dont_cache_attributes loses its repo/request special
paths and only keeps its storage/bfss user (this helps
unittest_wfobjs)
* moreover, entity.cw_instantiate and .cw_set stop overriding the
attributes cache *after* the before_*_entity hooks have run, because
there is no need to (it is now actually harmful to do it and
unittest_hooks.test_html_tidy* tests remain green because of this)
* rset._build_entity sticks its .req onto the entity just fetched from
the cache, because otherwise it might carry a _cw that is a
Connection object where a Request is expected (helps
unittest_views_actions)
* we get overall better cache usages (entity caches were split over
Request + ClientConnection and Connection), hence the changes
unittest_entity and unittest_wfobjs
* void the ecache when providing the cnx to a request object
Having the entity cache pre-filled when we bind it to the request
object hurts because these entities are bound to Connection objects,
that lack e.g. `.form` or `.add_js` and crash the views subsystem.
Thus, the unittest_testlib.test_error_raised test will are kept
green.
Closes #3837233
/**
* jQuery Cookie plugin
*
* Copyright (c) 2010 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
jQuery.cookie = function (key, value, options) {
// key and at least value given, set cookie...
if (arguments.length > 1 && String(value) !== "[object Object]") {
options = jQuery.extend({}, options);
if (value === null || value === undefined) {
options.expires = -1;
}
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setDate(t.getDate() + days);
}
value = String(value);
return (document.cookie = [
encodeURIComponent(key), '=',
options.raw ? value : encodeURIComponent(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// key and possibly options given, get cookie...
options = value || {};
var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};