attract.git
2 weeks agoReplaced Gravatar with self-hosted avatars master production
Sybren A. Stüvel [Fri, 31 May 2019 15:03:45 +0000 (17:03 +0200)]
Replaced Gravatar with self-hosted avatars

Requires Pillar 47474ac936ffb1d179161c8a3cac5d20e6005659

2 weeks agoConverted Gulp 3.9 → 4.0, removed livereload, and fixed security issues
Sybren A. Stüvel [Fri, 31 May 2019 11:45:51 +0000 (13:45 +0200)]
Converted Gulp 3.9 → 4.0, removed livereload, and fixed security issues

All done in one go, because things wouldn't build otherwise.

4 weeks agoRemoved and gitignored poetry.lock
Sybren A. Stüvel [Thu, 23 May 2019 14:23:45 +0000 (16:23 +0200)]
Removed and gitignored poetry.lock

The poetry.lock files are only relevant for repeatable deployments,
and the one in this project isn't used for that (only the Blender
Cloud project file is used, and that's still there).

5 weeks agoUpdated dependencies
Sybren A. Stüvel [Tue, 14 May 2019 12:33:55 +0000 (14:33 +0200)]
Updated dependencies

- SVN 0.3.43 → ~0.3 (which installed 0.3.46 and needed some fixes)
- mkdocs 0.17.2 → ~1.0 (which installed 1.0.4)
- mkdocs-material 2.2.2 → ~4.2 (which installed 4.2.0)

5 weeks agoFixed race condition in fetching task activities
Sybren A. Stüvel [Tue, 14 May 2019 12:23:13 +0000 (14:23 +0200)]
Fixed race condition in fetching task activities

Since MongoDB stores timestamps with a resolution of a millisecond, it was
possible for a task to be created and updated on the same timestamp, which
could cause an impossible ordering of the activities (edit before creation).
Sorting by ID instead of creation timestamp fixes this.

5 weeks agoREADME: added mention of Poetry and how to use it
Sybren A. Stüvel [Fri, 10 May 2019 13:04:32 +0000 (15:04 +0200)]
README: added mention of Poetry and how to use it

7 weeks agoMoved to Poetry
Sybren A. Stüvel [Fri, 26 Apr 2019 10:23:44 +0000 (12:23 +0200)]
Moved to Poetry

2 months agoClean up: Whitespace
Tobias Johansson [Thu, 4 Apr 2019 09:34:13 +0000 (11:34 +0200)]
Clean up: Whitespace

2 months agoUse kebab-case for vue names
Tobias Johansson [Thu, 4 Apr 2019 09:33:43 +0000 (11:33 +0200)]
Use kebab-case for vue names

https://vuejs.org/v2/guide/components-custom-events.html#Event-Names

2 months agoSilence warning about changing prop value
Tobias Johansson [Thu, 4 Apr 2019 08:18:24 +0000 (10:18 +0200)]
Silence warning about changing prop value

2 months agoWhitespace cleanup
Tobias Johansson [Wed, 3 Apr 2019 15:51:28 +0000 (17:51 +0200)]
Whitespace cleanup

2 months agoBetter initial component values
Tobias Johansson [Wed, 3 Apr 2019 15:50:15 +0000 (17:50 +0200)]
Better initial component values

2 months agoFix wrong prop type
Tobias Johansson [Wed, 3 Apr 2019 15:49:16 +0000 (17:49 +0200)]
Fix wrong prop type

2 months agoFix: Fail to render if parent was deleted
Tobias Johansson [Tue, 2 Apr 2019 12:09:20 +0000 (14:09 +0200)]
Fix: Fail to render if parent was deleted

2 months agoDocumentation of es6 transcompile and packaging
Tobias Johansson [Fri, 29 Mar 2019 09:44:04 +0000 (10:44 +0100)]
Documentation of es6 transcompile and packaging

2 months agoRefactored Date columns to have a common base
Tobias Johansson [Thu, 28 Mar 2019 13:36:30 +0000 (14:36 +0100)]
Refactored Date columns to have a common base

2 months agoAdd Created and Updated column
Tobias Johansson [Thu, 28 Mar 2019 11:48:15 +0000 (12:48 +0100)]
Add Created and Updated column

2 months agoStore filter/column settings in localStorage
Tobias Johansson [Thu, 28 Mar 2019 09:29:13 +0000 (10:29 +0100)]
Store filter/column settings in localStorage

