-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add app bundles to the apps page and unbundle enterprise apps #4454
Conversation
@LukasReschke, thanks for your PR! By analyzing the history of the files in this pull request, we identified @MorrisJobke, @icewind1991 and @bartv2 to be potential reviewers. |
lib/private/Installer.php
Outdated
$this->appFetcher = $appFetcher; | ||
$this->appManager = $appManager; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will remove that again because the AppManager method is broken as described at #4453
* | ||
* @return array | ||
*/ | ||
public abstract function getAppIdentifiers(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Double space hurts my eyes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hehe ;-) – Resolved.
Will adjust based on the just merged #3195 |
0de0344
to
b4a67d9
Compare
Codecov Report
@@ Coverage Diff @@
## master #4454 +/- ##
============================================
- Coverage 54.1% 37.7% -16.41%
- Complexity 21716 21872 +156
============================================
Files 1334 1349 +15
Lines 83213 83870 +657
Branches 1315 1333 +18
============================================
- Hits 45025 31625 -13400
- Misses 38188 52245 +14057
Continue to review full report at Codecov.
|
b4a67d9
to
2d3b2dd
Compare
core/Controller/SetupController.php
Outdated
@@ -39,7 +39,7 @@ class SetupController { | |||
/** | |||
* @param Setup $setupHelper | |||
*/ | |||
function __construct(Setup $setupHelper) { | |||
public function __construct(Setup $setupHelper) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Revert
* | ||
* @return array | ||
*/ | ||
public abstract function getAppIdentifiers(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hehe ;-) – Resolved.
2d3b2dd
to
48a4504
Compare
I did some more work on this, this implements now app bundling as well as the app unbundling. To sum it up:
I'm not entirely happy with the interface yet and also it's kinda weird that you can only "enable" bundles but well, it works and enhancements are of course welcome. Also, we should make sure someone comes up with nice screenshots and descriptions for the new apps at https://apps.nextcloud.com/?order_by=last_release&ordering=desc. Feedback on the code and the implementation is already appreciated, meanwhile I'll clean up the source code a tad more :-) |
* {@inheritDoc} | ||
*/ | ||
public function getDescription() { | ||
return (string)$this->l10n->t('Apps for the Enterprise.'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs some marketing text.
* {@inheritDoc} | ||
*/ | ||
public function getDescription() { | ||
return (string)$this->l10n->t('Apps for groupware functionalities.'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Needs some marketing text.
Nice! The UI could use some love. :-) We definitely should also list the apps that are part of this bundle for transparency. Maybe screenshots,logos or something else graphical? @jancborchardt What do you think? |
I removed the UI from the installer again. Right now the only thing is in the admin page, should I add it again? I don't have a big preference. Hehe 😉 |
I think it is ok to have it only on the apps page. as long as it looks nice and people find it. ;-) ;-) |
@LukasReschke layout-wise I was thinking to use the appstore-style layout like so? Basically not using the
I assume you need to push code around before I can do detail layout fixes? |
@jancborchardt No idea how to do that in CSS and the JS that I've adjusted for that is also kinda horrible but here we go: 35665da Can you modify 35665da#diff-008343a6a32a47c315bd61fa9d9a2f3dR76 until it looks good? Also add an "enable" button please, I'll then make sure that this one also will work ;) |
What if the app store is not available?
Could some apps be removed from the bundle? Because user_ldap and user_saml together makes sense only in very few cases. |
Layout is adjusted as discussed with @jancborchardt. |
Well. Then you need to download the app manually. That's life. Also moving some of the enterprise apps to the app store has the same conclusion: Someone needs to manually upload the apps. 😉 That said, nowadays I believe having the web root writable is actually rather good also since we want to move to automatic updates in the future…
Talk to @karlitschek and @jospoortvliet about that ;) – I don't have big preferences :) |
* | ||
* @return string | ||
*/ | ||
public abstract function getDescription(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's kill that as the UI doesn't show it anyways.
cb56200
to
56070a8
Compare
@eppfel I would say tho best do that in a separate pull request. This is mergeable as of the current state, which we should do and then any adjustments can be made as a follow-up. So hopefully we can merge this before that meetup. :) |
Sure... |
@LukasReschke so here we wait for the Drone tests? |
Yeah. If some fail we then check why and merge if they are unrelated. The joy of not having enough CI hardware 😉 |
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
8c461eb
to
d0e0bc5
Compare
I will merge this once CI is fine. |
This adds the app bundles to the apps page and introduces the internal classes as a first step to getting there.
Bundles are currently hard-coded and will in the future likely be delivered by the AppStore as well. But for now, let's keep it simple. The problem is that if we go that way we need some cryptographic signing to prevent an attacker creating malicious bundles with their app. Otherwise, they could just upload a malicious app with their signature and replace the pre-defined bundles.
If an admin chooses a bundle the apps in the bundle will be downloaded (if necessary), installed and enabled. So right now I've created the "Enterprise" bundle which showcases local apps (and also discovered an independent bug: #4453) and a "Groupware" one which downloads the calendar and contacts app.
Todos
… some todos that I've written down might also be moved to later PRs: