Giter Site home page Giter Site logo

elkarte / elkarte Goto Github PK

View Code? Open in Web Editor NEW
174.0 23.0 60.0 104.08 MB

ElkArte Forum. A free, open source, modern discussion forum / BB

Home Page: https://elkarte.github.io/Elkarte/

License: BSD 3-Clause "New" or "Revised" License

PHP 86.59% CSS 6.87% JavaScript 6.53% Shell 0.01%
elkarte forum php modern discussion community community-forums discussion-forum

elkarte's Introduction

ElkArte

This is the ElkArte Development repository. If you are looking for the currently released branch go here

ElkArte is a modern, free, powerful community forum building forum software. It is completely free and licensed with an open source BSD 3-clause license.

Initially based on Simple Machines Forum (SMF), it began as an overhaul of the code; to modernise, implement new features and make a forum software more relevant in a time of unprecedented social interaction. It has grown to become a modern and feature rich forum package to meet the demands of today's message board user.

Enjoy the benefits of enthusiasts from around the world who spend time making ElkArte what it is today.

Test ElkArte yourself by visting our support forums at ElkArte.net.

Contributions to documentation are licensed under CC-by-SA 3. Third party libraries or sets of images, are under their own licenses.

Build Status Current Release License Downloads GitHub commits GitHub contributors Open Issues GitHub issues-closed codecov

A small taste of ElkArte features

  • @Mentioning users including notifications
  • Like system for posts and topics, with a like statistics page
  • Notification system for mentions, quoted posts, likes, PM's
  • Drafts, including auto save
  • Emoji integrated into the editor provides access to 1000's of them ๐Ÿ˜ƒ
  • Inline Attachments allow displaying of attachment thumbnails inline with the text of the post
  • Two factor authentication
  • Two built in modern, responsive themes
  • Desktop notifications and number of unread notifications "live" in the favicon of the browser
  • Integrated video embedding for YouTube, Vimeo, TikTok and Dailymotion
  • Drag and drop ordering in the administration interface
  • Drag and drop file attachments with live view
  • Built in image attachment lightbox with swipe/arrow navigation
  • Improved Anti Spam measures
  • Improved password security using industry standards
  • Automatic combining and minifying of JavaScript and CSS
  • Posting and replying by Email
  • Ajax previews and responses throughout the user interface

Requirements

  • ElkArte version 2.0 (under development / this repo) will require PHP version 7.1 or newer
  • MySQL 5.7+, Mariadb 10.2+ OR PostgreSQL 9.5+

On the client side, ElkArte will run & look good with its responsive theme in just about any modern browser, smartphone or tablet.

Setting up an ElkArte Forum:

If you're not here to play with the open source code, but instead would like to set up an ElkArte forum, follow these steps. Since ElkArte is built to be simple to use, its installation is no exception.

  • Create a database for your forum using a tool like PHPMyAdmin or Adminer
  • Get the latest Install Package for ElkArte.
  • Upload and extract the entire file structure up to your web server.
  • Confirm the folders are writable by PHP.
  • Navigate to that folder in your web browser
  • Follow the instructions on screen.
  • Enjoy !

ElkArte is also available to install from cPanel for Softaculous users!

Migrating to ElkArte

Switching to ElkArte is fast and easy!

Simply install ElkArte using our Quick Installer (as outlined above), then utilizing the Open Importer Engine you can migrate to ElkArte from many other popular forums including SMF, phpBB, MyBB, vBulletin, XenForo and more.

Extend ElkArte

ElkArte was built to be extensible, so you can add new features or give it your own custom look, with ease. With 100's of plugin hooks and an event system, adding new features can be done without any involved source edits.

Browse the collections of Themes and Addons created by our awesome community

Contributing:

  • Troubleshoot issues you run into on the ElkArte community forum so others can help & the developers can reference it later.
  • Have a new feature idea or improvement suggestion? Use the forum to discuss it.
  • File detailed issues on GitHub (what you did, and what the actual vs expected outcomes are).
  • Read the Developer's Certificate of Origin if you want to send us code. It means you acknowledge that you can and do license your submissions under the license of the project.
  • Feel free to fork this repository and make your desired changes.

