GithubHelp home page GithubHelp logo

dokuwiki / dokuwiki-plugin-pluginrepo Goto Github PK

View Code? Open in Web Editor NEW
8.0 7.0 14.0 612 KB

This is the - internal only - plugin used to manage dokuwiki plugins at dokuwiki.org

Home Page: http://dokuwiki.org/plugins

License: GNU General Public License v2.0

PHP 94.74% CSS 4.42% JavaScript 0.84%
php dokuwiki-plugin internal repository

dokuwiki-plugin-pluginrepo's Introduction

Repository Plugin for DokuWiki

All documentation for the Repository Plugin is available online at:

  * https://www.dokuwiki.org/plugin:repository


(c) 2010 by Andreas Gohr/Håkan Sandell
----
Copyright (C) Andreas Gohr <[email protected]>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

See the COPYING file in your DokuWiki folder for details

dokuwiki-plugin-pluginrepo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

dokuwiki-plugin-pluginrepo's Issues

[Feature Request] A list of newly created plugins

I think it would be helpful if the plugin search page offers the option to list newly created resp. added plugins. That means a list of (more or less) all plugins, sorted by plugin's creation date, recently created at the top.

As sources for the creation date I see two possibilities:

  1. The very first entry in "Old Revisions".
  2. A stored creation date in the plugin's data record. When a new plugin page is created, this date is automatically stored. At the moment this data field does not yet exist, so it would have to be set up. (Plugins that do not already have this data field need not necessarily appear in the list.)

Motivation: I would like to have the option to check for new plugins every few weeks or months. I assume this is a feature that would be useful for many DokuWiki users. Especially for those who offer regular support in the forum. And also for many who maintain and extend their wikis in the long run.

I don't see any other practicable way to keep up to date on the new plugins offered. At least not with a reasonable effort or applicable by everyone.

I see the special advantage of my idea in the fact that no further maintenance is necessary, since the necessary data is already available anyway. Any possibility to better deal with the tons of plugins, which does not require any further maintenance, I find welcome.

(Of course with the templates this would be helpful also.)

filter News Component by release date/obsoleted plugins

Moved from https://www.dokuwiki.org/plugin:repository

"Random Template" on [[extensions]] page can show very old templates with no compatibility info. Maybe the plugin should be changed to show only those with recent compatibility info? --- [[user>sancaya|Constant Illumination]] //2015-04-06 16:43//

I have removed the whole widget as it not worth having if half of the templates it's displaying are unusable. --- [[user>ach|Anika Henke]] //2015-04-12 10:42//

old API enpoint broken

The old API endpoint repository.php is currently broken:

[Thu May 15 09:45:07 2014] [warn] [client 91.64.57.205] mod_fcgid: stderr: PHP Warning:  require_once(/var/www/wiki/htdocs/lib/plugins/pluginrepo/../../../lib/plugins/pluginrepo/helper.php): failed to open stream: No such file or directory in /var/www/wiki/htdocs/lib/plugins/pluginrepo/repository.php on line 13
[Thu May 15 09:45:07 2014] [warn] [client 91.64.57.205] mod_fcgid: stderr: PHP Stack trace:
[Thu May 15 09:45:07 2014] [warn] [client 91.64.57.205] mod_fcgid: stderr: PHP   1. {main}() /var/www/wiki/htdocs/lib/plugins/pluginrepo/repository.php:0
[Thu May 15 09:45:07 2014] [warn] [client 91.64.57.205] mod_fcgid: stderr: PHP Fatal error:  require_once(): Failed opening required '/var/www/wiki/htdocs/lib/plugins/pluginrepo/../../../lib/plugins/pluginrepo/helper.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/wiki/htdocs/lib/plugins/pluginrepo/repository.php on line 13
[Thu May 15 09:45:07 2014] [warn] [client 91.64.57.205] mod_fcgid: stderr: PHP Stack trace:
[Thu May 15 09:45:07 2014] [warn] [client 91.64.57.205] mod_fcgid: stderr: PHP   1. {main}() /var/www/wiki/htdocs/lib/plugins/pluginrepo/repository.php:0

It is still used by the translation interface.

Compatible "yyyy-mm-dd+" not fully working

The "yyyy-mm-dd+" syntax used in the "compatible" field doesn't seem to be working anymore. See e.g. https://www.dokuwiki.org/plugin:sync. That also means that those plugins will only show at the very bottom of the plugin list under "Compatible with older DokuWiki versions" although many of them will be compatible with the latest version.

I personally never liked that syntax, but as long as we support it, this should be fixed. Or we should stop supporting it.

Removed plugin still showing up in plugin list

The HtmlMetaTags Plugin was initially wrongly created in the "plugins" namespace and not the "plugin" namespace. Although it was deleted from there, it still appears in various places, e.g. the main plugin list on /plugins and on other plugin pages from the same author, e.g. https://www.dokuwiki.org/plugin:simplemysqlclient

The data should obviously be deleted as soon as the page gets deleted.

I restored an old version of the page and then deleted it again to see if that fixes it (the bug might have been fixed since then). But that didn't help.

Integrate maintenance and development status

Drupal has defined some imho really nice categories for describing the maintenance and development status of the project. I think it makes sense adding them to the plugin repository either as special tags that get some icon and tooltip explaining their meaning or as separate fields.

Similar plugins on plugin page missing entries

When a plugin marks another plugin as similar, the other plugin page would show it as similar as well without the need to add it to the page. But that functionality seems to be broken.

E.g. plugin:wrap has "pagebreak" as one of the similar plugins, but plugin:pagebreak doesn't have "wrap" listed.

