Author: erinnp
Date: Tue Sep 3 19:53:12 2013
New Revision: 1519815
URL: http://svn.apache.org/r1519815
Log:
Rendering widgets, adding and editing of pages
Modified:
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Page.java
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
rave/branches/angular/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/common/partials/region.html
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/portal/tabs.html
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/directives/RenderRegionWidget.js
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/resources/RaveResource.js
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/controllers/AddOrEditNewPageModalCtrl.js
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/routes.js
Modified:
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Page.java
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Page.java?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Page.java
(original)
+++
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/Page.java
Tue Sep 3 19:53:12 2013
@@ -19,6 +19,8 @@
package org.apache.rave.rest.model;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
Modified:
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
(original)
+++
rave/branches/angular/rave-components/rave-core-api/src/main/java/org/apache/rave/rest/model/RegionWidget.java
Tue Sep 3 19:53:12 2013
@@ -19,6 +19,7 @@
package org.apache.rave.rest.model;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.apache.rave.model.RegionWidgetPreference;
import javax.xml.bind.annotation.*;
@@ -30,6 +31,7 @@ import java.util.List;
"id", "type", "widgetId", "widgetUrl", "regionId", "collapsed",
"locked", "hideChrome", "ownerId", "userPrefs"
})
@XmlRootElement(name = "RegionWidget")
+@JsonIgnoreProperties(ignoreUnknown = true)
public class RegionWidget implements RestEntity{
@XmlAttribute(name="id")
Modified:
rave/branches/angular/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
(original)
+++
rave/branches/angular/rave-components/rave-core/src/main/java/org/apache/rave/rest/impl/DefaultPageResource.java
Tue Sep 3 19:53:12 2013
@@ -75,7 +75,7 @@ public class DefaultPageResource impleme
@Override
public Page createPage(Page page) {
//TODO: RAVE-977 - when Page type enum is deprecated escape from this
logic
- if (page.getPageType().equals("user")) {
+ if (page.getPageType() != null && page.getPageType().equals("user")) {
if (page.getName() == null) {
throw new BadRequestException("Page name property must be
defined.");
}
Modified:
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/common/partials/region.html
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/common/partials/region.html?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/common/partials/region.html
(original)
+++
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/common/partials/region.html
Tue Sep 3 19:53:12 2013
@@ -3,6 +3,6 @@
class="region {{page.pageLayoutCode}}_{{page.regions.indexOf(region)+1}}"
ui-sortable="sortingOpts" ng-model="region.regionWidgets">
<div ng-repeat="regionWidget in region.regionWidgets">
- <div render-region-widget="regionWidget"></div>
+ <div render-region-widget region-widget="regionWidget"></div>
</div>
</div>
\ No newline at end of file
Modified:
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/portal/tabs.html
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/portal/tabs.html?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/portal/tabs.html
(original)
+++
rave/branches/angular/rave-portal-resources/src/main/webapp/static/html/portal/tabs.html
Tue Sep 3 19:53:12 2013
@@ -72,7 +72,7 @@
<div class="controls">
<select id="pageLayout" ng-model="page.pageLayoutCode"
required
- ng-options="l.code as l.code for l in layouts
| filter:isUserSelectable"">
+ ng-options="l.code as l.code for l in layouts
| filter:isUserSelectable">
<option value="">-- Select Layout --</option>
</select>
</div>
Modified:
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/directives/RenderRegionWidget.js
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/directives/RenderRegionWidget.js?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/directives/RenderRegionWidget.js
(original)
+++
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/directives/RenderRegionWidget.js
Tue Sep 3 19:53:12 2013
@@ -8,7 +8,7 @@
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ * registerView
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
/**
* The RenderRegionWidget directive takes a regionWidget to be rendered in the
region-widget="" attribute
* and renders that regionWidget at the location of the directive.
@@ -27,7 +28,7 @@ define(['angular'], function(angular){
restrict: 'EA',
replace: true,
scope:{
- regionWidget: '=renderRegionWidget'
+ regionWidget: '='
},
link: function (scope, element, attrs){
scope.$watch('regionWidget', function(){
Modified:
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/resources/RaveResource.js
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/resources/RaveResource.js?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/resources/RaveResource.js
(original)
+++
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/common/resources/RaveResource.js
Tue Sep 3 19:53:12 2013
@@ -20,23 +20,42 @@
define(['underscore', 'angular'], function (_, angular) {
return ['$resource', '$http', 'constants', function ($resource, $http,
constants) {
var baseUrl = constants.hostedPath + '/api/rest/',
- transform = $http.defaults.transformResponse.concat([
+ /**
+ * For all requests that return data, unwrap the json response
+ */
+ transformResponse = $http.defaults.transformResponse.concat([
function (data) {
return data.data || data;
}
]),
+ /**
+ * For all requests that save data, flatten the data object and do
not include arrays or nested objects
+ * in the request body
+ */
+ transformRequest = ([
+ function (data) {
+ data = angular.copy(data);
+ _.each(data, function(val, key) {
+ if(_.isArray(val) || _.isObject(val)) {
+ data[key] = undefined;
+ }
+ });
+
+ return data;
+ }
+ ]).concat($http.defaults.transformRequest),
defaultActions = {
- get: {method: 'GET', cache: true, transformResponse:
transform},
- save: {method: 'POST', transformResponse: transform},
- update: {method: 'PUT', transformResponse: transform},
- query: {method: 'GET', cache: true, isArray: true,
transformResponse: transform},
- remove: {method: 'DELETE', transformResponse: transform},
- delete: {method: 'DELETE', transformResponse: transform}
+ get: {method: 'GET', cache: true, transformResponse:
transformResponse},
+ save: {method: 'POST', transformRequest:transformRequest,
transformResponse: transformResponse},
+ update: {method: 'PUT', transformRequest:transformRequest,
transformResponse: transformResponse},
+ query: {method: 'GET', cache: true, isArray: true,
transformResponse: transformResponse},
+ remove: {method: 'DELETE', transformResponse:
transformResponse},
+ delete: {method: 'DELETE', transformResponse:
transformResponse}
};
return function RaveResource(url, paramDefaults, actions) {
var acts = angular.copy(defaultActions),
- trans = transform;
+ trans = transformResponse;
url = baseUrl + url;
_.each(actions, function (action, key) {
Modified:
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/controllers/AddOrEditNewPageModalCtrl.js
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/controllers/AddOrEditNewPageModalCtrl.js?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/controllers/AddOrEditNewPageModalCtrl.js
(original)
+++
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/controllers/AddOrEditNewPageModalCtrl.js
Tue Sep 3 19:53:12 2013
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-define(['underscore'], function(_) {
+define(['underscore'], function (_) {
/* Local Variables */
var addNewPageTitle = "ADD A NEW PAGE",
updatePageTitle = "UPDATE PAGE";
@@ -24,46 +24,59 @@ define(['underscore'], function(_) {
/* Controller Definition */
return ['$scope', 'dialog', 'page', 'pageLayouts', 'Pages', function
($scope, dialog, page, pageLayouts, Pages) {
- $scope.page = angular.copy(page);
+ if(page) {
+ $scope.page = angular.copy(page);
+ } else {
+ $scope.page = new Pages({
+ pageType: 'user'
+ });
+ }
$scope.title = resolveModalTitle($scope.page);
$scope.layouts = pageLayouts;
- $scope.isUserSelectable = function(pageLayout) {
+ $scope.isUserSelectable = function (pageLayout) {
return pageLayout.userSelectable;
}
- $scope.close = function() {
+ $scope.close = function () {
dialog.close();
}
- $scope.savePage = function() {
+ $scope.savePage = function () {
$scope.error = null;
- Pages.save($scope.page).$then(function(page) {
- $scope.page = page;
- addNewPageToOrUpdatePageInPagesArray($scope);
+
+ if ($scope.page.id) {
+ $scope.page.$update(onSuccess, onError)
+ } else {
+ $scope.page.$save(onSuccess, onError)
+ }
+
+ function onSuccess(page) {
+ addOrUpdatePageInPagesArray($scope);
dialog.close();
- }, function(response) {
- //TODO: When REST API is fully implemented, set error msg to
custom response from server
+ }
+
+ function onError(response) {
$scope.error = "Server-side ERROR";
- });
+ }
}
}];
/* Helpers */
function resolveModalTitle(page) {
- if(page) {
- return updatePageTitle;
- } else {
- return addNewPageTitle;
- }
+ if (page) {
+ return updatePageTitle;
+ } else {
+ return addNewPageTitle;
+ }
}
- function addNewPageToOrUpdatePageInPagesArray($scope) {
- var pageEntry = _.findWhere($scope.pages, $scope.page);
- if(pageEntry) {
- _.extend(pageEntry, $scope.page);
+ function addOrUpdatePageInPagesArray($scope) {
+ var pageEntry = _.findWhere($scope.pages, {id: $scope.page.id});
+ if (pageEntry) {
+ _.extend(pageEntry, $scope.page);
} else {
$scope.pages.push($scope.page);
}
Modified:
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/routes.js
URL:
http://svn.apache.org/viewvc/rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/routes.js?rev=1519815&r1=1519814&r2=1519815&view=diff
==============================================================================
---
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/routes.js
(original)
+++
rave/branches/angular/rave-portal-resources/src/main/webapp/static/script/portal/routes.js
Tue Sep 3 19:53:12 2013
@@ -31,16 +31,20 @@ define(['angular', 'common/resources/ind
*/
//TODO: once angular 1.2 is released, the resources will expose a
$promise property
var resolve = {
- pages: ['PagesForRender', '$q',
- function (PagesForRender, $q) {
+ pages: ['PagesForRender', '$q', '$rootScope',
+ function (PagesForRender, $q, $rootScope) {
var deferred = $q.defer();
- PagesForRender.query({
- context: 'portal',
- identifier: '@self'
- }).$then(function (response) {
- deferred.resolve(response.resource)
- });
+ if ($rootScope.pages) {
+ deferred.resolve($rootScope.pages)
+ } else {
+ PagesForRender.query({
+ context: 'portal',
+ identifier: '@self'
+ }).$then(function (response) {
+ deferred.resolve(response.resource)
+ });
+ }
return deferred.promise;
}