The filter and column settings in tables are stored per project and
context in the browsers localStorage. This makes the table keep the
settings even if the browser is refreshed or restarted.

The table emits a "componentStateChanged" event containing the tables
current state (filter/column settings) which then is saved by the top
level component.

2 months agoUpdate package-lock.json
Francesco Siddi [Wed, 27 Mar 2019 13:27:07 +0000 (14:27 +0100)]
Update package-lock.json

The current packages where failing to build libsass on macOS.

2 months agoMake sure sort buttons is always clickable
Tobias Johansson [Fri, 22 Mar 2019 13:10:18 +0000 (14:10 +0100)]
Make sure sort buttons is always clickable

Hide part overflow of column label if there is not enough room

2 months agoAdd missing tooltips in table
Tobias Johansson [Fri, 22 Mar 2019 13:07:29 +0000 (14:07 +0100)]
Add missing tooltips in table

2 months agoAdd css class per task type to table columns
Tobias Johansson [Fri, 22 Mar 2019 13:06:53 +0000 (14:06 +0100)]
Add css class per task type to table columns

3 months agoMove table css from attract to pillar repo
Tobias Johansson [Wed, 20 Mar 2019 14:12:19 +0000 (15:12 +0100)]
Move table css from attract to pillar repo

3 months agoGeneralized table to not depend on project id
Tobias Johansson [Fri, 15 Mar 2019 09:18:23 +0000 (10:18 +0100)]
Generalized table to not depend on project id

3 months agoAdded comments and minor refactoring
Tobias Johansson [Thu, 14 Mar 2019 09:30:22 +0000 (10:30 +0100)]
Added comments and minor refactoring

3 months agoAttract multi edit: Disable save button during save
Tobias Johansson [Wed, 13 Mar 2019 14:25:32 +0000 (15:25 +0100)]
Attract multi edit: Disable save button during save

3 months agoAttract multi edit: Edit multiple tasks/shots/assets at the same time
Tobias Johansson [Wed, 13 Mar 2019 12:53:40 +0000 (13:53 +0100)]
Attract multi edit: Edit multiple tasks/shots/assets at the same time

For the user:
Ctrl + L-Mouse to select multiple tasks/shots/assets and then edit
the nodes as before. When multiple items are selected a chain icon
can be seen in editor next to the fields. If the chain is broken
it indicates that the values are not the same on all the selected
items.

When a field has been edited it will be marked with a green background
color.

The items are saved one by one in parallel. This means that one item
could fail to be saved, while the others get updated.

For developers:
The editor and activities has been ported to Vue. The table and has
been updated to support multi select.

MultiEditEngine is the core of the multi edit. It keeps track of
what values differs and what has been edited.

3 months agoAttract: Don't show add task button in cell if there are tasks
Tobias Johansson [Wed, 20 Feb 2019 15:46:02 +0000 (16:46 +0100)]
Attract: Don't show add task button in cell if there are tasks

Requested by @fsiddi

3 months agoNotifications regression: Notifications not created
Tobias Johansson [Tue, 19 Feb 2019 13:16:28 +0000 (14:16 +0100)]
Notifications regression: Notifications not created

Notifications for when someone posted a comment on your node
was not created.

Root cause was that default values defined in schema was not set,
resulting in activity subscriptions not being active.
There were 2 bugs preventing them to be set:
* The way the caching of markdown as html was implemented caused
  default values not to be set.
* Eve/Cerberus regression causes nested default values to fail
  https://github.com/pyeve/eve/issues/1174

Also, a 3rd bug caused nodes without a parent not to have a
subscription.

Migration scripts:
How markdown fields is cached has changed, and unused properties
of attachments has been removed.
./manage.py maintenance replace_pillar_node_type_schemas

Set the default values of activities-subscription
./manage.py maintenance fix_missing_activities_subscription_defaults

4 months agoRegression after ui update: Found by sentry
Tobias Johansson [Wed, 13 Feb 2019 14:09:49 +0000 (15:09 +0100)]
Regression after ui update: Found by sentry

4 months agoRegression fix: Highlight selected task "dot" in shots/assets table
Tobias Johansson [Wed, 13 Feb 2019 12:03:17 +0000 (13:03 +0100)]
Regression fix: Highlight selected task "dot" in shots/assets table

