-
Notifications
You must be signed in to change notification settings - Fork 296
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
Plugin system #14
Comments
Great work! Congratulation. Well, what does @sebsauvage thinks about the seditious team building the seditious shaarli? |
Thanks @nodiscc for this thorough investigation work.
In other words, why put the HTML files in a separate We'll be bound of having "plugins" (e.g. share to Twitter) which just add a link in an existing template. those plugins would not have a different HTML file, which means some plugins are in the main code directly, and others in the plugins directory. After a while, it'll just be confusing. For example, we currently have thumbnails for a couple of sites in the main code. Why would we treat Deviantart differently, and have that turned off by default, whereas e.g. xkcd is included inthe main code. Or does that mean we move xkcd as a plugin, and turn it off by default? Doesn't seem like a better idea to me. So either create plugins that are just features available in the main code, but turned off by default, or not have any plugins, keep the code simple (KISS-principle) and just be firm in refusing some features. Although I'm not completely against the first option, I think it makes more sense to keep it simple. Otherwise we'll soon be building some kind of half-backed social media site (multi-user link sharing with comments included), which will do a lot of things in a mediocre way, an nothing in an excellent way... That being said, I would call out the themes functionality as something that makes sense to be built as "plugin", e.g. a |
I have just created a page on the wiki to list plugin suggestions, as a way to unclutter the issues list. But that's before I had realized we had this issue open. Should we delete the wiki page instead? |
@e2jk Thanks for creating the wiki page; we can move "wontfix" plugin requests there (eg. #58). Just make sure the wiki page is linked from somewhere (the wiki Home page, or the README)
I'd keep both for the moment, this issue is a great way to see what would be required for a plugin system, as the current proposal #52 is not complete (I'll have to rebase/redo it on top of the latest changes). We can close this issue when the plugin system is implemented. For example, judging by the list at the top:
|
Plugin system pull request at #129 |
I've closed #129. The plugin system is available in branch https://github.com/shaarli/Shaarli/tree/new-plugin-system. Feel free to add your work on top of it and send Pull Requests. Items that need to be dealt with before merging:
I'll sort more items from the original list and forward people here. |
Clean Pull Request back at #164 |
Blocked by #163 |
Closing this with #275. Please open separate issues for plugin suggestion. |
When we try to access the atom feed and have no bookmarks, it raised the following exception : ``` Call to a member function reorder() on array /webroot/application/bookmark/BookmarkFileService.php:143 #0 /webroot/application/feed/FeedBuilder.php(106): Shaarli\Bookmark\BookmarkFileService->search(Array, 'public', false, false, true) shaarli#1 /webroot/application/front/controller/visitor/FeedController.php(47): Shaarli\Feed\FeedBuilder->buildData('atom', Array) shaarli#2 /webroot/application/front/controller/visitor/FeedController.php(20): Shaarli\Front\Controller\Visitor\FeedController->processRequest('atom', Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#3 [internal function]: Shaarli\Front\Controller\Visitor\FeedController->atom(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) shaarli#4 /webroot/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) shaarli#5 /webroot/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) shaarli#6 /webroot/application/front/ShaarliMiddleware.php(55): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#7 [internal function]: Shaarli\Front\ShaarliMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route)) shaarli#8 /webroot/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Array, Array) shaarli#9 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route)) shaarli#10 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route)) shaarli#11 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#12 /webroot/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#13 /webroot/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#14 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#15 /webroot/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#16 /webroot/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#17 /webroot/index.php(177): Slim\App->run(true) shaarli#18 {main} ```
When we try to access the atom feed and have no bookmarks, it raised the following exception : ``` Call to a member function reorder() on array /webroot/application/bookmark/BookmarkFileService.php:143 #0 /webroot/application/feed/FeedBuilder.php(106): Shaarli\Bookmark\BookmarkFileService->search(Array, 'public', false, false, true) #1 /webroot/application/front/controller/visitor/FeedController.php(47): Shaarli\Feed\FeedBuilder->buildData('atom', Array) #2 /webroot/application/front/controller/visitor/FeedController.php(20): Shaarli\Front\Controller\Visitor\FeedController->processRequest('atom', Object(Slim\Http\Request), Object(Slim\Http\Response)) #3 [internal function]: Shaarli\Front\Controller\Visitor\FeedController->atom(Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #4 /webroot/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) #5 /webroot/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Slim\Http\Request), Object(Slim\Http\Response), Array) shaarli#6 /webroot/application/front/ShaarliMiddleware.php(55): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#7 [internal function]: Shaarli\Front\ShaarliMiddleware->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route)) shaarli#8 /webroot/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array(Array, Array) shaarli#9 [internal function]: Slim\DeferredCallable->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route)) shaarli#10 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Slim\Http\Request), Object(Slim\Http\Response), Object(Slim\Route)) shaarli#11 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->Slim\{closure}(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#12 /webroot/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#13 /webroot/vendor/slim/slim/Slim/App.php(503): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#14 /webroot/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#15 /webroot/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#16 /webroot/vendor/slim/slim/Slim/App.php(297): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response)) shaarli#17 /webroot/index.php(177): Slim\App->run(true) shaarli#18 {main} ```
update: See https://github.com/shaarli/Shaarli/wiki/Ideas-for-plugins
Hey, I did a roundup of issues on https://github.com/sebsauvage/Shaarli/issues and tried to list requests/bugs that would fit as plugins. Then see what we have:
Add/remove page elements
Affichage de la date, de l'heure heure et vie privée sebsauvage/Shaarli#51: Make timestamps optionalimplementedRSS/Atom: add an option to disable permalinks sebsauvage/Shaarli#113: RSS/Atom: make permalinks optionalFIXED in Feature: enable/disable permalinks for RSS #63piwik support sebsauvage/Shaarli#81: piwik support (custom HTML head)closed by requesterRemove the annoying parameters added by facebook sebsauvage/Shaarli#168: Remove annoying URL parameters (facebook, utm-source...)fixed in 01b8f52Landmark sebsauvage/Shaarli#105: Adds landmarks (geo-tags) to posts (implemented)no reply, please open a new issue if interestedStylesheet selector sebsauvage/Shaarli#95: Adds a stylesheet selectormoved to Add themes management #22New bookmarklet for note taking sebsauvage/Shaarli#59: New bookmarklet for note takingmoved to New bookmarklet for note taking #142Add a "Reader later" button sebsauvage/Shaarli#7: add a Read later buttonmoved to Add a "Read later" bookmarklet #143add "Play videos" button in toolbar sebsauvage/Shaarli#162: add "Play videos" button in toolbarimplemented, waiting innew-plugin-system
branchThere should be one "feed" button sebsauvage/Shaarli#28: There should be only one "feed" button (make buttons optional)fixedpubsubhubbub wrongly supported sebsauvage/Shaarli#187: pubsubhubbub wrongly supportedfixedSupport coloration syntaxique et balise de code sebsauvage/Shaarli#144: Support coloration syntaxique et balise de code (implémenté, ajoute Geshi et un include dans index.php)please open a new issue if interestedAdd origin/via field sebsauvage/Shaarli#158: Add origin/via field-> WONTFIX, not in core, maybe as a plugin, documented in wikiA Video Wall? sebsauvage/Shaarli#71: Video playback support in picture wallimplemented, , waiting innew-plugin-system
branchautomatic tags sebsauvage/Shaarli#152: (Tag autocompletion based on description)corner case, wontfixPingback support sebsauvage/Shaarli#75: Pingback support (partially implemented)please open a new issue if interestedCouple of Modification Requests sebsauvage/Shaarli#203: Display timestamps on daily pageFIXED in 38a2d03Sharing tools
Publish to Twitter (with bit.ly) and Facebook sebsauvage/Shaarli#70: Publish to Twitter (with bit.ly) and Facebookplease open a new issue if interested, should be a generic social service sharing plugin, without user trackingEnlever le QR code sebsauvage/Shaarli#171: Make QR code optionalmoved to Move QR code as a plugin #57Use local QR-Code generation instead of external service. sebsauvage/Shaarli#14: Use local QR-Code generation instead of external servicefixedThumbnailers
Reduce size of big thumbnails sebsauvage/Shaarli#91: Reduce size of big thumbnailsINVALID, server configuration problem, worksformeMiniature Deviantart sebsauvage/Shaarli#127: Miniature DeviantartFIXED once Feature/thumbnails #128 is mergedthumbnails or favicons? sebsauvage/Shaarli#169: thumbnails or faviconsFIXED once Feature/thumbnails #128 is mergedThemes
Create a list of some remarkable CSS for shaarli sebsauvage/Shaarli#93: Create a list of some remarkable CSS for shaarliFIXED in https://github.com/shaarli/Shaarli-themesprobleme avec bootstrap sebsauvage/Shaarli#82:no reply, https://github.com/shaarli/shaarli-themesWould like to submit a theme sebsauvage/Shaarli#159: Would like to submit a themeFIXED at https://github.com/shaarli/shaarli-themes/pull/2Comment systems
Ajout d'un système de commentaires et d'une fonction ping sebsauvage/Shaarli#170:Ajout d'un système de commentaires Latest discussion at Add Disqus or Isso comments box on a permalink page #181.Discussion about a link sebsauvage/Shaarli#185: Discussion about a linkclosed/ghostThe text was updated successfully, but these errors were encountered: