diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js index 3ec9258f98..2073307db9 100644 --- a/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js +++ b/src/Umbraco.Web.UI.Client/src/common/resources/member.resource.js @@ -5,231 +5,245 @@ **/ function memberResource($q, $http, umbDataFormatter, umbRequestHelper) { - /** internal method process the saving of data and post processing the result */ - function saveMember(content, action, files) { + /** internal method process the saving of data and post processing the result */ + function saveMember(content, action, files) { - return umbRequestHelper.postSaveContent({ - restApiUrl: umbRequestHelper.getApiUrl( - "memberApiBaseUrl", - "PostSave"), - content: content, - action: action, - files: files, - dataFormatter: function (c, a) { - return umbDataFormatter.formatMemberPostData(c, a); - } - }); - } + return umbRequestHelper.postSaveContent({ + restApiUrl: umbRequestHelper.getApiUrl( + "memberApiBaseUrl", + "PostSave"), + content: content, + action: action, + files: files, + dataFormatter: function (c, a) { + return umbDataFormatter.formatMemberPostData(c, a); + } + }); + } - return { + return { - getPagedResults: function (memberTypeAlias, options) { + getPagedResults: function (memberTypeAlias, options) { - if (memberTypeAlias === 'all-members') { - memberTypeAlias = null; - } + if (memberTypeAlias === 'all-members') { + memberTypeAlias = null; + } - var defaults = { - pageSize: 25, - pageNumber: 1, - filter: '', - orderDirection: "Ascending", - orderBy: "LoginName", - orderBySystemField: true - }; - if (options === undefined) { - options = {}; - } - //overwrite the defaults if there are any specified - angular.extend(defaults, options); - //now copy back to the options we will use - options = defaults; - //change asc/desct - if (options.orderDirection === "asc") { - options.orderDirection = "Ascending"; - } - else if (options.orderDirection === "desc") { - options.orderDirection = "Descending"; - } + var defaults = { + pageSize: 25, + pageNumber: 1, + filter: '', + orderDirection: "Ascending", + orderBy: "LoginName", + orderBySystemField: true + }; + if (options === undefined) { + options = {}; + } + //overwrite the defaults if there are any specified + angular.extend(defaults, options); + //now copy back to the options we will use + options = defaults; + //change asc/desct + if (options.orderDirection === "asc") { + options.orderDirection = "Ascending"; + } + else if (options.orderDirection === "desc") { + options.orderDirection = "Descending"; + } - var params = [ - { pageNumber: options.pageNumber }, - { pageSize: options.pageSize }, - { orderBy: options.orderBy }, - { orderDirection: options.orderDirection }, - { orderBySystemField: options.orderBySystemField }, - { filter: options.filter } - ]; - if (memberTypeAlias != null) { - params.push({ memberTypeAlias: memberTypeAlias }); - } + //converts the value to a js bool + function toBool(v) { + if (angular.isNumber(v)) { + return v > 0; + } + if (angular.isString(v)) { + return v === "true"; + } + if (typeof v === "boolean") { + return v; + } + return false; + } - return umbRequestHelper.resourcePromise( - $http.get( - umbRequestHelper.getApiUrl( - "memberApiBaseUrl", - "GetPagedResults", - params)), - 'Failed to retrieve member paged result'); - }, + var params = [ + { pageNumber: options.pageNumber }, + { pageSize: options.pageSize }, + { orderBy: options.orderBy }, + { orderDirection: options.orderDirection }, + { orderBySystemField: toBool(options.orderBySystemField) }, + { filter: options.filter } + ]; + if (memberTypeAlias != null) { + params.push({ memberTypeAlias: memberTypeAlias }); + } - getListNode: function (listName) { - - return umbRequestHelper.resourcePromise( - $http.get( - umbRequestHelper.getApiUrl( - "memberApiBaseUrl", - "GetListNodeDisplay", - [{ listName: listName }])), - 'Failed to retrieve data for member list ' + listName); - }, - - /** - * @ngdoc method - * @name umbraco.resources.memberResource#getByKey - * @methodOf umbraco.resources.memberResource - * - * @description - * Gets a member item with a given key - * - * ##usage - *
- * memberResource.getByKey("0000-0000-000-00000-000")
- * .then(function(member) {
- * var mymember = member;
- * alert('its here!');
- * });
- *
- *
- * @param {Guid} key key of member item to return
- * @returns {Promise} resourcePromise object containing the member item.
- *
- */
- getByKey: function (key) {
-
- return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "memberApiBaseUrl",
- "GetByKey",
- [{ key: key }])),
- 'Failed to retrieve data for member id ' + key);
- },
-
- /**
- * @ngdoc method
- * @name umbraco.resources.memberResource#deleteByKey
- * @methodOf umbraco.resources.memberResource
- *
- * @description
- * Deletes a member item with a given key
- *
- * ##usage
- *
- * memberResource.deleteByKey("0000-0000-000-00000-000")
- * .then(function() {
- * alert('its gone!');
- * });
- *
- *
- * @param {Guid} key id of member item to delete
- * @returns {Promise} resourcePromise object.
- *
- */
- deleteByKey: function (key) {
- return umbRequestHelper.resourcePromise(
- $http.post(
- umbRequestHelper.getApiUrl(
- "memberApiBaseUrl",
- "DeleteByKey",
- [{ key: key }])),
- 'Failed to delete item ' + key);
- },
-
- /**
- * @ngdoc method
- * @name umbraco.resources.memberResource#getScaffold
- * @methodOf umbraco.resources.memberResource
- *
- * @description
- * Returns a scaffold of an empty member item, given the id of the member item to place it underneath and the member type alias.
- *
- * - Member Type alias must be provided so umbraco knows which properties to put on the member scaffold
- *
- * The scaffold is used to build editors for member that has not yet been populated with data.
- *
- * ##usage
- *
- * memberResource.getScaffold('client')
- * .then(function(scaffold) {
- * var myDoc = scaffold;
- * myDoc.name = "My new member item";
- *
- * memberResource.save(myDoc, true)
- * .then(function(member){
- * alert("Retrieved, updated and saved again");
- * });
- * });
- *
- *
- * @param {String} alias membertype alias to base the scaffold on
- * @returns {Promise} resourcePromise object containing the member scaffold.
- *
- */
- getScaffold: function (alias) {
-
- if (alias) {
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "memberApiBaseUrl",
- "GetEmpty",
- [{ contentTypeAlias: alias }])),
- 'Failed to retrieve data for empty member item type ' + alias);
- }
- else {
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "memberApiBaseUrl",
+ "GetPagedResults",
+ params)),
+ 'Failed to retrieve member paged result');
+ },
+
+ getListNode: function (listName) {
+
return umbRequestHelper.resourcePromise(
- $http.get(
- umbRequestHelper.getApiUrl(
- "memberApiBaseUrl",
- "GetEmpty")),
- 'Failed to retrieve data for empty member item type ' + alias);
- }
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "memberApiBaseUrl",
+ "GetListNodeDisplay",
+ [{ listName: listName }])),
+ 'Failed to retrieve data for member list ' + listName);
+ },
- },
+ /**
+ * @ngdoc method
+ * @name umbraco.resources.memberResource#getByKey
+ * @methodOf umbraco.resources.memberResource
+ *
+ * @description
+ * Gets a member item with a given key
+ *
+ * ##usage
+ *
+ * memberResource.getByKey("0000-0000-000-00000-000")
+ * .then(function(member) {
+ * var mymember = member;
+ * alert('its here!');
+ * });
+ *
+ *
+ * @param {Guid} key key of member item to return
+ * @returns {Promise} resourcePromise object containing the member item.
+ *
+ */
+ getByKey: function (key) {
- /**
- * @ngdoc method
- * @name umbraco.resources.memberResource#save
- * @methodOf umbraco.resources.memberResource
- *
- * @description
- * Saves changes made to a member, if the member is new, the isNew paramater must be passed to force creation
- * if the member needs to have files attached, they must be provided as the files param and passed separately
- *
- *
- * ##usage
- *
- * memberResource.getBykey("23234-sd8djsd-3h8d3j-sdh8d")
- * .then(function(member) {
- * member.name = "Bob";
- * memberResource.save(member, false)
- * .then(function(member){
- * alert("Retrieved, updated and saved again");
- * });
- * });
- *
- *
- * @param {Object} media The member item object with changes applied
- * @param {Bool} isNew set to true to create a new item or to update an existing
- * @param {Array} files collection of files for the media item
- * @returns {Promise} resourcePromise object containing the saved media item.
- *
- */
- save: function (member, isNew, files) {
- return saveMember(member, "save" + (isNew ? "New" : ""), files);
- }
- };
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "memberApiBaseUrl",
+ "GetByKey",
+ [{ key: key }])),
+ 'Failed to retrieve data for member id ' + key);
+ },
+
+ /**
+ * @ngdoc method
+ * @name umbraco.resources.memberResource#deleteByKey
+ * @methodOf umbraco.resources.memberResource
+ *
+ * @description
+ * Deletes a member item with a given key
+ *
+ * ##usage
+ *
+ * memberResource.deleteByKey("0000-0000-000-00000-000")
+ * .then(function() {
+ * alert('its gone!');
+ * });
+ *
+ *
+ * @param {Guid} key id of member item to delete
+ * @returns {Promise} resourcePromise object.
+ *
+ */
+ deleteByKey: function (key) {
+ return umbRequestHelper.resourcePromise(
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "memberApiBaseUrl",
+ "DeleteByKey",
+ [{ key: key }])),
+ 'Failed to delete item ' + key);
+ },
+
+ /**
+ * @ngdoc method
+ * @name umbraco.resources.memberResource#getScaffold
+ * @methodOf umbraco.resources.memberResource
+ *
+ * @description
+ * Returns a scaffold of an empty member item, given the id of the member item to place it underneath and the member type alias.
+ *
+ * - Member Type alias must be provided so umbraco knows which properties to put on the member scaffold
+ *
+ * The scaffold is used to build editors for member that has not yet been populated with data.
+ *
+ * ##usage
+ *
+ * memberResource.getScaffold('client')
+ * .then(function(scaffold) {
+ * var myDoc = scaffold;
+ * myDoc.name = "My new member item";
+ *
+ * memberResource.save(myDoc, true)
+ * .then(function(member){
+ * alert("Retrieved, updated and saved again");
+ * });
+ * });
+ *
+ *
+ * @param {String} alias membertype alias to base the scaffold on
+ * @returns {Promise} resourcePromise object containing the member scaffold.
+ *
+ */
+ getScaffold: function (alias) {
+
+ if (alias) {
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "memberApiBaseUrl",
+ "GetEmpty",
+ [{ contentTypeAlias: alias }])),
+ 'Failed to retrieve data for empty member item type ' + alias);
+ }
+ else {
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "memberApiBaseUrl",
+ "GetEmpty")),
+ 'Failed to retrieve data for empty member item type ' + alias);
+ }
+
+ },
+
+ /**
+ * @ngdoc method
+ * @name umbraco.resources.memberResource#save
+ * @methodOf umbraco.resources.memberResource
+ *
+ * @description
+ * Saves changes made to a member, if the member is new, the isNew paramater must be passed to force creation
+ * if the member needs to have files attached, they must be provided as the files param and passed separately
+ *
+ *
+ * ##usage
+ *
+ * memberResource.getBykey("23234-sd8djsd-3h8d3j-sdh8d")
+ * .then(function(member) {
+ * member.name = "Bob";
+ * memberResource.save(member, false)
+ * .then(function(member){
+ * alert("Retrieved, updated and saved again");
+ * });
+ * });
+ *
+ *
+ * @param {Object} media The member item object with changes applied
+ * @param {Bool} isNew set to true to create a new item or to update an existing
+ * @param {Array} files collection of files for the media item
+ * @returns {Promise} resourcePromise object containing the saved media item.
+ *
+ */
+ save: function (member, isNew, files) {
+ return saveMember(member, "save" + (isNew ? "New" : ""), files);
+ }
+ };
}
angular.module('umbraco.resources').factory('memberResource', memberResource);