Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Handle corrupted scope values
Due to a bug (fixed some commits ago) in the UsersController of the
settings app the scope of the properties can be null (for example, if
lookup server upload was disabled and the user then changed the display
name in the profile information). In that case now the scope menu icon
shows an error to inform the user.

The scope value will not change when other properties are modified until
the user chooses an explicit value from the menu. Note that until a
scope is explicitly set the property will behave as if it is private.

Signed-off-by: Daniel Calviño Sánchez <[email protected]>
  • Loading branch information
danxuliu committed Apr 23, 2021
commit 546be0ea633af858065624b2077b8d85b91ee245
15 changes: 14 additions & 1 deletion apps/settings/js/federationsettingsview.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,14 @@
if (!scopeOnly) {
self._config.set(field, $('#' + field).val());
}
self._config.set(field + 'Scope', $('#' + field + 'scope').val());
// A scope could have been stored as null due to a previous bug.
// Null values should be kept as such until the user explicitly
// sets the right value, but they will be returned as empty
// strings in the template (which would overwrite the null value
// if sent). Due to this an extra class is needed to
// differentiate them.
var initialScopeValue = $('#' + field + 'scope').hasClass('corrupted-scope-value') ? undefined : $('#' + field + 'scope').val();
self._config.set(field + 'Scope', initialScopeValue);

// Set inputs whenever model values change
if (!scopeOnly) {
Expand Down Expand Up @@ -219,6 +226,12 @@
$icon.addClass('icon-link');
$icon.removeClass('hidden');
break;
case '':
case null:
case undefined:
$icon.addClass('icon-error');
$icon.removeClass('hidden');
break;
}
}
});
Expand Down
14 changes: 7 additions & 7 deletions apps/settings/templates/settings/personal/personal.info.php
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
</div>
</div>
<span class="icon-checkmark hidden"></span>
<input type="hidden" id="avatarscope" value="<?php p($_['avatarScope']) ?>">
<input type="hidden" id="avatarscope" value="<?php p($_['avatarScope']) ?>"<?php if (is_null($_['avatarScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<div class="personal-settings-setting-box personal-settings-group-box section">
Expand Down Expand Up @@ -124,7 +124,7 @@
<?php } ?>
<span class="icon-checkmark hidden"></span>
<span class="icon-error hidden" ></span>
<input type="hidden" id="displaynamescope" value="<?php p($_['displayNameScope']) ?>">
<input type="hidden" id="displaynamescope" value="<?php p($_['displayNameScope']) ?>"<?php if (is_null($_['displayNameScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<div class="personal-settings-setting-box">
Expand Down Expand Up @@ -172,7 +172,7 @@
<?php if ($_['displayNameChangeSupported']) { ?>
<em><?php p($l->t('For password reset and notifications')); ?></em>
<?php } ?>
<input type="hidden" id="emailscope" value="<?php p($_['emailScope']) ?>">
<input type="hidden" id="emailscope" value="<?php p($_['emailScope']) ?>"<?php if (is_null($_['emailScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php if (!empty($_['phone']) || $_['lookupServerUploadEnabled']) { ?>
Expand All @@ -193,7 +193,7 @@
placeholder="<?php p($l->t('Your phone number')); ?>"
autocomplete="on" autocapitalize="none" autocorrect="off" />
<span class="icon-checkmark hidden"></span>
<input type="hidden" id="phonescope" value="<?php p($_['phoneScope']) ?>">
<input type="hidden" id="phonescope" value="<?php p($_['phoneScope']) ?>"<?php if (is_null($_['phoneScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand All @@ -215,7 +215,7 @@
value="<?php p($_['address']) ?>"
autocomplete="on" autocapitalize="none" autocorrect="off" />
<span class="icon-checkmark hidden"></span>
<input type="hidden" id="addressscope" value="<?php p($_['addressScope']) ?>">
<input type="hidden" id="addressscope" value="<?php p($_['addressScope']) ?>"<?php if (is_null($_['addressScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand Down Expand Up @@ -268,7 +268,7 @@
} ?>
/>
<span class="icon-checkmark hidden"></span>
<input type="hidden" id="websitescope" value="<?php p($_['websiteScope']) ?>">
<input type="hidden" id="websitescope" value="<?php p($_['websiteScope']) ?>"<?php if (is_null($_['websiteScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand Down Expand Up @@ -321,7 +321,7 @@
} ?>
/>
<span class="icon-checkmark hidden"></span>
<input type="hidden" id="twitterscope" value="<?php p($_['twitterScope']) ?>">
<input type="hidden" id="twitterscope" value="<?php p($_['twitterScope']) ?>"<?php if (is_null($_['twitterScope'])): ?> class="corrupted-scope-value"<?php endif ?>>
</form>
</div>
<?php } ?>
Expand Down