Giter Club home page Giter Club logo

ral's People

Contributors

yumi-xx 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

Watchers

 avatar

ral's Issues

Admin / Moderator Web Page

This is a lot of extra functionality but it's really essential in moving forward.

  1. Write an admin / moderator log-in page that checks credentials against a (SQL) table of hashed passwords
  2. Migrate functionality from the admin_panel Perl script to a web-page that is only accessible to moderators / an administrator
  3. Moderator / Admin registration page only accessible with one-time generated key

Currently there is no way to administrate the site other than via that Perl script. A web portal would allow more community moderation while also focusing the administrator's responsibility on simply picking reliable moderators.

Difficulty: 4/5

Deprecate BBCode in favor of RAL-flavored Markdown

BBCode is less intuitive than Markdown. Additionally, Markdown has less of a learning curve and is more forgiving to mistakes. Some features I am looking for within our implementation of Markdown are:

  • Bold Text
  • Emphasized Text
  • Blockquotes
  • Mention posts using >>
  • Preformatted text (for pieces of code and other computer output)
  • Hyperlinked text

Transparent / Public Moderation log

Hook into the moderation / administration interface to write a SQL record anytime someone is banned or a post is deleted or edited. Record should include:

  1. Moderator name
  2. Continuity name & post number
  3. Reason

Further, the log should be publicly visible via a webpage.

Difficulty: 2/5

DROP TABLE `Topics`

Honestly this implies a lot of work; organizationally it makes a lot of sense to keep Topics separate from Replies because they are different layers of the elitist superstructure, viewed on different pages etc. etc.

But maintaining two tables of almost exactly the same data also tends to create redundant code; I still want to organize by [Continuity/Year/Topic/Reply] but I can do better with the back-ended organization.

ASCII Art [aa] with braces

When ASCII Art with any of the [ or ] characters is interpreted into HTML, unexpected HTML is output. For instance, the [aa] tag may be closed early or may leave out characters...

I suspect this is because those characters are interpreted as BBCode tag openings or closings but I'm really not bored enough to fix it

Alternate views for reader

Currently all posts are gathered into the reader and displayed linearly and all on one page, but there is much room for an alternate reader. Some ideas I've had about the alternate views:

  1. Pagination
  2. Tree-view
  3. Keyword related posts

All views should be available to toggle at the bottom of the reader as a <footer> or something similar

Searchbar / Search API

Searching all posts is a useful feature for a growing textboard. This would be a completely new feature and ideally it would not place code in the existing includes/ files.

Essentially, the search would accept a simple one-line search of key words, then collect and display all posts which match those key words in some way or another. Search bar could be displayed on the main page or in a side panel.

Additionally, write a function in the existing API to respond to search queries.

Difficulty: 4/5

Swap SysV IPC for Socket-based IPC

The way RAL communicates between processes is silly. As has been done since its earliest days, RAL uses PHP SysV bindings to communicate real-time updates to the RAL database by way of SysV message queues, shared memory, and semaphores.

Presently this all works all well and good.

However if one wants this to be the most-loved textboard software, some work must be done to upgrade the SysV Interprocess Communication to a POSIX socket-based IPC frame of mind.

Difficulty: 10/10

Post using API

Hand-in-hand with issue #2

Simply add the functionality at the top of B4U/max.php into its own block in the current API (written at B4U/courier.php though subject to change)

Difficulty: 1/5

Eliminate Post Successful Page for friends with JS enabled

It's the year 2097 of course you know that your post was successful:

If you have Javascript enabled then you are already are subscribed to remote updates (long-polling). Since you will be notified of all new posts, you will be notified of your own new post as well (given that you've completed the robocheck correctly).

Using JS you can submit the <form> via XHR and you will not even need to write any code to add the new post to the page (already listening to new posts); the XHR will only need to submit to some page (maybe B4U/max.php or you could write a function in B4U/courier.php as part of that API) and check the HTTP status code that is returned.

Difficulty: 3/5 to add function in B4U/courier.php or
Difficulty: 2/5 to submit to B4U/max.php

I prefer that code is added to B4U/courier.php since this is an API

Edit Posts after Submission

Because complex BBCode is difficult to get right the first time, some way to edit your own posts after they are submitted may be a worthwhile feature.

It'd be pretty simple to implement, since each post already has an identifier (Auth) which is a unique, meaningless ID generated for each user and stored in a cookie. As easy as it would be, the only thing left is to do it :P

Opt-in browser notifications for new posts

I hate it when pages immediately ask for "Permission to display notifications". No fuck off I don't want that and then it keeps asking, asking, asking me if I want to because their dev c/p'd something from SO that just keeps asking me every time I load a new page.

Anyhow, add some code to the B4U/js/remote.js that notifies the user of new posts (using Notifications API if and only if they have opted in to receive notifications. Probably stick that opt-in some where on an options / configuration page like where the theme selection is now.

Very important to be opt-in, not opt-out.

Difficulty: 2/5

Clean Continuity Iterator

It writing v3.0 I was really focused on the object-oriented features of PHP that I neglected to distinguish types of objects (i.e. Replies, Years, Topics) within the ContinuityIterator class. This class could use a good deal of clean-up, especially around the Selection array and everything...

Not a trivial change, it'd require a lot of planning (and probably another branch ^-^)

New Post Button should anchor page to bottom

Straight-forward problem and straight-forward solution.

When a user clicks either "New Post" or "New Topic", s/he should immediately see the appropriate <form> for submitting a post. This could be accomplished in several ways, which I rank in order of preference:

  1. Add id=bottom to the <form> and anchor using the URL # (hash )
  2. The "New Post" and "New Topic" buttons call some JS that appends a new form to the bottom of the class=reader

Obviously the first is preferable as a JS-independent solution

Difficulty: 1/5

Navigation Page not Remembered

One of the cool things about the sidebar is that it has arrows for flipping through pages of items. However, when an option is selected, the page is not remembered; this is not much of a pain now but if there were more than a few pages this would quickly become sore.

I have a few ideas on how this may be fixed, ordered by how much I like each idea:

  1. Window.sessionStorage
  2. Temporary cookie
  3. GET parameter

When implementing one of these suggestions, remember that multiple navigation arrows / containers must be supported, i.e. I don't want to see page=1 because I'm not sure which navigation you are talking about?

Ideally loop through the DOM and store the page of each collection of items.

Difficulty: 3/5

Subscribe to Continuity Updates

As it is, you only receive real-time updates when you are on the main page or inside a topic; continuities do not receive real-time updates.

Trivial to write, just use the same technique I lay out for real-time updates using the API with the topic view and main page views. Might be hard to understand at first but just take a look through it anyway and follow what's written already.

Difficulty: 2/5

Installation

#!/usr/bin/php Your databse options in includes/config.php are Server: 127.0.0.1 User: root Pasword: (omitted) Databse: Chan MySQL Error: Can't create database 'Chan'; database exists MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'year(Created), PRIMARY KEY (Continuity,Year,Id) ) ENGINE=InnoDB DEFAUL' at line 7 MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'year(Created), Topic int(11) NOT NULL, Content text NOT NULL DEFAULT '',' at line 5 MySQL Error: Specified key was too long; max key length is 767 bytes Downloading and installing jBBCode-1.3.0 Finished!

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.