Code Monkey home page Code Monkey logo

draiwiki's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

svichas

draiwiki's Issues

Fix routing system

The current system is broken, unreliable and inefficient, and should be replaced / fixed.

Routing error - Edit article on home

Hardcoded error message in the Locale class

'''
if (!$this->_language == 'en_US' && file_exists(Main::$config->read('path', 'BASE_PATH') . 'lang/' . $this->_language . '/' . $className . '.language.php'))
$this->_strings[lcfirst($className)] = require_once Main::$config->read('path', 'BASE_PATH') . 'lang/' . $this->_language . '/' . $className . '.language.php';
else if (Main::$config->read('path', 'BASE_PATH') . 'lang/en_US/' . $className . '.language.php')
$this->_strings[lcfirst($className)] = require_once Main::$config->read('path', 'BASE_PATH') . 'lang/en_US/' . $className . '.language.php';
else
die('Could not load language file.');
'''

Early errors can't use error page templates, so a workaround needs to be found

Templates are loaded AFTER we've executed a database query to figure out what template set we need to load, so any errors that occur before that moment can't use error templates. Right now it doesn't really matter since we're automatically using die() if there are no templates, but I'd like something a little prettier.

Although this isn't hard to fix, basic functionality should be implemented first.

Use Composer/Packagist

This would make updating external libraries a little easier. Also, when there is a new version, the end user would have the option to update using the terminal.

The Connection class shouldn't be the first class to instantiate the Locale class

Currently the Main class creates a new instance of the Connection class. After that, it creates a new instance of the Locale class. The thing is, however, the Connection class produces localized errors (i.e. it makes use of the Locale class), meaning it needs to create a new instance before it is able to do so. So basically, the line in the Main class is redundant.

TL;DR: We should find a way (shouldn't be too difficult) to keep the line that creates a new Locale object in the Main class.

AJAX

Although I'd like to get the basic functionality working first, once that's done we should probably convert some sections/forms to work with AJAX.

Infoboxes

We should add Wikipedia-like infoboxes. This should probably be done using PHP and SQL; that way the user would be able to reuse an infobox.

Ban users

We should definitely add the ability to ban users/IPs.

Get rid of singletons (since we have a registry now)

Since we've just created this cool new registry class, we might as well make good use of it. We should attempt to replace most (if not all) singletons with regular classes that are called using the registry.

Admin panel dashboard charts and graphs

Since charts and graphs look cool, we should have some on the admin panel's dashboard. We should have charts/graphs for at least the following items:

  • Articles per language
  • Edits per week/month
  • Registrations per week/month

Since this should be really easy to do (I've come across several libraries that take care of creating graphs/charts), it should be implemented before we release Alpha 1.

Replace AngularJS with VueJS

Using AngularJS would've been really neat, however with the deadline approaching it might be easier to switch to a different framework. VueJS should do nicely.

It's possible we'll switch back to AngularJS once 1.0 Final is out and we start working on 1.1, but that will be discussed on a more appropriate date.

Integrate Dwoo

Since Twig requires PHP7 (which is a great thing, but unfortunately we still support PHP5.6), it looks like we're going with Dwoo instead.

HTTPS support

This should definitely be done before releasing alpha 1.

EU cookie law compliance

An extension could be written to accomplish this, but it might be quicker (and easier) to just include it by default. It would be turned off by default.

Create and edit articles

Just posting this here since posting new articles and editing existing ones should work, but since we have we have no permission profiles, groups and users yet, foreign key checks fail, causing a database error.

As soon as the authentication system has been implemented, this issue will be updated. Again, both creating and modifying articles should work, it just needs to be confirmed.

Redirect fallback

If the user disabled redirects, a nice page should be displayed that explained what's happening.

Implement search functionality

So we've finally found a location where we can put the search bar, now we just need to implement the actual search functionality. Not a priority, but it needs to be done before the release of Alpha 1.

Delete articles

The sidebar should have a 'delete' button that changes the article's status to 'deleted'. This would be a soft delete button.

In the admin panel you would be able to hard delete articles.

Sidebar

We need a sidebar menu like we had before the rewrite.

Log and report session forgery attempts

Whenever the the verifySession() method fails and we're NOT dealing with a guest, it should be logged and categorized as a security breach. An option could be added to (temporarily) ban the ip.

I'd really like to get this done in Alpha 1.

Bump version requirement to 7.1

Although I would really really really love to do it right now, unfortunately this will have to wait until DraiWiki 1.1. We're currently require version 5.6, which is still partly (but not entirely) supported, and this prevents us from using features introduced in PHP7.1, such as return type declaration and the null coalescing operator.

Cache

Should be done in Alpha 2 or 3.

File editor

Root accounts should have the ability to edit wiki files from within the admin panel, in order to make wiki customization a little easier. All files except for files in the admin, src/core, vendor and node_modules directories should be editable. Part of the reason why the admin panel is (for the most part) isolated is to allow you to fix mistakes easily if you've screwed up.

Since this could cause security risks, only root accounts should be able to do this.

Improve SessionHandler class

Although the session handler works, it leaves a lot to be desired. For example: the open and close functions don't do anything. Rewriting the class wouldn't be a bad idea, as we now know what caused the session handler not to function in the first place.

Sidebar customization

Alpha 1 will feature a sidebar, but it won't be customizable. It'd be awesome if you can add your own items, though, in alpha 2 we should make sure you can.

Modules and extensions

Once Alpha 1 is out we should start working on a modules system that allows users to install modules and extensions.

Extensions would be small additions/changes to the code, whereas modules would introduce major new features (e.g. a blog system, forum, CMS...).

Again, this would have to be done in Alpha 2 since the deadline for Alpha 1 is on July 15.

New article titles are not displayed by the form automatically

Let me explain: currently, if an article doesn't exist and you're trying to create it, you get a cool form. While that's absolutely fantastic, when dealing with a new article the editor doesn't display the title of the article that doesn't exist. Rather, it uses the title from the locale files. For English that would be 'New article'.

So, in short, when creating a new article, we should make it so that the editor automatically retrieves the desired title from the URL. Obviously, it'd have to be validated before it could be used.

Although it shouldn't be too difficult to fix, I'm posting it here just in case I forget.

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.