Please see our How to contribute section for more information on how to contribute to the ElkArte Project.

Class / Method / Function documentation

ElkArte utilizes source code documentation blocks to provide descriptions for all of its classes, methods and functions. This API Documentation is available online for viewing and searching.

Site and IRC

Join us on IRC, on #elkarte channel on freenode.

Project site: www.elkarte.net

elkarte's People

Contributors

aaronvangeffen avatar ahrasis avatar alexanderomara avatar ant59 avatar arantor avatar cody3647 avatar dertuxmalwieder avatar emanuele45 avatar enyst avatar eurich avatar fictioncircle avatar frenzie avatar fustrate avatar hhy89 avatar joshuaadickerson avatar kays48 avatar kode54 avatar live627 avatar mikemill avatar missallsunday avatar norv avatar nwsw avatar oldiesmann avatar siddhartha-gupta avatar spuds avatar stealthwombat avatar tinoest avatar trekkie101 avatar vekseid avatar xinyenfon 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elkarte's Issues

Additional options as user option

I believe it's currently an admin option to automatically display the additional options when posting a new topic. Some users prefer to have them collapsed by default, while other users prefer to have them expanded instead. It's not really a big deal, but if there's an admin option for it, I don't see any reason why it can't be added as user option.

Ref: http://www.elkarte.net/index.php?topic=124.0

Admin- Core Features broken

The Core features page seems broken... I cannot enable / disable a feature, the description above is shown twice..

Undefined Index starting a post

In Post.controller

