Skip to content

Rebasing against develop #71

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions app/resources/locales/en_US/field.po
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
# When adding entries to this file, group non-model specific translations at the top,
# then model specific translations alphabetically by model.

msgid "action"
msgstr "Action"
msgid "actions"
msgstr "{0,plural,=1{Action} other{Actions}}"

msgid "actor"
msgstr "Actor"
Expand Down Expand Up @@ -159,6 +159,9 @@ msgstr "Plugin"
msgid "postal_code"
msgstr "Postal Code"

msgid "primary"
msgstr "Primary"

msgid "primary_name"
msgstr "Primary Name"

Expand Down Expand Up @@ -243,6 +246,9 @@ msgstr "Value"
msgid "verified"
msgstr "Verified"

msgid "unverified"
msgstr "Unverified"

msgid "ApiUsers.privileged.desc"
msgstr "A privileged API user has full access to the CO. Unprivileged API users may be granted specific permissions where supported."

Expand Down
6 changes: 6 additions & 0 deletions app/resources/locales/en_US/information.po
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,9 @@ msgstr "There are no records to display."

msgid "global.title.none"
msgstr "No title"

msgid "global.value.none"
msgstr "No value"

msgid "global.visit.link"
msgstr "Visit link"
3 changes: 3 additions & 0 deletions app/resources/locales/en_US/operation.po
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
msgid "activate"
msgstr "Activate"

msgid "add"
msgstr "Add"

msgid "add.a"
msgstr "Add a New {0}"

Expand Down
26 changes: 15 additions & 11 deletions app/src/Controller/Component/RegistryAuthComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,19 @@ public function beforeFilter(EventInterface $event) {
}

// Perform authorization check

