Giter Club home page Giter Club logo

jukucms's People

Contributors

fossabot avatar juku avatar pascalreintjens avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

fossabot

jukucms's Issues

Groups & Permission System

Groups & permission System.

  • create table permission_category
  • create table permissions
  • create table group_rights
  • create table user_rights
  • implement group rights
  • implement user rights
  • create api to check, if user has right

Api to send mails

We should add an api to send mails.
This api should support SMTP mail and also php mail function. In global settings user can choose which option is used.

Supported mail types:

  • plain text mail
  • html mail

Package: com.jukusoft.cms.mail
Class (example name): MailApi

Methods (example):

  • sendPlainMail ($to, string $subject, string $content) : bool
  • sendHTMLMail (...) : bool

Important! Plugins should able to add options!
It should be possible to send mails to more than one user.

Other packages & plugins should use this api to send mails from board.

Execute events

Currently events are supported, but not executed. We should implement this.

Allow page redirects

Add option to allow page redirects on page, e.q. if page alias starts with "redirect:".
There is also a column "redirect_code" (301 / 302) for this feature in database.

Global Settings

Add global settings as a key-value-store as package com.jukusoft.cms.settings and create database table in db-repair.php .

Module / Package : com.jukusoft.cms.settings
Class : Settings (system/packages/< Package Name >/classes/settings.php)
API (static methods) :

  • set (string $key, $value)
    • Maybe we should serialize the data
  • setIfAbsent (string $key, $value)
    • Maybe we should serialize the data
  • get (string $key, $default_value = null)
  • create ($key, $value, $title, $description, ...)
  • delete (string $key)

Cache all settings in one cache File!
(All settings --> Key-Value-Array --> Cache::put())
On first get() call all settings should be loaded once from cache and stored into a local, private static variable.

Table :

  • key (VARCHAR 255, Primary Key)
  • value (TEXT)
  • title (VARCHAR 255)
  • description (VARCHAR 600)
  • visible (int 10, Can user see the value of this setting on settings page)
  • changeable (int 10, 0 - false, 1 - true, is user allowed to change this setting on settings page?)
  • visible_permission (VARCHAR 255, permission token, more than one token with OR can be used e.q. "can_see_settings|can_change_settings")
  • change_permission (VARCHAR 255, permission token)
  • owner (VARCHAR 255, values: system, package_< Name >, plugin_< Name >, style_< Name >)
  • order (int 10, for settings page)
  • icon_path (VARCHAR 600, default: none)
  • last_update (TIMESTAMP, ON UPDATE CURRENT TIMESTAMP)
  • category (VARCHAR 255, name for tab on settings page)
  • activated (int 10)

improve Mobile Detection performance

Currently mobile detection is not really fast.
Maybe, we can improve performance with cookies in class Browser (package: com.jukusoft.cms.browser).

@PascalReintjens german comment:

Wir sollten dann vielleicht im Interface darauf hinweisen dass dieser Selektor-Typ Performance-Einbußen mit sich bringt. Vielleicht würde es auch Sinn machen das nur einmal zu testen und einen Cookie abzulegen

Use Base_Dir

If CMS is installed in a sub directory and not in root directory of domain, we should add a base_url, so urls are generated in a form http(s)://<Domain><Base URL><Page>.
By default, base_url should be "/". If CMS is installed in a sub-directory, it should be "/sub-dir/".
Without Base_Dir option all generated urls are wrong, if CMS is not installed in root directory.

Btw, the base_url should be depend on domain.

Lock pages

If someone edits a page, the page should be locked, so other people cannot edit this page on same time.

Joomla uses also locks, but wordpress doesnt (?).
How does wordpress handle this?

Custom port support

Maybe the user is hosting this CMS on another port than 80 or 433 (e.q. 8080), so generated urls should be corrected.
We should support a specific port for every domain, if user wants this (optional).
See also #49 .

Task Scheduler

A task schedular will be a nice thing.
Taks should be executed on end of page or by cronjob.

Package: com.jukusoft.cms.tasks

add datatype to global settings

For global settings page a datatype for every setting is required (add new column in database and in Settings::create() method) so that settings page can show correct input field (e.q. text field oder select-box) and can validate data.
Every Datatype should get a own class.

Reset password

Add a reset password function, so a mail is sended to the user with a password reset link.
This feature should be included in package com.jukusoft.cms.user. Also add a global setting so user can choose if passwort reset is allowed. Maybe we should also implement a permission, so only specific accounts can be resetted and some not (e.q. administrators).

Menu permissions

Menus should have permissions, so they are only shown, if user has permission.

Registration

Registration

  • create form (with custom fields)
  • validate form
  • Captcha class (add setting)
  • send verification mail #41
  • create user

Meta Tags

Add support for global and local meta tags.

CMS Architecture

Write CMS architecture to wiki.

  • Styles (Templates, /styles/)
  • Plugins (system/plugins)
  • Core
    • Kernel (system/packages)
    • Micro-Kernel (system/core/classes)

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.