error_txts[\'no_subject\'] = ' . JavaScriptEscape($txt['error_no_subject']) . ';
error_txts[\'no_message\'] = ' . JavaScriptEscape($txt['error_no_message']) . ';

However those text strings have not been made available via loadLanguage at that point.

To reproduce ... start a new topic, behold the error

Install flexibility

install.php expects everything (/sources/, /themes/ and languages...even cache? possible) in predefined positions (i.e. dirname(FILE)) and if they are not there: fail.

What about instead of fail, ask for actual paths?

User tagging

Behavior description:

  1. add @norv syntax in post
  2. during posting, js opens a window with the registered users, and allows you to choose
  3. @norv is formatted differently in post display. (i.e. bold is the simplest that works in many cases)
  4. the user has the possibility to choose how to be notified when they're tagged: by PM, by email, only in their profile notifications
  5. in profile notifications, 'Posts where you have been tagged' is displayed as separate section
  6. (probably) the admin can choose whether 'user tagging' is enabled at all on the site.
  7. the user can choose if they allow being tagged by: everyone, buddies only, everyone except ignored users.
  8. (probably) the admin can set limitations: i.e. maximum allowed tagging for a user per hour. (this doesn't sound entirely right, but it's just an example, to start the discussion on what limitations make sense)

Random notes:

  • I think this is an expected functionality for a site designed to form a community.
  • there are concerns of abuse. IMO, its configuration options can address them.
  • its main point is simple: not everyone will read everything. When you want to attract attention to someone to a discussion, you shouldn't have to go through endless hoops to do so, the simplest way is to just tag the user on place.

Thoughts?

Likes

Karma as Likes.

  • per post and topic (per topic = first post)

An additional suggestion I'd have, which I've discussed a bit with @Joker-SMF, is for us to give a try to:

  • make message index sortable per likes received for the topic. Same for the topics started by on profile. (I assume)

The reason for the latter is... I still don't know what kind of 'popularity' matters to people. IMHO (and @bjornhk will disagree) the hot topic icons, per reply, are not used or not relevant enough. Still, I wonder if the number of 'likes' is a better criterium.

Remove editor compatabilty functions

In subs-editor we have several !!!Compatibility!!! functions for mods, notably:

theme_postbox
bbc_to_html
html_to_bbc
fetchTagAttributes
legalise_bbc

should we just remove them, leave them in place (I did move them to the bottom of that file) move them to a comparability file, other?

External functionality

Looking over the code to make a few more cleanups and updates to Dialogo, it has (obviously) functionalities tied to external sites, for content or files. For each of these, we need a solution, either on D site(s), github, CDNs or other options.

  • Admin javascript files
  • language packs
  • repair settings
  • Wiki OM

Others (not linked from the code, but useful, which imply web setup):

  • webinstaller

Others (not linked from the code, but necessary in or around the project):

  • translations tool.
  • build script(s)

There are also the rest of the ecosystem of a project (i.e. sites or tools for plugins/themes, etc, which are completely different than these though, and I'm leaving them aside for this issue.)

Please help complete this list, and implement solutions for each.

Missing Function name

in Post.controller (for example) a function is defined and used in an js eval ... but the function has no name ... like

function dummy ()

    editor: ' . JavaScriptEscape('
    function () {
        var editor = $("#' . $editorOptions['id'] . '").data("sceditor");

Dynamic error updates not working

I made a blank post and got the expected no subject no body errors

When I typed in to the subject field, the subject error dynamically cleared, however the body text did not. Could be related to the other minor issues I submitted on this new function, just reporting this for completeness.

UTF-8 only

SpudsMan asked this at an interesting hour in the night, so I thought I'd pin it down.

Please consider this issue place for issues/thoughts.

Serving avatars

  1. Not a bad idea to cache the results of getAvatar() for some period of time, although I have no idea what RIP_JITTER is all about.... BUT thats also a pretty easy query for the DB so not sure the cache overhead is not more then the db overhead of a primary key query.
  2. We should set as default that uploaded avatars go to their own directory so they can be served directly instead of via php

Ref: http://www.elkarte.net/index.php?topic=118.0

Notify of all posts

Add the possibility to 'notify me of all topics, replies, in this/these board/s'.

This is a functionality we have always rejected in another world, under the (main) reason that admins won't realize the impact on shared servers.

I suggest we reconsider this: the entire discussion around it, its usefulness, its risk and possibility to mitigate it.

NULL handling

Add NULL handling to $smcFunc.

Example issue to address by handling NULLs by default:
#134

[UI]Sidebar toggle

Ant has hidden this option somewhere in the middle of profile pages

Use sidebar menus instead of dropdown menus when possible.

Anyone else thinks it could still be somewhere more obvious? A nicer design option, than the toggle icon it used to be.
If not. at least, the first in that array of options. Even separated visually by an empty line. Look and layout section makes sense, but it's 'lost' there, I find it simply hard to guess even that it exists at all IMHO.

Properly document Errors.class

Half of the new class is missing docblocks, the other 1/2 are little more than auto generated blocks. These new classes really need to be thoroughly documented so they can be effectively used and make them more approachable to addon writers.

Yes I know writing docs is not on the top of everyone's list but it needs to be done and done properly. Its also a lot easier to do it up front then after we have forgotten why things were done the way they are.

Enumerations

(Just to track on the run.)

We have a number of enumerations in the code, for which we use int values. i.e. 1, 2, 3. They represent attachment types, display modes for PMs, etc.

Do we see/want a better solution for at least some of them? I don't know about you; if I come back after a while to a piece of code, I don't remember - over and over again - what they were supposed to stand for. (yes, I'm old.). And, I saw recently code making some more lists of ints.

For example, options: strings which say what they are; or, array of strings which say what they are; or, constants. In a more object oriented paradigm, they'd be const.
If not, I suppose another option is simply better documentation.

Roadmap 1.0

The following are the main targets for 1.0 beta.
These targets are in three main categories:

  • user-visible features and enhancements. These are tracked here, with the PR(s) that complete them.
  • default theme and mobile theme. These are tracked here only as the big picture, there are many improvements and details that will not be referenced.
  • code design (refactorings, rewrites, etc). These usually cannot be considered 'done', many PRs do them and I won't reference them here. We'll review the code, and when we're pleased with it, we will consider it release-ready for a particular milestone (1.0 beta, 1.0 stable, 2.0 alpha, and forward.)
  • Code refactoring and general cleanup:
    • directory structure (for the next two major versions);
    • queries: refactor widely used queries in utility/API functions in Subs-xxx.php files (many)
    • redundant code: consolidate blocks of repeated (redundantly) code all through the codebase in utility functions (many)
    • dispatch/controllers/oop: rework controllers for user/admin/mod actions to handle single actions (subactions), follow naming patterns, and get rid of redundant code
    • rework a number of core functionality
    • parse_bbc rewrite
    • validation utility class. (#174)
    • general targets: easier extensibility (for add-ons), better code design, better built-in security, performance.
  • Features and enhancements:
  • Obsolete features removals
    • old messenger fields (#34)
  • Default theme
    • improvements
    • responsive
    • new look and feel
  • Mobile theme

Timestamps on posts

Timestamps on posts have been moved to only show when you hover over the topic title.

Bug 1: Formatting like <strong> is shown as HTML as you can't use HTML in a hover message. See a yesterday/today post.

Bug 2: Tablets, phones, anything without a mouse, can't get the data.

Possibly either put it back, or to reduce clutter, put it somewhere like the user hover box, or a new button like [D] for Data :P

Missing Function name

This was closed in #171 due to the function moving to Editor.subs

editor: ' . JavaScriptEscape('
function () {
    var editor = $("#' . $editorOptions['id'] . '").data("sceditor");

The proposed fix in 171 works but it was not applied before the function moved.

Mobile theme footer intrusive

The mobile themes footer/copyright is pretty intrusive while scrolling. Perhaps the text just needs to be smaller because the backnav button is brilliant (could probably be useful in the normal theme at the bottom!)

@IchBin

SQL files

While writing the documentation I remember many functions ('db_query', 'db_insert', etc.) have some "deprecated" parameters (usually $params or something like that).

/me votes for clean up.
Any objection?

PM quoting stupidity

Wondering if you too consider this as stupid:

  • send a PM
  • come back and quote it (so that you can "forward it")
  • (optional) change the "To"
  • preview: "The personal message you're trying to quote is not your own or does not exist, please go back and try again."

Breadcrumbs on a mobile browser are unusable

May be something for a mobile theme, however the bottom breadcrumbs on a topic are completely unusable on a mobile. The text is too small compared to everything around it.

Although not sure how else to style it :)

unused global $options in templates

$options is made global in almost every single template function but AFAICS is rarely used inside the functions .. is there a valid reason why it is globalized? maybe a leftover from refactoring or made for future use (mods, refactoring)?

Can't remove attachments

Found on the Elkarte website but I can reproduce it on my local repo:
Create a post with an attachment and save..
click modify .. there's no possibility to remove the attached file

Hiding Avatar Option To Hiding Poster Info Section

My view is, if possible that is, instead of hiding only avatar, why not hiding the whole poster info section. And while that is hidden, the ordinary info (which is currently available/existed in SMF 2.0) is already there to show who is posting at what time & date and reply # etc.

The point is, important info can still be made available via their name same as it has been done here i.e. when you hover on it. If space is important, then attending to this is a must.

Ref: http://www.elkarte.net/index.php?topic=131.0

Hardcoded database types (Postgres, SQLite)

There are in the codebase, some hard-coded references to database types we support, such as, for example, make a different query if the db is Postgresql.
IMHO we should separate these completely. A single function for that query/queries in Subs-, for instance.

The purpose (well even less for this bit, than review the way $smcFunc is initialized...) would be to make it easier to deal with anything we will want, relative to other databases than MySQL: exclude/include them from a distribution by the build script, know what to test (or to review), and eventually, have all database support in a layer of its own (not only the db library, but also Subs-Search.Postgres.php if it's specific etc).

Tokens

(Also known as Spuds and Ema's friend.)

I think a buggy scenario is:

  • with moderator/admin session ended.
  • issue a warning. (I suspect other actions too, which require an active session)
  • you will be asked for authentication, do it

=> token verification failed.

PM attachments

Reference: http://www.elkarte.net/index.php?topic=134.msg912#msg912 and following.

The IRC conversation captures it all I guess, on PM attachments.

Notes:
The secondary issue here is attachments subsystem moving towards a files upload/download system.
The third issue here is (imo) moving from strict buddies/membergroups, to the ability to share with user-defined lists of people.

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.