diff --git a/.gitignore b/.gitignore index f976d74aa..d04378068 100644 --- a/.gitignore +++ b/.gitignore @@ -40,7 +40,7 @@ config/master.key */vendor/bundle # unless supporting rvm < 1.11.0 or doing something fancy, ignore this: .rvmrc - +.nvmrc # ############################################################################## # diff --git a/app/controllers/configurations_controller.rb b/app/controllers/configurations_controller.rb index 06b86426e..9da521578 100644 --- a/app/controllers/configurations_controller.rb +++ b/app/controllers/configurations_controller.rb @@ -22,6 +22,7 @@ def allowed_params lock_version parameter parameter_value + parameter_json ] end end diff --git a/app/controllers/reports/people_reports_controller.rb b/app/controllers/reports/people_reports_controller.rb index 0b137abfd..3c1f0c1d3 100644 --- a/app/controllers/reports/people_reports_controller.rb +++ b/app/controllers/reports/people_reports_controller.rb @@ -179,6 +179,7 @@ def record_stream_permissions 'Streaming Exceptions', 'Permission to Record', 'Recording Exceptions', + "Topics not to talk about", 'Schedule' ] ) @@ -195,6 +196,7 @@ def record_stream_permissions person.can_stream_exceptions, person.can_record, person.can_record_exceptions, + person.excluded_demographic_categories, person.sessions.scheduled.collect{|s| "'#{s.title}' - #{s.start_time.strftime('%Y-%m-%d %H:%M %Z')} - #{s.duration} mins - #{s.room.name}" }.join(";\n") ] ) diff --git a/app/javascript/administration/playground_component.vue b/app/javascript/administration/playground_component.vue index be05b4a88..0a09e90cd 100644 --- a/app/javascript/administration/playground_component.vue +++ b/app/javascript/administration/playground_component.vue @@ -1,19 +1,28 @@ diff --git a/app/javascript/components/two_sided_multi_select.vue b/app/javascript/components/two_sided_multi_select.vue new file mode 100644 index 000000000..0c6cdcdd5 --- /dev/null +++ b/app/javascript/components/two_sided_multi_select.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/app/javascript/configurations/config_editor.vue b/app/javascript/configurations/config_editor.vue index 366d5fad5..25d1e0393 100644 --- a/app/javascript/configurations/config_editor.vue +++ b/app/javascript/configurations/config_editor.vue @@ -31,7 +31,16 @@ inline >Yes -
+
+ +
+
{ this.configuration = data } ) + } else if (this.parameter.parameter_type === 'JSON') { + this.configuration.parameter_json = new_val; + this.save(this.configuration).then( + (data) => { + this.configuration = data + } + ) } else { this.configuration.parameter_value = new_val this.save(this.configuration).then( diff --git a/app/javascript/configurations/people_hidden_fields.mixin.js b/app/javascript/configurations/people_hidden_fields.mixin.js new file mode 100644 index 000000000..b6cd1918b --- /dev/null +++ b/app/javascript/configurations/people_hidden_fields.mixin.js @@ -0,0 +1,25 @@ +import { settingsMixin } from "@/store/settings.mixin"; +import { LINKED_FIELD_LABELS } from "@/constants/strings"; + +export const peopleHiddenFieldsMixin = { + mixins: [ + settingsMixin + ], + computed: { + peopleHideableFieldsOptions() { + return Object.entries(this.currentSettings.attributes.Person).filter(([_, {hidable}]) => hidable ).map(([value, _]) => ({text: LINKED_FIELD_LABELS["Person"][value] || value, value})) + }, + // can't use configByName here because that's parameter_value centric + hiddenFields() { + return this.currentSettings.configs?.find(c => c.parameter === 'people_hidden_fields')?.parameter_json || [] + } + }, + methods: { + filterFieldList(fields) { + return fields.filter(field => !this.hiddenFields.includes(field)); + }, + isHidden(field) { + return this.hiddenFields.includes(field); + } + } +} diff --git a/app/javascript/constants/strings.js b/app/javascript/constants/strings.js index 07e438904..6ed171668 100644 --- a/app/javascript/constants/strings.js +++ b/app/javascript/constants/strings.js @@ -258,8 +258,8 @@ module.exports = { do_not_assign_with: "Anyone that should not be assigned to be on a panel with participant", is_local: "Local to the event", moderation_experience: "Moderating Experience", - can_stream: "Permission to be included in a livestreamed program", - can_record: "Permission to be included in a recorded program", + can_stream: "Permission to be included in a livestreamed programme", + can_record: "Permission to be included in a recorded programme", can_stream_exceptions: "Livestreams excluded topics", can_record_exceptions: "Recordings excluded topics", name: "Name", @@ -273,7 +273,7 @@ module.exports = { registration_number: "Ticket Number", global_diaspora: "Member of the global diaspora", non_anglophone: "Represent something other than a purely anglophone perspective", - excluded_demographic_categories: "Demographic categories that apply, but should not be discussed on panels that include participant", + excluded_demographic_categories: "Participant's demographic categories that should not be discussed on panels that include them", }, PERSON_SAVE_SUCCESS: "Profile record saved successfully", PERSON_NEVER_LOGGED_IN: "Never logged in", diff --git a/app/javascript/people/person_tabs.vue b/app/javascript/people/person_tabs.vue index e7b9043e6..ee9afa07d 100644 --- a/app/javascript/people/person_tabs.vue +++ b/app/javascript/people/person_tabs.vue @@ -23,19 +23,19 @@ -
+
Coming soon!
-
+
Coming soon!
@@ -127,6 +127,10 @@ export default { hasOpenForInterest: false, }), computed: { + person_can_select_sessions() { + let selectedPerson = this.selected_model(personModel); + return !["not_set", "declined", "rejected"].includes(selectedPerson.con_state) + }, tabsArray() { const baseTabs = [ 'edit', diff --git a/app/javascript/profile/person_demographics.vue b/app/javascript/profile/person_demographics.vue index 69044732e..1b57fb582 100644 --- a/app/javascript/profile/person_demographics.vue +++ b/app/javascript/profile/person_demographics.vue @@ -15,23 +15,23 @@