Quick hack to restore functionality. Known limitations:
* A direct link to task will not highlight it
* When a new task is created it will not be highlighted
* Selected row will not be highlighted

4 months agoVue Attract: Default sort shots by cut_in_timeline_in_frames
Tobias Johansson [Tue, 12 Feb 2019 11:59:01 +0000 (12:59 +0100)]
Vue Attract: Default sort shots by cut_in_timeline_in_frames

4 months agoVue Attract: Sort/filterable table based on Vue
Tobias Johansson [Tue, 12 Feb 2019 08:08:37 +0000 (09:08 +0100)]
Vue Attract: Sort/filterable table based on Vue

Initial commit implementing sortable and filterable tables for attract
using Vue.

4 months agoNavigation: Unified cloud navigation
Tobias Johansson [Thu, 7 Feb 2019 13:45:55 +0000 (14:45 +0100)]
Navigation: Unified cloud navigation

* Removed main drop down menu
* Added "My cloud" to user menu
* Attract/Flamenco is found under Production Tools menu
* Attract/Flamenco has the same navigation as its project

5 months agoGulp fix for NodeJS 10
Sybren A. Stüvel [Fri, 4 Jan 2019 13:20:46 +0000 (14:20 +0100)]
Gulp fix for NodeJS 10

6 months agoVue Comments: Comments ported to Vue + DnD fileupload
Tobias Johansson [Wed, 12 Dec 2018 10:45:47 +0000 (11:45 +0100)]
Vue Comments: Comments ported to Vue + DnD fileupload

* Drag and drop files to comment editor to add a file attachment
* Using Vue to render comments

Since comments now has attachments we need to update the schemas
./manage.py maintenance replace_pillar_node_type_schemas

9 months agoUse correct permission format for gulp-chmod
Francesco Siddi [Wed, 19 Sep 2018 12:45:30 +0000 (14:45 +0200)]
Use correct permission format for gulp-chmod

9 months agoUpdate pillar hooks path to eve_hooks
Francesco Siddi [Mon, 17 Sep 2018 07:13:42 +0000 (09:13 +0200)]
Update pillar hooks path to eve_hooks

Follow naming convention.

9 months agoAttract icon in the setup for Attract button
Pablo Vazquez [Fri, 7 Sep 2018 15:15:52 +0000 (17:15 +0200)]
Attract icon in the setup for Attract button

9 months agoMinor adjustments to layout edit settings
Pablo Vazquez [Fri, 7 Sep 2018 15:05:38 +0000 (17:05 +0200)]
Minor adjustments to layout edit settings

9 months agoAttract: class name fixes
Pablo Vazquez [Thu, 6 Sep 2018 14:56:05 +0000 (16:56 +0200)]
Attract: class name fixes

To work with Bootstrap 4

9 months agoGulp: Only chmod files if in production
Pablo Vazquez [Thu, 6 Sep 2018 13:47:05 +0000 (15:47 +0200)]
Gulp: Only chmod files if in production

9 months agoGulp: fix broken path in Sass
Pablo Vazquez [Thu, 6 Sep 2018 13:42:37 +0000 (15:42 +0200)]
Gulp: fix broken path in Sass

And when defining gulp-uglify-es needs '.default' at the end.

9 months agoNPM: Upgrade dependencies.
Pablo Vazquez [Thu, 6 Sep 2018 13:35:06 +0000 (15:35 +0200)]
NPM: Upgrade dependencies.

9 months agoCSS: Build bootstrap as part of main.css
Pablo Vazquez [Thu, 6 Sep 2018 13:34:53 +0000 (15:34 +0200)]
CSS: Build bootstrap as part of main.css

9 months agoLayout: #status-bar is no longer used
Pablo Vazquez [Thu, 6 Sep 2018 13:33:36 +0000 (15:33 +0200)]
Layout: #status-bar is no longer used

We now use toastr for notifications.

9 months agoBootstrap and jQuery as NPM dependencies.
Pablo Vazquez [Thu, 6 Sep 2018 13:31:48 +0000 (15:31 +0200)]
Bootstrap and jQuery as NPM dependencies.

9 months agoFlask's RequestWrapper changed the `json()` function to a `json` property
Sybren A. Stüvel [Wed, 29 Aug 2018 12:00:57 +0000 (14:00 +0200)]
Flask's RequestWrapper changed the `json()` function to a `json` property

