diff --git a/package-lock.json b/package-lock.json index a06d90735..30bc4b9a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8339,9 +8339,9 @@ } }, "openstack-uicore-foundation": { - "version": "2.0.47", - "resolved": "https://registry.npmjs.org/openstack-uicore-foundation/-/openstack-uicore-foundation-2.0.47.tgz", - "integrity": "sha512-hOr+G+gPc5crTKTy0AmNyff+rfCloC2kUGUdBwJ1dmjOJN8bZPqYX+g48a7PJ9zkOk9wi8UIugf7fXtblsvrdg==" + "version": "2.0.54", + "resolved": "https://registry.npmjs.org/openstack-uicore-foundation/-/openstack-uicore-foundation-2.0.54.tgz", + "integrity": "sha512-d7mCJr4vxiAL/a17dDYY8NE4S+fy3tiK2K5HoO1CcTWYNsG48jvATjl9SAWSkOK1bEWJvHNaigc4fMsEpnBEzw==" }, "opn": { "version": "5.5.0", diff --git a/package.json b/package.json index 5705b7676..b8440d320 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "moment": "^2.22.2", "moment-timezone": "^0.5.28", "node-sass": "^4.14.1", - "openstack-uicore-foundation": "^2.0.47", + "openstack-uicore-foundation": "^2.0.54", "optimize-css-assets-webpack-plugin": "^5.0.3", "postcss-loader": "^2.1.6", "react": "^16.13.1", diff --git a/src/actions/summit-actions.js b/src/actions/summit-actions.js index 89d5d7b2e..e9a9e91a4 100644 --- a/src/actions/summit-actions.js +++ b/src/actions/summit-actions.js @@ -32,6 +32,8 @@ export const REQUEST_SUMMIT = 'REQUEST_SUMMIT'; export const RECEIVE_SUMMIT = 'RECEIVE_SUMMIT'; export const REQUEST_SUMMITS = 'REQUEST_SUMMITS'; export const RECEIVE_SUMMITS = 'RECEIVE_SUMMITS'; +export const REQUEST_ALL_SUMMITS = 'REQUEST_ALL_SUMMITS'; +export const RECEIVE_ALL_SUMMITS = 'RECEIVE_ALL_SUMMITS'; export const SET_CURRENT_SUMMIT = 'SET_CURRENT_SUMMIT'; export const RESET_SUMMIT_FORM = 'RESET_SUMMIT_FORM'; export const UPDATE_SUMMIT = 'UPDATE_SUMMIT'; @@ -121,6 +123,28 @@ export const loadSummits = (page = 1, perPage = 10) => (dispatch, getState) => { ); } +export const getAllSummits = () => (dispatch, getState) => { + + let { loggedUserState } = getState(); + let { accessToken } = loggedUserState; + + let params = { + access_token : accessToken, + expand: 'none', + relations: 'none', + page: 1, + per_page: 100, + order: '-id', + }; + + getRequest( + createAction(REQUEST_ALL_SUMMITS), + createAction(RECEIVE_ALL_SUMMITS), + `${window.API_BASE_URL}/api/v1/summits/all`, + authErrorHandler + )(params)(dispatch, getState); +} + export const resetSummitForm = () => (dispatch, getState) => { dispatch(createAction(RESET_SUMMIT_FORM)({})); }; diff --git a/src/actions/summit-builder-actions.js b/src/actions/summit-builder-actions.js index 61cca4db5..6405b492b 100644 --- a/src/actions/summit-builder-actions.js +++ b/src/actions/summit-builder-actions.js @@ -37,6 +37,7 @@ export const CHANGE_CURRENT_LOCATION = 'CHANGE_CURRENT_LOCA export const CHANGE_CURRENT_EVENT_TYPE = 'CHANGE_CURRENT_EVENT_TYPE'; export const CHANGE_CURRENT_TRACK = 'CHANGE_CURRENT_TRACK'; export const CHANGE_CURRENT_PRESENTATION_SELECTION_STATUS = 'CHANGE_CURRENT_PRESENTATION_SELECTION_STATUS'; +export const CHANGE_CURRENT_PRESENTATION_SELECTION_PLAN = 'CHANGE_CURRENT_PRESENTATION_SELECTION_PLAN'; export const CHANGE_CURRENT_UNSCHEDULE_SEARCH_TERM = 'CHANGE_CURRENT_UNSCHEDULE_SEARCH_TERM'; export const CHANGE_CURRENT_SCHEDULE_SEARCH_TERM = 'CHANGE_CURRENT_SCHEDULE_SEARCH_TERM'; export const CHANGE_CURRENT_ORDER_BY = 'CHANGE_CURRENT_ORDER_BY'; @@ -54,6 +55,7 @@ export const getUnScheduleEventsPage = event_type_id = null, track_id = null, selection_status = null, + selection_plan = null, term = null, order = null ) => @@ -76,6 +78,10 @@ export const getUnScheduleEventsPage = filter.push(`selection_status==${selection_status}`); } + if(selection_plan != null){ + filter.push(`selection_plan_id==${selection_plan}`); + } + if(term){ let escapedTerm = escapeFilterValue(term); filter.push(`title=@${escapedTerm},abstract=@${escapedTerm},social_summary=@${escapedTerm},tags=@${escapedTerm},speaker=@${escapedTerm},speaker_email=@${escapedTerm},id==${escapedTerm}`); @@ -219,6 +225,15 @@ export const changeCurrentPresentationSelectionStatus = (currentPresentationSele )); } +export const changeCurrentPresentationSelectionPlan = (currentPresentationSelectionPlan) => (dispatch, getState) => { + + dispatch(createAction(CHANGE_CURRENT_PRESENTATION_SELECTION_PLAN)( + { + presentationSelectionPlan: currentPresentationSelectionPlan + } + )); +} + export const changeCurrentUnScheduleOrderBy = (orderBy) => (dispatch, getState) => { dispatch(createAction(CHANGE_CURRENT_ORDER_BY)( diff --git a/src/actions/tag-actions.js b/src/actions/tag-actions.js index 34287be04..35769257e 100644 --- a/src/actions/tag-actions.js +++ b/src/actions/tag-actions.js @@ -103,7 +103,7 @@ export const getTagGroup = (tagGroupId) => (dispatch, getState) => { dispatch(startLoading()); let params = { - expand : 'allowed_tags,tag', + expand : 'allowed_tags, allowed_tags.tag', access_token : accessToken, }; diff --git a/src/app.js b/src/app.js index 6dcce2756..8137b082e 100644 --- a/src/app.js +++ b/src/app.js @@ -26,7 +26,7 @@ import T from 'i18n-react'; import CustomErrorPage from "./pages/custom-error-page"; import history from './history' import exclusiveSections from 'js-yaml-loader!./exclusive-sections.yml'; - +import IdTokenVerifier from 'idtoken-verifier'; // here is set by default user lang as en @@ -73,8 +73,20 @@ class App extends React.PureComponent { } render() { - let { isLoggedUser, onUserAuth, doLogout, getUserInfo, member, backUrl, loading} = this.props; - let profile_pic = member ? member.pic : ''; + let { isLoggedUser, onUserAuth, doLogout, getUserInfo, idToken, backUrl, loading} = this.props; + + + // get user pic from idtoken claims (IDP) + let profile_pic = ''; + + if(idToken){ + let verifier = new IdTokenVerifier({ + issuer: window.IDP_BASE_URL, + audience: window.OAUTH2_CLIENT_ID + }); + let jwt = verifier.decode(idToken); + profile_pic = jwt.payload.picture; + } return ( @@ -111,6 +123,7 @@ const mapStateToProps = ({ loggedUserState, baseState }) => ({ isLoggedUser: loggedUserState.isLoggedUser, backUrl: loggedUserState.backUrl, member: loggedUserState.member, + idToken: loggedUserState.idToken, loading : baseState.loading, }); diff --git a/src/components/forms/event-form.js b/src/components/forms/event-form.js index 5a1b001c2..1b6710b9f 100644 --- a/src/components/forms/event-form.js +++ b/src/components/forms/event-form.js @@ -231,7 +231,14 @@ class EventForm extends React.Component { let levels_ddl = levelOpts.map(l => ({label: l, value: l})); - let selection_plans_ddl = selectionPlansOpts.map(sp => ({label: sp.name, value: sp.id})); + let selection_plans_ddl = []; + + if (entity.track_id) { + const track = trackOpts.find(t => t.id === entity.track_id); + selection_plans_ddl = selectionPlansOpts + .filter(sp => sp.track_groups.some(gr => track.track_groups.includes(gr))) + .map(sp => ({label: sp.name, value: sp.id})); + } let rsvp_templates_ddl = rsvpTemplateOpts.map( t => { @@ -525,15 +532,18 @@ class EventForm extends React.Component { handleClick={this.toggleSection.bind(this, 'live')}>
- +