1
YUI.add('photos-common', function (Y, NAME) {
4
var PhotosCommon = Y.Base.create("photos-common", Y.Base, [], {
8
List of queries we want to keep
9
@property queryParameters
24
getQueryString: function () {
27
if(Y.HistoryBase.html5) {
28
query = this.getHTML5QueryString();
30
query = this.getHashQueryString();
35
getHTML5QueryString: function () {
36
return Y.config.win.location.search.replace(/\?/, '');
39
getHashQueryString: function () {
40
return Y.HistoryHash.getHash().replace(/.*\?/, '');
43
getQueryStringAsObject: function (q) {
46
// if we get a string, use it event if it's empty
47
if(typeof q === 'string') {
50
query = this.getQueryString();
53
return Y.QueryString.parse(query) || {};
56
getCleanedQueryObject: function () {
57
var query = this.getQueryStringAsObject(),
60
cleanQuery = this.cleanQueryObjectParameters(query);
65
updateQueryObjectParameter: function (queryObject, parameter, value) {
67
throw new Error('updateQueryObjectParameter: Cannot update queryObject with falsy parameter');
69
queryObject[parameter] = value;
73
updateQueryObjectParameters: function (queryObject, parameters) {
74
return Y.merge(queryObject, parameters);
77
updateQueryParameterAndNavigate: function (queryObject, parameter, value) {
78
var modifiedQueryObject,
81
if(typeof parameter === 'string') {
82
modifiedQueryObject = this.updateQueryObjectParameter(queryObject, parameter, value);
84
modifiedQueryObject = this.updateQueryObjectParameters(queryObject, parameter);
87
path = this.getPath() + '?' + Y.QueryString.stringify(modifiedQueryObject);
94
Poorly named method, but clean means to remove query paramaters that we do not want/need
95
@param {Object} queryObject the object to be cleansed
96
@return {Object} cleanQueryObject a object that has had keys removed by comparing queryObject with this.queryParameters
98
cleanQueryObjectParameters: function (queryObject) {
99
var cleanQueryObject = {};
100
Y.Object.each(queryObject, function (value, key) {
101
if(Y.Array.indexOf(this.queryParameters, key) !== -1) {
102
cleanQueryObject[key] = value;
105
return cleanQueryObject;
108
defaultQueryParameters: {
111
'folder_order': 'last_modified-desc',
112
'photo_order': 'last_modified-desc',
113
'folder_filter': 'my',
114
'folder_cache': true,
119
Reflecting behaviour of photos/common.py
121
If we find a defaultQueryParameter here, remove it
122
We also cast the given value as number if its default equivalent is a number
124
@param {Object} queryObject set of keys to sanitize
125
@param {String|Array} keep string or array of keys to keep
126
@return {Object} sanitizedQueryObject a object with keys that are default removed
128
sanitizeQueryParameters: function (queryObject, keep) {
129
var sanitizedQueryObject = {};
131
// convert string to arr
132
if(keep && typeof keep === 'string') {
136
Y.Object.each(queryObject, function (value, key) {
139
// if we're ignoring key, just add it and quit
140
if(keep && Y.Array.indexOf(keep, key) !== -1) {
141
sanitizedQueryObject[key] = value;
145
// if the default key exist and is a Number, try parseInt
146
if(this.defaultQueryParameters[key]) {
147
defaultValue = this.defaultQueryParameters[key];
149
// if defaultValue is a number
150
if(!isNaN(parseFloat(defaultValue)) && isFinite(defaultValue) ) {
151
value = parseInt(value, 10);
155
// if not key is in default and value is not equal to default key value
156
if( !(this.defaultQueryParameters[key] && this.defaultQueryParameters[key] === value) ) {
157
sanitizedQueryObject[key] = value;
160
return sanitizedQueryObject;
166
Y.namespace('Photos');
167
Y.Photos.PhotosCommon = PhotosCommon;
170
}, '@VERSION@', {"requires": ["base", "history", "querystring"]});