Giter VIP home page Giter VIP logo

pepperminty-wiki's Introduction

Pepperminty Wiki Logo Pepperminty Wiki Build Status Join the chat at https://gitter.im/Pepperminty-Wiki/Lobby License: MPL-2.0 Docker pulls count

A Wiki in a box

Pepperminty Wiki is a complete wiki engine contained in a single file, inspired by @am2064's Minty Wiki. It's open source too (under MPL-2.0), so contributions are welcome!

Developed by Starbeamrainbowlabs (though contributions from others are welcome!), Pepperminty Wiki has a variety of useful (and cool!) features - such as file upload, a dynamic help page, page revision history, page tags, and more! Other amazing features are in the works too (like a theme gallery, auto update, and user watchlists), so check the release notes to see what's been added recently.

Latest Version: stable version badge pre-release version badge development version badge (Changelog)

Stay up-to-date! RSS feed GitHub Releases (Don't forget you can watch releases too)

Screenshot

Main Page Example

Documentation

For everything you need to know (including how to get your own copy!), you probably want the documentation. It can be found here:

Documentation

Website

Real World Usage

Is your site using Pepperminty Wiki? Contact me or open an issue and tell me about where you are using Pepperminty Wiki and I'll add you to this section 😺

Pepperminty Wiki has also been mentioned in a few places:

Todo

Here's a list of things that I want to add at some point (please feel free to send a pull request and help out!).

  • Better page history (revert to revision done!, compare revisions, etc.) (#78, #79)
  • Intelligent auto-updating system that doesn't wipe your settings / module choices
  • A module registry of some sort (ideas welcome!)
  • Image maps (#103)
  • An app for Android - in progress over here!
    • Participate in the beta: https://play.google.com/apps/testing/com.sbrl.peppermint
    • Report issues here
    • An iOS app is not practical for the foreseeable future.
      • It's too expensive (dev license requires £££).
      • The ecosystem is very closed off, and I've no idea how to make an iOS app (nor do I own a device to test it on)
      • Feel free to make one yourself!
      • I'm happy to help out if you need help with Pepperminty Wiki itself (e.g. making it more machine-readable (#138))
      • Message on Gitter (see above), or open an issue on this repository.
  • User watchlists done, as of v0.21!
  • Theme gallery (#5 - coming soon in v0.20!) done, as of v0.20-beta1
  • Self-service user registration (#181)
  • Packaging for sandstorm / Nextcloud?
  • Some kinda fancier (markdown) editor maybe
  • (See more on the issue tracker!)
  • ...?

Is the feature you want to see not on this list or not implemented yet? Open an issue or send a pull request - contributions welcome!

Docker

The recommended way of running Pepperminty Wiki is with a plain PHP-enabled web server. However, a docker container is generously provided by @SQL-enwiki. You can run it like so:

docker run -d sqlatenwiki/peppermintywiki:stable

Security

If you've found a security issue, please don't open an issue. Instead, get in touch privately - e.g. via email (security [at sign] starbeamrainbowlabs [replace me with a dot] com), and I'll try to respond ASAP.

If you would like to encrypt any communications with me, you can find my GPG key here.

Contributing

Contributions are very welcome - both issues and pull requests! Please mention in your pull request that you release your work under the MPL-2.0 (see below).

See CONTRIBUTING.md for a guide on what to expect when submitting a pull request or issue to this project.

If you're feeling that way inclined, the sponsor button at the top of the page (if you're on GitHub) will take you to my Liberapay profile if you'd like to donate to say an extra thank you :-)

License

Pepperminty Wiki is released under the Mozilla Public License 2.0. The full license text is included in the LICENSE file in this repository. Tldr legal have a great summary of the license if you're interested.

pepperminty-wiki's People

Contributors

dependabot[bot] avatar gitter-badger avatar ikisler avatar nivex avatar npnance avatar sbrl avatar seanfromit avatar sql-enwiki avatar xmate420x avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pepperminty-wiki's Issues

Mod API documentation

We should write some documentation on the mod API that we have so far. This will allow others to pick up the API and write their own plugins more easily.

Recent Changes

A recent changes page would be very helpful in order to see what has been going on recently on a wiki.

Help page upgrade

The help page is useful, but it could be better. We should upgrade it to allow modules to register their own help sections.

Parsedown module?

Perhaps we should add a parsedown module that adds Parsedown as a parser to Pepperminty Wiki. It should be optional and not included by default since this module might add some significant weight to an installation.

  • Add support for extensions that aren't included in the build by default (issue #10)
  • Create parsedown extension

Sub-Pages

We should implement sub pages.

Things that need checking / doing:

  • Check that the page name escaper correctly handles forward slashes
  • Add support for sub-pages to the page index
    • Add field that indicates whether a given pages has any sub pages
  • Update the page-list extension to support sub-pages
  • Add support for sub pages to the page index rebuilder
  • Allow sub pages to be saved in sub folders
  • Display a configurable list of sub pages on pages that have sub pages

Update:

Bugs to fix before this is done:

  • Fix issue #11 - Non-existent subpage parents aren't added to $pageindex->$page->subpages
  • Fix issue #12 - Creating a page with a non-existent parent doesn't cause the parent to be created
  • Fix issue #13 - Creating a sub page doesn't result the subpage[] entry being updated

Non-existent subpage parents aren't added to $pageindex->$page->subpages

This bug is in the $pageindex creator. Assuming the following structure:

Page A
Page A/Sub 1
Page A/Sub 1/Sub Sub 1

If, for example, the page Page A/Sub 1 didn't exist, then it would be created and added to $existingpages ready for adding to the $pageindex. This is all OK, but if Page A is already added to the new $pageindex, then the non-existent Page A/Sub 1 won't be added to Page A's ->subpages object index.

The solution, I assume, to this problem would be to check to make sure that the all the sub-pages parents exist in both the file system and the $existingpages array before we start looping, but a solution that doesn't involve a second loop here would be desirable.

I would try and think of one now, but dealing with all these sub-pages is confusing...!

Workaround: Delete the bugged pageindex.json and get it to recreate it a second time.

Return to the previous page that the user was on upon logging in

If I click login while on a page called 'Oranges' for example, when the login process is completed I end up on the main page. This is really annoying as I lose my place on the site and forget what I was doing.

We should redirect the user to the exact page that they were upon before logging in.

This is already partially implemented, but currently has some bugs. We should finish the job and fix all the bugs.

Redirect page support

A module to allow redirects to be created would be a good idea.

With it we have several things to think about:

  • What if we encounter a redirect loop?
    • Perhaps we could add a cookie to the request that tracks the number of redirects the user has had and use that to track long redirect chains
  • How do we store the fact that a page is a redirect page?
    • Changing the page index is probably not a good idea - this would be a module - what if the module was not installed?
    • Perhaps it would be better to store the redirect information inside the page itself, similar to the way you have #REDIRECT [[Page Name]] in mediawiki.

Security issue with the sidebar when logging in

If you aren't logged in, you get redirected to the login page. However, the sidebar (in extra-sidebar) can be used to view the names of pages on the wiki. We should fix this as it could cause private information to leak to unauthorised users.

Make the page list easier to read

The page list gives lots of useful information, but it currently gives me information overload. This issue will track the improvement of the page list.

Let's start by gathering some examples of how others have displayed page lists.

Access control

Private wiki owners may not want other people to read their wiki content. We should add support for private wikis.

  • Require login to view pages
  • Add support for moving the root in which files are stored (to prevent people from circumventing the wiki itself) - Issue #37
    • Make sure that we proxy the 'original image' button if access control is enabled, as the web root will likely have been moved to somewhere inaccessible from the web

Optional Sidebar?

Since this wiki software is aimed at small-ish wikis, perhaps having an optional sidebar that shows a list of all the pages & folders on the current wiki would be a good idea.

Quote from /u/Theis:

A better navigation system would be useful. Personal I would like to use this for note taking. So a sidebare with folders and markdown pages to navigate would be beautiful :)

The folders depend on issue #6 though. Things to do:

  • Implement issue #6
  • Add support for HTML insertion by modules
  • Implement sidebar
  • Add option to settings to turn the sidebar off / on

Adding new word to a page doesn't add it to the inverted index

If I add, say, lion to a page that didn't have it before, it doesn't show up in the search results. I do, however, get it weird junk at the bottom of the search index.

//...
    "animal": {
        "3": {
            "freq": 1,
            "offsets": [2]
        }
    },
    "jam": {
        "3": {
            "freq": 1,
            "offsets": [3]
        }
    },
    "0": {
        "2": "testing",
        "1": "page"
    },
    "1": {
        "1": "internal"
    },
    "2": {
        "1": "link"
    },
    "3": {
        "1": "non"
    },
    "4": {
        "1": "existent"
    }
}

This issue is part of issue #28.

Mega Enhancement: Search

The current search facility only directs the user to a specific page. I would be nice if it would actually search the site if it can't find an exact match. Perhaps an upgrade is in order?

Firstly we should do some research on how to create a search engine in PHP which doesn't take ages to find anything.

Tag list page improvements

Having a page that lists all the tags on Pepperminty Wiki is great, but it doesn't look particularly pleasant. We should make it look nicer so that it is more of a pleasure to use and fits in with the rest of the wiki,

datalist tag

Hello

There is a tag </datalist> alone

look this picture
capture du 2015-06-15 11 15 36

cheers

Add link to list of tags to list of pages

It's awesome that we have support for tags in Pepperminty Wiki, but we need to have a link to it somewhere else on the wiki. Perhaps the list of pages would be a good candidate? The top bar is getting kind of full, unless we add a link in the "More..." menu.

Mega Enhancement: Commenting

It would be awesome if instead of talk pages, it were possible to comment on any given page. Perhaps we could use a system similar to that of the blog over at starbeamrainbowlabs.com, where you can comment and then reply to comments.

This would possibly require us to store users' email addresses for notification purposes.

This issue will track the implementation of this mega enhancement as a new module.

Better themes

We need better themes for this thing. In particular, we need a better default theme.

I will probably need help with this.

Quote from reddit user /u/Theis:

But I really think a better userinterface is needed, maybe use something like Bootstrap. The thing is that regular non-technocal people get scared away from something that looks too bare. Or maybe just clone the look and feel from Githubs wiki.

Having the new theme based on GitHub's wiki theme seems like a good idea.

Mega Enhancement: Allow uploading of images

It would be nice to allow editors to upload images. This will probably have to be a separate project though. Naming suggestions are welcome!

This has the advantage that we can have a level of integration between the two projects. For example, we could have short syntax for images since we will know already where they are uploaded to. We would also be able to keep information about who uploaded the images, and how much space is taken up by images, too.

head body

Line 342 of index.php : There is a head tag instead of body
cheers

Make links to non-existent pages red

We should make the links to non-existent pages red. To start with, we need to write a module to post-process a given page's HTML and add a class to the internal links that lead to pages that don't exist.

Tasks:

  • Work out how to tell the difference between internal links and other links
  • Work out how to determine if a given page exists
  • Write a post processor to add a class to the internal linking <a /> tags that lead to pages that don't exist

Tags

Tagging pages would aid organisation and make it easier to find them later.

  • Add support for adding / changing tags when editing a page
  • Add a page that lists the pages with a specific tag
  • Display the associated tags beneath each page
  • Link the displayed tags to the page that lists all the pages with that page

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.