From 645628626c3904c74f154378ad6b45cab1b0afcb Mon Sep 17 00:00:00 2001 From: axman Date: Tue, 24 Aug 2021 15:41:29 -0700 Subject: [PATCH] Added new Plugin Config setting for Grouper Site --- Config/Schema/schema.xml | 1 + Controller/GrouperGroupsController.php | 5 ++- Lib/lang.php | 10 +++-- Model/CoGrouperLite.php | 3 ++ Model/GrouperGroup.php | 2 + View/CoGrouperLites/fields.inc | 55 ++++++++++++++++++-------- View/GrouperGroups/groupoptin.ctp | 4 +- 7 files changed, 56 insertions(+), 24 deletions(-) diff --git a/Config/Schema/schema.xml b/Config/Schema/schema.xml index d78fd3c..e72f707 100644 --- a/Config/Schema/schema.xml +++ b/Config/Schema/schema.xml @@ -35,6 +35,7 @@ + diff --git a/Controller/GrouperGroupsController.php b/Controller/GrouperGroupsController.php index 0134442..9d9b9f0 100644 --- a/Controller/GrouperGroupsController.php +++ b/Controller/GrouperGroupsController.php @@ -63,7 +63,7 @@ public function beforeFilter() { //Need to find which plugin instance choosing, if more than one from cm_co_grouper_lites // table being used in COmanage. $grouperConnData = $this->Session->read('Plugin.Grouper.Api'); - if ($this->Session->check('Plugin.Grouper.Api.id') && count($grouperConnData) == 5) { + if ($this->Session->check('Plugin.Grouper.Api.id') && count($grouperConnData) == 6) { if (isset($this->passedArgs['glid'])) { if ($this->Session->read('Plugin.Grouper.Api.id') !== $this->passedArgs['glid']) { $this->setConnection(); @@ -93,6 +93,7 @@ private function setConnection() { $this->Session->write('Plugin.Grouper.Api.version', $connectionInfo['CoGrouperLite']['connVer']); $this->Session->write('Plugin.Grouper.Api.user', $connectionInfo['CoGrouperLite']['connUser']); $this->Session->write('Plugin.Grouper.Api.pass', $connectionInfo['CoGrouperLite']['connPass']); + $this->Session->write('Plugin.Grouper.Api.grouperUrl', $connectionInfo['CoGrouperLite']['grouperUrl']); } /** @@ -138,7 +139,7 @@ public function groupInfo() { $this->Flash->set(_txt('pl.grouperlite.message.flash.group-detail-members-failed'), array('key' => 'error')); } - $this->set('grouperbaseurl', $this->Session->read('Plugin.Grouper.Api.url')); + $this->set('grouperbaseurl', $this->Session->read('Plugin.Grouper.Api.grouperUrl')); } /** diff --git a/Lib/lang.php b/Lib/lang.php index e466bb1..ca2c6fd 100644 --- a/Lib/lang.php +++ b/Lib/lang.php @@ -3,10 +3,12 @@ $cm_grouper_lite_texts['en_US'] = array( 'pl.grouperlite.config.display.title' => 'Grouper Configuration Settings', 'pl.grouperlite.config.edit.title' => 'Edit Grouper Configuration Settings', - 'pl.grouperlite.config.grouper-url' => 'Grouper URL', - 'pl.grouperlite.config.grouper-version' => 'Grouper Version', - 'pl.grouperlite.config.grouper-un' => 'Username', - 'pl.grouperlite.config.grouper-pw' => 'Password', + 'pl.grouperlite.config.grouper-url' => 'Grouper Site URL', + 'pl.grouperlite.config.grouper-url-subscript' => '(Example: https://grouper.prod.at.internet2.edu)', + 'pl.grouperlite.config.grouper-ws-url' => 'Grouper Webservice URL', + 'pl.grouperlite.config.grouper-ws-version' => 'Grouper Webservice Version', + 'pl.grouperlite.config.grouper-ws-un' => 'Webservice Username', + 'pl.grouperlite.config.grouper-ws-pw' => 'Webservice Password', 'pl.grouperlite.crumb.root' => 'Grouper', 'pl.grouperlite.nav.groups-can-join' => 'Groups I can join', diff --git a/Model/CoGrouperLite.php b/Model/CoGrouperLite.php index a0798e3..bb07103 100644 --- a/Model/CoGrouperLite.php +++ b/Model/CoGrouperLite.php @@ -64,6 +64,9 @@ class CoGrouperLite extends CoDashboardWidgetBackend { 'connVer' => array( 'required' => true ), + 'grouperUrl' => array( + 'required' => true + ), 'connUser' => array( 'required' => true ), diff --git a/Model/GrouperGroup.php b/Model/GrouperGroup.php index 2d7b0d9..4195374 100644 --- a/Model/GrouperGroup.php +++ b/Model/GrouperGroup.php @@ -128,6 +128,7 @@ public function filteredMemberOfGroups(array $conditions) { $optOutGroups = $this->grouperAPI->getOptionalGroups($conditions); foreach ($memberOfGroups as &$memberOfGroup) { + $memberOfGroup['optOut'] = false; foreach ($optOutGroups as $key => $value) { if ($value['name'] == $memberOfGroup['name']) { //Match! @@ -330,6 +331,7 @@ public function groupDescriptions(string $groupName) { $args['groupName'] = $groupName; $groupDescription = $this->grouperAPI->getGrouperGroupInfo($args); + $groupDescription[0]['friendlyName'] = $groupDescription[0]['displayName']; return $groupDescription; diff --git a/View/CoGrouperLites/fields.inc b/View/CoGrouperLites/fields.inc index 3811a43..ac32dee 100644 --- a/View/CoGrouperLites/fields.inc +++ b/View/CoGrouperLites/fields.inc @@ -72,16 +72,45 @@ print $this->Form->hidden('co_dashboard_widget_id', array('default' => $vv_dwid)
  • - Form->label('connUrl', _txt('pl.grouperlite.config.grouper-url')) : _txt('pl.grouperlite.config.grouper-url')); ?> + Form->label('grouperUrl', _txt('pl.grouperlite.config.grouper-url')) : _txt('pl.grouperlite.config.grouper-url')); ?> + * +
    + Form->label('grouperUrl', _txt('pl.grouperlite.config.grouper-url-subscript')) : _txt('pl.grouperlite.config.grouper-url-subscript')); ?> + +
    +
    +
    + Form->input('grouperUrl', $attrs); + + if ($this->Form->isFieldError('grouperUrl')) { + print $this->Form->error('grouperUrl'); + } + } else { + if (!empty($co_grouper_lites[0]['CoGrouperLite']['grouperUrl'])) { + print filter_var($co_grouper_lites[0]['CoGrouperLite']['grouperUrl'], FILTER_SANITIZE_SPECIAL_CHARS); + } + } + ?> +
    +
  • +
  • +
    +
    + Form->label('connUrl', _txt('pl.grouperlite.config.grouper-ws-url')) : _txt('pl.grouperlite.config.grouper-url')); ?> *
    Form->hidden('co_dashboard_widget_id', array('default' => $vv_dwid)
  • - Form->label('connVer', _txt('pl.grouperlite.config.grouper-version')) : _txt('pl.grouperlite.config.grouper-version')); ?> + Form->label('connVer', _txt('pl.grouperlite.config.grouper-ws-version')) : _txt('pl.grouperlite.config.grouper-version')); ?> *
    Form->hidden('co_dashboard_widget_id', array('default' => $vv_dwid)
  • - Form->label('connUser', _txt('pl.grouperlite.config.grouper-un')) : _txt('pl.grouperlite.config.grouper-un')); ?> + Form->label('connUser', _txt('pl.grouperlite.config.grouper-ws-un')) : _txt('pl.grouperlite.config.grouper-un')); ?> *
    Form->hidden('co_dashboard_widget_id', array('default' => $vv_dwid)
  • - Form->label('connPass', _txt('pl.grouperlite.config.grouper-pw')) : _txt('pl.grouperlite.config.grouper-pw')); ?> + Form->label('connPass', _txt('pl.grouperlite.config.grouper-ws-pw')) : _txt('pl.grouperlite.config.grouper-pw')); ?> *
    element('GrouperLite.Components/optAction', array( - 'member' => $group['member'], + 'member' => false, 'action' => 'joingroup', 'group' => $group['name'], 'idx' => $key @@ -77,7 +77,7 @@ $numColumns = count($columns); element('GrouperLite.Components/optAction', array( - 'member' => $wgoptin['member'], + 'member' => false, 'action' => 'joingroup', 'group' => $wgoptin['workingGroupId'], 'idx' => $key