11 months agoDocs: Fixed repository link
Sybren A. Stüvel [Wed, 27 Jun 2018 09:16:20 +0000 (11:16 +0200)]
Docs: Fixed repository link

14 months agoFix issue with task shortcodes
Sybren A. Stüvel [Thu, 19 Apr 2018 16:00:03 +0000 (18:00 +0200)]
Fix issue with task shortcodes

Part of the code assumed shortcodes were globally unique, and another part
assumed the shortcodes are unique per project (the latter is correct).

Now the project ID is taken from the URL the Subversion hook pushes to.

14 months agoAdded CLI command to SVN doc
Sybren A. Stüvel [Wed, 18 Apr 2018 11:59:48 +0000 (13:59 +0200)]
Added CLI command to SVN doc

14 months agoDefault to python3 in hook example (the script supports 2 and 3)
Sybren A. Stüvel [Wed, 18 Apr 2018 11:53:49 +0000 (13:53 +0200)]
Default to python3 in hook example (the script supports 2 and 3)

14 months agoAdded documentation for Subversion integration
Sybren A. Stüvel [Wed, 18 Apr 2018 11:51:40 +0000 (13:51 +0200)]
Added documentation for Subversion integration

14 months agoMarkdown is no longer needed
Pablo Vazquez [Wed, 4 Apr 2018 15:03:19 +0000 (17:03 +0200)]
Markdown is no longer needed

14 months agoFix commenting
Pablo Vazquez [Wed, 4 Apr 2018 15:02:52 +0000 (17:02 +0200)]
Fix commenting

It was missing Typewatch and csrf_token

Fixes T54518

14 months agoRemove v=xxx code from static file URLs
Sybren A. Stüvel [Fri, 23 Mar 2018 16:30:14 +0000 (17:30 +0100)]
Remove v=xxx code from static file URLs

Since Pillar d560f89704e3a6f4490df57712525048c469bed2 the URls for
static files are managed differently.

16 months agoRemove rsync_ui.sh and deploy.sh
Sybren A. Stüvel [Tue, 6 Feb 2018 10:03:29 +0000 (11:03 +0100)]
Remove rsync_ui.sh and deploy.sh

Those files are no longer needed now that we deploy our source files
inside the Docker image. See Blender Cloud commit 94ef616593e85.

16 months agoSwitch from .jade to .pug templates
Francesco Siddi [Thu, 1 Feb 2018 16:01:03 +0000 (17:01 +0100)]
Switch from .jade to .pug templates

No functional change, we simply align with the preprocessing pipeline
used in Pillar.

16 months agoFixed authentication issues in unit tests
Sybren A. Stüvel [Thu, 1 Feb 2018 10:43:14 +0000 (11:43 +0100)]
Fixed authentication issues in unit tests

The tests were logging in incorrectly, which came to light due to Pillar
commit 4b5a961e1422d8e976b2bf8bb9a4f91addf9bbec.

16 months agoRemove -x as default option to py.test
Sybren A. Stüvel [Thu, 1 Feb 2018 10:42:27 +0000 (11:42 +0100)]
Remove -x as default option to py.test

16 months agoUse pillar.auth.current_user instead of flask_login.current_user
Sybren A. Stüvel [Thu, 1 Feb 2018 10:42:13 +0000 (11:42 +0100)]
Use pillar.auth.current_user instead of flask_login.current_user

16 months agoUse mass-attach of project pictures, and only when they are actually used
Sybren A. Stüvel [Wed, 31 Jan 2018 13:49:38 +0000 (14:49 +0100)]
Use mass-attach of project pictures, and only when they are actually used

16 months agoDon't do DB query to inspect current user.
Sybren A. Stüvel [Wed, 24 Jan 2018 13:57:30 +0000 (14:57 +0100)]
Don't do DB query to inspect current user.

This is especially important for IP ranges on Organizations, which can
change user roles on the fly in memory.

18 months agoAdd config_local.py to .gitignore file
Francesco Siddi [Wed, 13 Dec 2017 10:19:51 +0000 (11:19 +0100)]
Add config_local.py to .gitignore file

This is useful when setting up Attract as a standalone application.

18 months agoAdd manage.py to run Pillar commands within the Attract repo
Francesco Siddi [Wed, 13 Dec 2017 10:19:19 +0000 (11:19 +0100)]
Add manage.py to run Pillar commands within the Attract repo