On the other hand the Wrap plugin lists several similar plugins which it doesn't list in its markup, so it generally still seems to work.

rework the table view

We currently display all plugins in the table, when no filter was set. This results in a huge table and lots of data to transfer and process. And this problem is getting worse every day.

I think we should display a limited choice of plugins by default. I think the best choice here would be the most recently updated ones. Maybe with a way to switch to the most popular ones instead.

And most important: adding pagination would be a good idea. Only showing maybe 25 results per page or so.

Here are some crude mockups on how that might look like.

RSS Feed support

The current API already support returning XML data.
It would be great to make an RSS Feed for updated plugins based on the lastupdate field.

api: plugintype supports only 1,2,4,8, etc but not 5

in helper/repository.php in getPlugins() only powers of 2 are supported.
But mySQL does a bitwise comparison (https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html) so asking 5 would work fine:

AND (A.type & :plugin_type)

if plugin is A.type=5, it matches in current query at following requests plugin_type: 1,4,5, others return 0.

todo: improve filtering.

current approach:

public $types = array(
        1   => 'Syntax',
        2   => 'Admin',
        4   => 'Action',
        8   => 'Render',
        16  => 'Helper',
        32  => 'Template',
        64  => 'Remote',
        128 => 'Auth'
    );
            if(!$this->types[$type]) {
                $type = 255;
            }

add field updatemessage

Are there opinions about adding a field mentioned 'updatemessage' which plugin authors can use to share an note regarding the offered update? Now the 'securitywarning' is sometimes used for this purpose.

Idea is to show it as 'Update message: ....... '. In same yellow layout at the other messages.
This needs change of the Extension Manager as well.

left-margin of screenshot too big

The screenshot it too width, so it moves below the buttons. Changing the margin-left helps.

@media screen
.dokuwiki div.pluginrepo_entry div.mainInfo a.screenshot {
    display: block;
    margin-left: 1.5em;  /* lower this */
}

News component throws warning

2022-09-26 23:17:09
Warning: count(): Parameter must be an array or an object that implements Countable
/var/www/wiki/htdocs/lib/plugins/pluginrepo/syntax/news.php(137)
#0 /var/www/wiki/htdocs/lib/plugins/pluginrepo/syntax/news.php(137): dokuwiki\ErrorHandler::logWarning()
#1 /var/www/wiki/htdocs/lib/plugins/pluginrepo/syntax/news.php(97): syntax_plugin_pluginrepo_news->showSameAuthor()
#2 /var/www/wiki/htdocs/inc/parser/renderer.php(117): syntax_plugin_pluginrepo_news->render()
#3 /var/www/wiki/htdocs/inc/parserutils.php(682): Doku_Renderer->plugin()
#4 /var/www/wiki/htdocs/inc/parserutils.php(83): p_render()
#5 /var/www/wiki/htdocs/inc/Ui/PageView.php(68): p_wiki_xhtml()
#6 /var/www/wiki/htdocs/inc/Action/Show.php(37): dokuwiki\Ui\PageView->show()
#7 /var/www/wiki/htdocs/inc/template.php(100): dokuwiki\Action\Show->tplContent()
#8 [internal function]: tpl_content_core()
#9 /var/www/wiki/htdocs/inc/Extension/Event.php(133): call_user_func_array()
#10 /var/www/wiki/htdocs/inc/Extension/Event.php(199): dokuwiki\Extension\Event->trigger()
#11 /var/www/wiki/htdocs/inc/template.php(85): dokuwiki\Extension\Event::createAndTrigger()
#12 /var/www/wiki/htdocs/lib/tpl/dokuwiki/main.php(59): tpl_content()
#13 /var/www/wiki/htdocs/inc/actions.php(27): include('/var/www/wiki/h...')
#14 /var/www/wiki/htdocs/doku.php(126): act_dispatch()
#15 {main}

optimize performance

In the master branch, we have performance problems related to the calculation of popularity data. I just pushed a change in the stable branch that introduces a cron script that updates popularity data once and saves it directly to the plugins table. This should make all popularity related selects much simpler (and faster). All that's left to do is to rewrite those queries.

@HakanS I'd be grateful if you could have a look at this.

popularity for templates wrong

It seems that the maximum value for template popularity isn't calculated correctly. The top used template still has no full bar:

missing popularity data?

The popularity data on plugins and templates seems to be wrong or mostly missing. The quite popular wrap plugin for example has '0' installations, the most popular plugin has just '11' and most others have 0 as well. The templates don't show any data at all (but those were already missing in the previous version.)

list plugins that depends on viewed plugin

There's a field 'depends:' to add dependencies to dataentry.

But it's not straight forward to get the plugins that were required somewhere. Can an automatic listing be added to the plugin(/template)entry?

fatal error on some pages

As reported here [http://bugs.dokuwiki.org/index.php?do=details&task_id=2443], the ru:templates page is blank.

The same thing happens on my local installation for the normal templates or plugins page. Unfortunately my apache error log only lists PHP notices before it actually completely restarts! (Parent: child process exited with status 3221225725 -- Restarting.) There is nothing in my MySQL error log (not sure if the SQLite errors should be listed there as well?).

Not compatible plugin

There is no field to tell that a plugin is not compatible with a release, the currents data is "Yes" or "Unknow". I would suggest adding a notcompatible field to allow plugin authors to mark them not compatible.

$_REQUEST variables are directly used, use Input class

e.g. in pluginrepo/repository.php, pluginrepo/syntax/table.php

  • use Input class to retrieve only desired entries instead of passed whole array to inner functions
  • maybe filter more throughtly the provided values
  • so far seen sanitation of used entries of the array is fine in inner functions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.