if($this->getConfig('apiUser')) {

// Do we have an authenticated user session?
// Note we don't stuff anything into the session anymore, the only attribute
// is the username, which is actually loaded by login.php.

$auth = $session->read('Auth');

// Registry UI is now a hybrid implementation of VUE and CAKEPHP MVC.
// In order to allow a logged-in user to reach out to the backend without
// the need of an API User, but just with the use of the Session, we will
// skip the API user authorization if a user Session is available.
if(empty($auth) && $this->getConfig('apiUser')) {
// There are no unauthenticated API calls, so always require a valid user

try {
Expand Down Expand Up @@ -177,16 +188,9 @@ public function beforeFilter(EventInterface $event) {
if($controller->getName() == 'Pages') {
return true;
}

// Do we have an authenticated user session?
// Note we don't stuff anything into the session anymore, the only attribute
// is the username, which is actually loaded by login.php.

$auth = $session->read('Auth');


if(!empty($auth['external']['user'])) {
// We have a valid user name that is *authenticated* for the current request.
// We have a valid username that is *authenticated* for the current request.
// Note we haven't checked authorization, but this is how the authorization
// checks can get the authenticated username.
$controller->set('vv_user', ['username' => $auth['external']['user']]);
Expand Down
62 changes: 62 additions & 0 deletions app/src/Controller/PeopleController.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,66 @@ public function beforeRender(\Cake\Event\EventInterface $event) {

return parent::beforeRender($event);
}

/**
* Person overview / canvas
*
* @since COmanage Registry v5.0.0
*/

public function canvas(string $id) {
/* XXX Simply including parent::edit() is nearly all that's required - but we need
to delve a little deeper to get data from underlying relationships. We might send a contains()
override to parent::edit() which would allow this to be more DRY
// Keep the following as an example for now.
parent::edit($id, false);
// We've just set the vv_supertitle in the parent controller.
// Pass it to the title for use in the breadcrumbs.
$this->set('vv_title', $this->viewBuilder()->getVar('vv_supertitle'));
*/

/* The following is nearly identical to parent::edit/view */
$modelsName = $this->name;
$table = $this->$modelsName;
$tableName = $table->getTable();
$query = $table->findById($id);

// This contain() directive is the primary deviation from standard edit()/view().
// We need to drill down to deeper related models for display.
$query = $query->contain([
'PrimaryName',
'Names' => ['Types'],
'Addresses' => ['Types'],
'AdHocAttributes',
'EmailAddresses' => ['Types'],
'GroupMembers',
'GroupOwners',
'Identifiers' => ['Types'],
'PersonRoles' => ['Cous','Types'],
'Pronouns',
'TelephoneNumbers' => ['Types'],
'Urls' => ['Types']
]);

try {
// Pull the current record
$obj = $query->firstOrFail();
} catch(\Exception $e) {
// findById throws Cake\Datasource\Exception\RecordNotFoundException
$this->Flash->error($e->getMessage());
// XXX This redirects to an Exception page because $id is not found.
// XXX A 404 with error would be better.
return $this->generateRedirect((int)$id);
}

$this->set('vv_obj', $obj);
$this->getPrimaryLink();
$this->populateAutoViewVars($obj);

$this->set('vv_title', $table->generateDisplayField($obj));
$this->set('vv_supertitle', $table->generateDisplayField($obj));
// Pass the display field also into subtitle for dealing with External IDs
$this->set('vv_subtitle', $table->generateDisplayField($obj));
}
}
9 changes: 7 additions & 2 deletions app/src/Controller/StandardController.php
Original file line number Diff line number Diff line change
Expand Up @@ -331,8 +331,9 @@ public function edit(string $id) {
}
catch(\Exception $e) {
// findById throws Cake\Datasource\Exception\RecordNotFoundException

$this->Flash->error($e->getMessage());
// XXX This redirects to an Exception page because $id is not found.
// XXX A 404 with error would be better.
return $this->generateRedirect((int)$id);
}

Expand Down Expand Up @@ -724,8 +725,9 @@ public function view($id = null) {
}
catch(\Exception $e) {
// findById throws Cake\Datasource\Exception\RecordNotFoundException

$this->Flash->error($e->getMessage());
// XXX This redirects to an Exception page because $id is not found.
// XXX A 404 with error would be better.
return $this->generateRedirect((int)$id);
}

Expand All @@ -742,6 +744,9 @@ public function view($id = null) {
// We don't use a trait for this since each table will implement different logic

$this->set('vv_title', __d('operation', 'view.ai', $table->generateDisplayField($obj)));
$this->set('vv_supertitle', $table->generateDisplayField($obj));
// Pass the display field also into subtitle for dealing with External IDs
$this->set('vv_subtitle', $table->generateDisplayField($obj));
} else {
// Default view title is the object display field
$field = $table->getDisplayField();
Expand Down
2 changes: 1 addition & 1 deletion app/src/Lib/Traits/PrimaryLinkTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ trait PrimaryLinkTrait {
private $unkeyedActions = ['add', 'index'];

// Actions where the primary link can be obtained by looking up the record ID
private $lookupActions = ['delete', 'edit', 'view'];
private $lookupActions = ['delete', 'edit', 'canvas', 'view'];

// Where to redirect on add or edit, can be 'self', 'index', or 'primaryLink'
private $redirectGoal = 'index';
Expand Down
2 changes: 1 addition & 1 deletion app/src/Lib/Util/StringUtilities.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class StringUtilities {
public static function columnKey($modelsName, $c, $tz=null, $useCustomClMdlLabel=false): string {
if(strpos($c, "_id", strlen($c)-3)) {
// Key is of the form field_id, use .ct label instead
$k = $this->foreignKeyToClassName($c);
$k = self::foreignKeyToClassName($c);

return __d('controller', $k, [1]);
}
Expand Down
1 change: 1 addition & 0 deletions app/src/Model/Table/PeopleTable.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ public function initialize(array $config): void {
'entity' => [
'delete' => ['platformAdmin', 'coAdmin'],
'edit' => ['platformAdmin', 'coAdmin'],
'canvas' => ['platformAdmin', 'coAdmin'],
'view' => ['platformAdmin', 'coAdmin']
],
// Actions that operate over a table (ie: do not require an $id)
Expand Down
2 changes: 1 addition & 1 deletion app/templates/AdHocAttributes/columns.inc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ $bulkActions = [

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'ad_hoc_attributes'
];
2 changes: 1 addition & 1 deletion app/templates/AdHocAttributes/fields-nav.inc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ $topLinks = [];

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'ad_hoc_attributes'
];
2 changes: 1 addition & 1 deletion app/templates/Addresses/columns.inc
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ $bulkActions = [

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'addresses'
];
2 changes: 1 addition & 1 deletion app/templates/Addresses/fields-nav.inc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ $topLinks = [];

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'addresses'
];
2 changes: 1 addition & 1 deletion app/templates/EmailAddresses/columns.inc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ $bulkActions = [

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'email_addresses'
];
2 changes: 1 addition & 1 deletion app/templates/EmailAddresses/fields-nav.inc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ $topLinks = [];

$subnav = [
'name' => 'person',
'active' => 'attributes', // default for person. 'external identities' are special cased
'active' => 'person', // default for person. 'external identities' are special cased
'subActive' => 'email_addresses'
];
2 changes: 1 addition & 1 deletion app/templates/Identifiers/columns.inc
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ $bulkActions = [

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'identifiers'
];
2 changes: 1 addition & 1 deletion app/templates/Identifiers/fields-nav.inc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ $topLinks = [];

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'identifiers'
];
2 changes: 1 addition & 1 deletion app/templates/Names/columns.inc
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@ $bulkActions = [

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'names'
];
2 changes: 1 addition & 1 deletion app/templates/Names/fields-nav.inc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ $topLinks = [];

$subnav = [
'name' => 'person',
'active' => 'attributes',
'active' => 'person',
'subActive' => 'names'
];
Loading