This is useful when setting up Attract as a standalone application.

18 months agoSwitch from macros to blocks for navigation menus
Francesco Siddi [Wed, 13 Dec 2017 10:12:17 +0000 (11:12 +0100)]
Switch from macros to blocks for navigation menus

For more information see commit a7693aa78dcf0a0a77e113f34afa63fb4f615441 in pillar.git

18 months agoIgnore docs build result
Francesco Siddi [Mon, 11 Dec 2017 11:52:09 +0000 (12:52 +0100)]
Ignore docs build result

18 months agoIntroducing docs 📚
Francesco Siddi [Mon, 11 Dec 2017 11:49:59 +0000 (12:49 +0100)]
Introducing docs 📚

18 months agoMerge branch 'production'
Sybren A. Stüvel [Tue, 12 Dec 2017 10:15:53 +0000 (11:15 +0100)]
Merge branch 'production'

18 months agoRevert "Reverting "Removed attract-user role.""
Sybren A. Stüvel [Tue, 12 Dec 2017 10:15:47 +0000 (11:15 +0100)]
Revert "Reverting "Removed attract-user role.""

This reverts commit e84e952169784c2e8d43624c4555c0b9c6cad77f.

18 months agoAlso grant attract-use capability to subscriber/demo roles
Sybren A. Stüvel [Tue, 12 Dec 2017 10:09:33 +0000 (11:09 +0100)]
Also grant attract-use capability to subscriber/demo roles

18 months agoReverting "Removed attract-user role."
Francesco Siddi [Fri, 8 Dec 2017 16:50:24 +0000 (17:50 +0100)]
Reverting "Removed attract-user role."

Temporarily reverting b40b6dadd222c7fa7290ddca854124ff0af76223 due to an issue found in roles and capabilities.

18 months agoRemoved attract-user role.
Sybren A. Stüvel [Thu, 7 Dec 2017 16:07:53 +0000 (17:07 +0100)]
Removed attract-user role.

It's no longer used now that we're using the capabilities system.

20 months agoGulp: added 'cleanup' task that erases all gulp-generated files.
Sybren A. Stüvel [Thu, 28 Sep 2017 13:35:15 +0000 (15:35 +0200)]
Gulp: added 'cleanup' task that erases all gulp-generated files.

This runs automatically when using --production

20 months agoGulp: replaced hardcoded paths with variables.
Sybren A. Stüvel [Thu, 28 Sep 2017 13:34:28 +0000 (15:34 +0200)]
Gulp: replaced hardcoded paths with variables.

20 months agoGulp: fixed license expression
Sybren A. Stüvel [Thu, 28 Sep 2017 13:33:54 +0000 (15:33 +0200)]
Gulp: fixed license expression

21 months agoEarly reject when user is anonymous.
Sybren A. Stüvel [Mon, 18 Sep 2017 12:04:52 +0000 (14:04 +0200)]
Early reject when user is anonymous.

This cuts down on info-level log entries, and prevents some Mongo queries.

21 months agoUsing capabilities instead of roles for access control.
Sybren A. Stüvel [Thu, 24 Aug 2017 12:21:33 +0000 (14:21 +0200)]
Using capabilities instead of roles for access control.

21 months agoRemoved some unused imports
Sybren A. Stüvel [Thu, 24 Aug 2017 12:21:23 +0000 (14:21 +0200)]
Removed some unused imports

23 months agoAllow deletion of tasks by non-admin users.
Sybren A. Stüvel [Thu, 13 Jul 2017 15:17:44 +0000 (17:17 +0200)]
Allow deletion of tasks by non-admin users.

23 months agoUpdated license and url in package.json
Francesco Siddi [Thu, 13 Jul 2017 14:15:00 +0000 (16:15 +0200)]
Updated license and url in package.json

2 years agoRemember last-visited Attract project in session
Sybren A. Stüvel [Fri, 16 Jun 2017 10:02:39 +0000 (12:02 +0200)]
Remember last-visited Attract project in session

This allows us to keep rendering the "Shots" and "Assets" links in the
sidebar, even when someone navigates away from the project scope.

2 years agoFixed Attract link not showing up in sidebar
Sybren A. Stüvel [Fri, 16 Jun 2017 09:55:30 +0000 (11:55 +0200)]
Fixed Attract link not showing up in sidebar

