Merge branch '004' into develop

This commit is contained in:
Baptiste Grob
2020-07-24 12:18:09 +02:00
243 changed files with 43408 additions and 8500 deletions

View File

@@ -75,6 +75,7 @@
input.sk-input.mt-5.sk-base(
name='server',
ng-model='self.state.formData.url',
ng-change='self.onHostInputChange()'
placeholder='Server URL',
required='',
type='text'
@@ -122,14 +123,14 @@
)
p.sk-p Stay signed in
label.sk-panel-row.justify-left(ng-if='self.notesAndTagsCount() > 0')
.sk-panel-row
input(
ng-bind='true',
ng-change='self.mergeLocalChanged()',
ng-model='self.state.formData.mergeLocal',
type='checkbox'
)
| Merge local data ({{self.notesAndTagsCount()}} notes and tags)
.sk-horizontal-group.tight
input(
ng-bind='true',
ng-change='self.mergeLocalChanged()',
ng-model='self.state.formData.mergeLocal',
type='checkbox'
)
p.sk-p Merge local data ({{self.notesAndTagsCount()}} notes and tags)
.sk-panel-section(ng-if='self.state.formData.mfa')
form.sk-panel-form(ng-submit='self.submitMfaForm()')
.sk-p.sk-panel-row {{self.state.formData.mfa.message}}
@@ -188,7 +189,7 @@
) {{self.syncStatus.current}}/{{self.syncStatus.total}}
.sk-panel-row
a.sk-a.info.sk-panel-row.condensed(
ng-click="self.openPasswordWizard('change-pw')"
ng-click="self.openPasswordWizard()"
)
| Change Password
a.sk-a.info.sk-panel-row.condensed(
@@ -196,21 +197,15 @@
ng-show='self.state.user'
)
| Manage Privileges
a.sk-panel-row.justify-left.condensed.success(
ng-click="self.openPasswordWizard('upgrade-security')",
ng-if='self.state.securityUpdateAvailable'
)
.inline.sk-circle.small.success.mr-8
.inline Security Update Available
.sk-panel-section
.sk-panel-section-title Encryption
.sk-panel-section-subtitle.info(ng-if='self.encryptionEnabled()')
.sk-panel-section-subtitle.info(ng-if='self.state.encryptionEnabled')
| {{self.encryptionStatusForNotes()}}
p.sk-p
| {{self.encryptionStatusString()}}
| {{self.state.encryptionStatusString}}
.sk-panel-section
.sk-panel-section-title Passcode Lock
div(ng-if='!self.hasPasscode()')
div(ng-if='!self.state.hasPasscode')
div(ng-if='self.state.canAddPasscode')
.sk-panel-row(ng-if='!self.state.formData.showPasscodeForm')
.sk-button.info(
@@ -247,7 +242,7 @@
a.neutral.sk-a.sk-panel-row(
ng-click='self.state.formData.showPasscodeForm = false'
) Cancel
div(ng-if='self.hasPasscode() && !self.state.formData.showPasscodeForm')
div(ng-if='self.state.hasPasscode && !self.state.formData.showPasscodeForm')
.sk-p
| Passcode lock is enabled.
.sk-notification.contrast
@@ -281,7 +276,7 @@
.sk-p
| Download a backup of all your data.
.sk-panel-row
form.sk-panel-form.sk-panel-row(ng-if='self.encryptedBackupsAvailable()')
form.sk-panel-form.sk-panel-row(ng-if='self.state.encryptionEnabled')
.sk-input-group
label.sk-horizontal-group.tight
input(

View File

@@ -7,19 +7,24 @@
target='blank'
)
menu-row(label="'Download Actions'")
div(ng-repeat='extension in self.state.extensions')
div(ng-if='self.loadingExtensions')
.sk-menu-panel-header
.sk-menu-panel-column
.sk-menu-panel-header-title Loading...
.sk-spinner.small.loading
div(ng-repeat='extension in self.state.extensions track by extension.uuid; self.loadingExtensions = false')
.sk-menu-panel-header(
ng-click='extension.hide = !extension.hide; $event.stopPropagation();'
ng-click='self.updateExtension(extension, { hidden: !extension.hidden }); $event.stopPropagation();'
)
.sk-menu-panel-column
.sk-menu-panel-header-title {{extension.name}}
.sk-spinner.small.loading(ng-if='extension.loading')
div(ng-if='extension.hide') …
div(ng-if='extension.hidden') …
menu-row(
action='self.executeAction(action, extension);',
action='self.executeAction(action, extension)',
label='action.label',
ng-if='!extension.hide',
ng-repeat='action in extension.actionsWithContextForItem(self.props.item)',
ng-if='!extension.hidden',
ng-repeat='action in extension.actionsWithContextForItem(self.props.item) track by $index',
disabled='action.running'
spinner-class="action.running ? 'info' : null",
sub-rows='action.subrows',
subtitle='action.desc'

View File

@@ -11,5 +11,7 @@
| {{ctrl.component.name}}
a.sk-a.info.close-button(ng-click="ctrl.dismiss()") Close
component-view.component-view(
component="ctrl.component"
ng-if='ctrl.component.active'
component-uuid="ctrl.component.uuid",
application='ctrl.application'
)

View File

@@ -4,19 +4,9 @@
.sk-app-bar-item
.sk-label.warning There was an issue loading {{ctrl.component.name}}.
.right
.sk-app-bar-item(ng-click='ctrl.reloadComponent()')
.sk-app-bar-item(ng-click='ctrl.reloadIframe()')
.sk-button.info
.sk-label Reload
.sn-component(ng-if='ctrl.showNoThemesMessage')
.sk-app-bar.no-edges.no-top-edge.dynamic-height
.left
.sk-app-bar-item
.sk-label.warning This extension does not support themes.
.right
.sk-app-bar-item(ng-click='ctrl.dismissNoThemesMessage()')
.sk-label Dismiss
.sk-app-bar-item(ng-click='ctrl.disableActiveTheme()')
.sk-label Disable Active Theme
.sn-component(ng-if='ctrl.expired')
.sk-app-bar.no-edges.no-top-edge.dynamic-height
.left
@@ -84,10 +74,11 @@
| version of the app.
| Ensure you are running at least version 2.1 on all platforms.
iframe(
data-component-id='{{ctrl.component.uuid}}',
data-component-id='{{ctrl.componentUuid}}',
frameborder='0',
ng-attr-id='component-iframe-{{ctrl.component.uuid}}',
ng-if='ctrl.component && ctrl.componentValid',
ng-init='ctrl.onIframeInit()'
ng-attr-id='component-iframe-{{ctrl.componentUuid}}',
ng-if='ctrl.componentUuid && !ctrl.reloading && ctrl.componentValid',
ng-src='{{ctrl.getUrl() | trusted}}',
sandbox='allow-scripts allow-top-navigation-by-user-activation allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-modals allow-forms allow-downloads'
)

View File

@@ -1,31 +0,0 @@
.sn-component
#conflict-resolution-modal.sk-modal.large
.sk-modal-background
.sk-modal-content
.sk-panel
.sk-panel-header
h1.sk-panel-header-title Conflicted items — choose which version to keep
.sk-horizontal-group
a.sk-a.info.close-button(ng-click="ctrl.keepItem1()") Keep left
a.sk-a.info.close-button(ng-click="ctrl.keepItem2()") Keep right
a.sk-a.info.close-button(ng-click="ctrl.keepBoth()") Keep both
a.sk-a.info.close-button(ng-click="ctrl.export()") Export
a.sk-a.info.close-button(
ng-click="ctrl.dismiss(); $event.stopPropagation()"
) Close
.sk-panel-content.selectable
.sk-panel-section
h3
strong Content type:
| {{ctrl.contentType}}
p
| You may wish to look at the "created_at" and "updated_at" fields
| of the items to gain better context in deciding which to keep.
#items
#item1.sk-panel.static.item
p.normal(style="white-space: pre-wrap; font-size: 16px;")
| {{ctrl.item1Content}}
.border
#item2.sk-panel.static.item
p.normal(style="white-space: pre-wrap; font-size: 16px;")
| {{ctrl.item2Content}}

View File

@@ -5,28 +5,25 @@
.sk-menu-panel-header-title Note Editor
menu-row(
action='self.selectComponent(null)',
circle="self.selectedEditor == null && 'success'",
circle="!self.selectedEditorUuid && 'success'",
label="'Plain Editor'"
)
menu-row(
ng-repeat='editor in self.state.editors'
ng-repeat='editor in self.state.editors track by editor.uuid'
action='self.selectComponent(editor)',
button-action='self.toggleDefaultForEditor(editor)',
button-class="self.state.defaultEditor == editor ? 'warning' : 'info'",
button-text="self.state.defaultEditor == editor ? 'Undefault' : 'Set Default'",
circle="self.selectedEditor === editor && 'success'",
has-button='self.selectedEditor == editor || self.state.defaultEditor == editor',
button-class="self.isEditorSelected(editor) ? 'warning' : 'info'",
button-text="self.isEditorDefault(editor) ? 'Undefault' : 'Set Default'",
circle="self.isEditorSelected(editor) && 'success'",
has-button='self.isEditorSelected(editor) || isEditorDefault(editor)',
label='editor.name',
)
.sk-menu-panel-column(
ng-if='editor.content.conflict_of || self.shouldDisplayRunningLocallyLabel(editor)'
ng-if='editor.conflictOf'
)
strong.danger.medium-text(
ng-if='editor.content.conflict_of'
.info(
ng-if='editor.conflictOf'
) Conflicted copy
.sk-sublabel(
ng-if='self.shouldDisplayRunningLocallyLabel(editor)'
) Running Locally
a.no-decoration(
href='https://standardnotes.org/extensions',
ng-if='self.state.editors.length == 0',

View File

@@ -15,7 +15,6 @@
form(ng-submit="ctrl.submit()")
input.sk-input.contrast(
ng-model="ctrl.formData.input"
placeholder="{{ctrl.placeholder}}"
should-focus="true"
sn-autofocus="true"
type="{{ctrl.type}}"

View File

@@ -5,133 +5,45 @@
.sn-component
.sk-panel
.sk-panel-header
.sk-panel-header-title {{ctrl.title}}
.sk-panel-header-title {{ctrl.state.title}}
a.sk-a.info.close-button(ng-click='ctrl.dismiss()') Close
.sk-panel-content
div(ng-if='ctrl.step == 0')
div(ng-if='ctrl.changePassword')
p.sk-p.sk-panel-row
| Changing your password involves changing your encryption key,
| which requires your data to be re-encrypted and synced.
| If you have many items, syncing your data can take several minutes.
p.sk-p.sk-panel-row
| You must keep the application window open during this process.
div(ng-if='ctrl.securityUpdate')
p.sk-p.sk-panel-row
| A new update is available for your account. Updates address
| improvements and enhancements to our security specification.
| This process will guide you through the update, and perform the
| steps necessary with your supervision.
.sk-panel-row
.sk-panel-column
p.sk-p For more information about security updates, please visit
a.sk-a.info(
href='https://standardnotes.org/help/security',
rel='noopener',
target='_blank'
) standardnotes.org/help/security.
p.sk-panel-row.sk-p
.info Press Continue to proceed.
p
.sk-panel-section(ng-if='ctrl.step > 0')
.sk-panel-section-title Step {{ctrl.step}} — {{ctrl.titleForStep(ctrl.step)}}
div(ng-if='ctrl.step == 1')
p.sk-panel-row.sk-p
| As a result of this process, the entirety of your data will be
| re-encrypted and synced to your account. This is a generally safe
| process, but unforeseen factors like poor network connectivity or a
| sudden shutdown of your computer may cause this process to fail. It's
| best to be on the safe side before large operations such as this one.
.sk-panel-row
.sk-panel-row
.sk-button-group
.sk-button.info(ng-click='ctrl.downloadBackup(true)')
.sk-label Download Encrypted Backup
.sk-button.info(ng-click='ctrl.downloadBackup(false)')
.sk-label Download Decrypted Backup
div(ng-if='ctrl.step == 2')
p.sk-p.sk-panel-row
| As a result of this process, your encryption keys will change. Any
| device on which you use Standard Notes will need to end its session.
| After this process completes, you will be asked to sign back in.
p.sk-p.bold.sk-panel-row.info-i
| Please sign out of all applications (excluding this one), including:
ul
li.sk-p Desktop
li.sk-p Web (Chrome, Firefox, Safari)
li.sk-p Mobile (iOS and Android)
p.sk-p.sk-panel-row
| If you do not currently have access to a device you're signed in on,
| you may proceed, but must make signing out and back in the first step
| upon gaining access to that device.
p.sk-p.sk-panel-row
| Press Continue only when you have
| completed signing out of all your devices.
div(ng-if='ctrl.step == 3')
div(ng-if='ctrl.changePassword')
div(ng-if='ctrl.securityUpdate')
p.sk-panel-row
| Enter your current password. We'll run this through our encryption
| scheme to generate strong new encryption keys.
.sk-panel-row
.sk-panel-row
.sk-panel-column.stretch
form.sk-panel-form
input.sk-input.contrast(
ng-model='ctrl.formData.currentPassword',
placeholder='Current Password',
should-focus='true',
sn-autofocus='true',
type='password'
)
input.sk-input.contrast(
ng-if='ctrl.changePassword',
ng-model='ctrl.formData.newPassword',
placeholder='New Password',
type='password'
)
input.sk-input.contrast(
ng-if='ctrl.changePassword',
ng-model='ctrl.formData.newPasswordConfirmation',
placeholder='Confirm New Password',
type='password'
)
div(ng-if='ctrl.step == 4')
p.sk-panel-row
| Your data is being re-encrypted with your new
| keys and synced to your account.
p.sk-panel-row.danger(ng-if='ctrl.lockContinue')
| Do not close this window until this process completes.
.sk-panel-row
.sk-panel-column
.sk-spinner.small.inline.info.mr-5(ng-if='ctrl.formData.processing')
.inline.bold(
ng-class="{'info' : !ctrl.formData.statusError, 'error' : ctrl.formData.statusError}"
.sk-panel-section(ng-if='ctrl.state.step == 1')
.sk-panel-row
.sk-panel-column.stretch
form.sk-panel-form
input.sk-input.contrast(
ng-model='ctrl.state.formData.currentPassword',
placeholder='Current Password',
should-focus='true',
sn-autofocus='true',
type='password'
)
| {{ctrl.formData.status}}
.sk-panel-column(
delay='1000',
delay-hide='true',
show='ctrl.syncStatus.syncOpInProgress || ctrl.syncStatus.needsMoreSync'
)
p.info
| Syncing {{ctrl.syncStatus.current}}/{{ctrl.syncStatus.total}}
div(ng-if='ctrl.step == 5')
div(ng-if='ctrl.changePassword')
p.sk-p.sk-panel-row.info-i Your password has been successfully changed.
div(ng-if='ctrl.securityUpdate')
p.sk-p.sk-panel-row.info-i
| The security update has been successfully applied to your account.
p.sk-p.sk-panel-row
| Please ensure you are running the latest version of Standard Notes
| on all platforms to ensure maximum compatibility.
p.sk-p.sk-panel-row
| You may now sign back in on all your devices and close this window.
input.sk-input.contrast(
ng-if='ctrl.props.changePassword',
ng-model='ctrl.state.formData.newPassword',
placeholder='New Password',
type='password'
)
input.sk-input.contrast(
ng-if='ctrl.props.changePassword',
ng-model='ctrl.state.formData.newPasswordConfirmation',
placeholder='Confirm New Password',
type='password'
)
.sk-panel-section(ng-if='ctrl.state.step == 2')
div(ng-if='ctrl.props.changePassword')
p.sk-p.sk-panel-row.info-i Your password has been successfully changed.
div(ng-if='ctrl.props.securityUpdate')
p.sk-p.sk-panel-row.info-i
| The account update has been successfully applied to your account.
p.sk-p.sk-panel-row
| Please ensure you are running the latest version of Standard Notes
| on all platforms to ensure maximum compatibility.
.sk-panel-footer
.empty
a.sk-a.info.right(
ng-class="{'disabled' : ctrl.lockContinue}",
ng-click='ctrl.nextStep()',
ng-disabled='ctrl.lockContinue')
.sk-spinner.small.inline.info.mr-5(ng-if='ctrl.showSpinner')
| {{ctrl.continueTitle}}
ng-disabled='ctrl.state.lockContinue')
.sk-spinner.small.inline.info.mr-5(ng-if='ctrl.state.showSpinner')
| {{ctrl.state.continueTitle}}

View File

@@ -46,6 +46,6 @@
| an unlocked application, but do not affect data encryption state.
p.sk-p
| Privileges sync across your other devices; however, note that if you
| require a "Local Passcode" privilege, and another device does not have
| a local passcode set up, the local passcode requirement will be ignored
| require an "Application Passcode" privilege, and another device does not have
| an application passcode set up, the application passcode requirement will be ignored
| on that device.

View File

@@ -22,6 +22,7 @@
style="white-space: pre-wrap; font-size: 16px;"
) {{ctrl.content.text}}
component-view.component-view(
component="ctrl.editor"
ng-if="ctrl.editor"
component-uuid="ctrl.editor.uuid"
ng-if="ctrl.editor",
application='ctrl.application'
)