2 years agoHide Attract links & project settings for non-attract-users
Sybren A. Stüvel [Thu, 15 Jun 2017 14:26:17 +0000 (16:26 +0200)]
Hide Attract links & project settings for non-attract-users

2 years agoRemoved snippet we're not going to use in the forseeable future anyway.
Sybren A. Stüvel [Thu, 15 Jun 2017 10:50:41 +0000 (12:50 +0200)]
Removed snippet we're not going to use in the forseeable future anyway.

2 years agoOnly users with attract-user role can use Attract
Sybren A. Stüvel [Thu, 15 Jun 2017 10:50:28 +0000 (12:50 +0200)]
Only users with attract-user role can use Attract

Subscribers without that role still have read-only access to Attract,
assuming they have access to the project at all.

NOTE: this only handles the web interface. API calls are still governed
by the nodes permission system, which doesn't currently allow these kinds
of role-based user checks.

2 years agoDeclare user roles introduced by Attract
Sybren A. Stüvel [Thu, 15 Jun 2017 09:32:05 +0000 (11:32 +0200)]
Declare user roles introduced by Attract

2 years agoFixed project property loss when setting up for Attract
Sybren A. Stüvel [Thu, 15 Jun 2017 08:34:53 +0000 (10:34 +0200)]
Fixed project property loss when setting up for Attract

This was caused by attract_project_view() not passing the full project to
the decorated function. Now you can pass full_project=True to avoid
projections at all, and get the full thing.

2 years agoAdded project settings allowing setup + editing task types.
Sybren A. Stüvel [Wed, 14 Jun 2017 15:35:14 +0000 (17:35 +0200)]
Added project settings allowing setup + editing task types.

- Attract added to Project Settings screen
- setting up project for Attract
- editing shot/asset task types

To do: add checks that the user is allowed to use Attract in the first
place.

2 years agoAdded Attract project sidebar
Sybren A. Stüvel [Wed, 14 Jun 2017 14:28:13 +0000 (16:28 +0200)]
Added Attract project sidebar

2 years agoscrollHeaderHorizontal: don't use hardcoded class
Pablo Vazquez [Wed, 14 Jun 2017 16:31:09 +0000 (18:31 +0200)]
scrollHeaderHorizontal: don't use hardcoded class

2 years agoLists: Fixed header should let clicks go through
Pablo Vazquez [Wed, 14 Jun 2017 16:27:04 +0000 (18:27 +0200)]
Lists: Fixed header should let clicks go through

2 years agoLists: Don't wrap list's extra info (shots/tasks/assets count)
Pablo Vazquez [Wed, 14 Jun 2017 16:26:46 +0000 (18:26 +0200)]
Lists: Don't wrap list's extra info (shots/tasks/assets count)

2 years agoShots/Assets list: Fix fixed table header not resizing when adjusting col_main width
Pablo Vazquez [Wed, 14 Jun 2017 16:25:49 +0000 (18:25 +0200)]
Shots/Assets list: Fix fixed table header not resizing when adjusting col_main width

2 years agoitem_open: use toastr notification when failing
Pablo Vazquez [Wed, 14 Jun 2017 16:23:16 +0000 (18:23 +0200)]
item_open: use toastr notification when failing

2 years agoUpgrade jquery-resizable to 0.20
Pablo Vazquez [Wed, 14 Jun 2017 16:22:45 +0000 (18:22 +0200)]
Upgrade jquery-resizable to 0.20

https://github.com/RickStrahl/jquery-resizable

2 years agoAsset/shot lists: use task types from project's Attract properties
Sybren A. Stüvel [Wed, 14 Jun 2017 10:27:01 +0000 (12:27 +0200)]
Asset/shot lists: use task types from project's Attract properties

2 years agoUse menu from Pillar
Pablo Vazquez [Wed, 14 Jun 2017 12:58:48 +0000 (14:58 +0200)]
Use menu from Pillar

2 years agoUse notifications and menus from Pillar
Pablo Vazquez [Fri, 9 Jun 2017 14:33:34 +0000 (16:33 +0200)]
Use notifications and menus from Pillar

2 years agoFixed borked import
Sybren A. Stüvel [Wed, 31 May 2017 08:49:03 +0000 (10:49 +0200)]
Fixed borked import