Giter Site home page Giter Site logo

simplecms's Introduction

simplecms

License Latest release

설치 환경

  • PHP 7.4.0 이상
  • MySQL 5.0.7 이상 또는 MariaDB 권장
  • 필수 PHP 모듈
    • curl
    • gd
    • mbstring
    • openssl
    • json
    • xml 및 simplexml
    • php.ini에서 session.auto_start = Off로 설정되어 있어야 합니다.

시작하기

메뉴얼

라이선스

simplecms's People

Contributors

smaker avatar

Watchers

 avatar  avatar  avatar

simplecms's Issues

autoload.php 및 bootstrap.php 파일 정리 필요

해당 파일의 목적에 맞지 않은 코드가 여러 개 들어가 있어서 정리가 필요함.
에러 및 예외, 경고 등의 다양한 오류 메시지를 다루고 출력할 수 있는 Message 패키지를 개발할 필요가 있음.

  • autoload 부분 코드 정리 필요

Input package 개선

  • $_REQUEST 변수 값도 가져올 수 있는 method 추가
  • $_FILES 변수 값도 가져올 수 있는 method 추가
  • XSS 태그 필터링 옵션 추가

페이지 모듈 개발

HTML 코드를 입력하면, 그대로 화면에 출력할 수 있는 기능을 가진 간단한 모듈 개발.

기능

  • 페이지 생성
  • 페이지 편집

Frontend 패키지 개선

CSS/JS 파일 추가 시, 경로 검사 없이 무조건 추가되는데, 이를 설치된 경로를 기준으로 추가되는 것이 맞다고 봅니다. 반드시 WEB ROOT에 설치한다는 보장도 없죠.

addCss()나 addJs() 뿐 아니라 unloadCss(), unloadJs() 메소드도 필요합니다.

코어 구조 확립 및 개념 정리

절차지향으로 코딩된 것을 객체지향으로 변경합니다.
그리고 CMS에서 사용되는 개념을 아래와 같이 정리합니다.

개념 정리

  • 인스턴스:
  • 모듈: 인스턴스를 가질 수 있는 컴포넌트
  • 위젯: 페이지 혹은 테마에 부착할 수 있는 컴포넌트
  • 테마: 레이아웃 혹은 모듈 및 위젯의 외관을 구성하는 컴포넌트
  • 플러그인: 모듈, 위젯, 테마 등의 컴포넌트를 포함할 수 있으며 사이트 관리자가 키고 켤 수 있음

폴더 구조

  • /_core/framework/
  • /_core/framework/packages/
  • /common/
  • /common/css/
  • /common/js/
  • /common/img/
  • /common/fonts/
  • /plugins/
  • /vendor/

MobileDetect 추가

모바일 및 테블릿 접속 감지를 위한 MobileDetect 라이브러리 추가.

_core 폴더 정리

_core 폴더가 다소 복잡하기에, 좀 더 명확히 구조를 이해할 수 있도록 개선합니다.

각 구성 요소들을 패키지 형태로 정리

핵심적인 구성 요소는 System 패키지로,
필요에 따라 사용할 수 있는 구성 요소는 Pulbic 패키지로,
사용자가 추가하여 사용할 수 있는 구성 요소는 User 패키지로 정의합니다.

  • System 패키지와 Public, User 패키지로 분리
  • Library 패키지를 Public 패키지로 변경

각 파일들을 재배치 및 통합

정리 대상

  • autoload.php
  • constants.php -> bootstrap.php
  • Core.php -> bootstrap.php
  • functions.php
  • routes.php -> bootstrap.php

폴더 이름 정리

정리 대상

  • /_core/_cache/
  • /_core/_packages/

게시판 플러그인 개발

User

  • 글 작성 기능
  • 글 수정 기능
  • 글 삭제 기능
  • 글 수정/삭제 시 본인 인증 절차 걸치도록 하기
  • 댓글 작성 기능
  • 댓글 출력 기능
  • 댓글 수정 기능
  • 댓글 삭제 기능
  • 대댓글 작성 기능

Admin

  • 게시판 생성 기능
  • 게시판 삭제 기능
  • 게시판 기본 설정 변경 기능
  • 권한 설정 기능
  • 입력 항목 설정 기능
  • 추가 설정 기능 (에디터, 파일 업로더 등)

Github 플러그인 개발

Github 저장소에 접근하여 이슈를 열람하고 생성할 수 있는 플러그인을 개발합니다.

추후 기본 모듈에서 제외하고, 자료실에서 내려받을 수 있도록 할 예정.

Language 패키지 개발

Language 패키지

다국어 지원을 위한 패키지

기능

구체적인 사항 계획중

  • ㅇㅇ

상수 정리

상수 이름 앞에 있는 ST_를 제거하고, 필요하거나 유용하게 쓰일 수 상수를 추가함

Router 패키지 개선

현재 Router 패키지 내에서 모듈을 직접 실행시키고 있음.

이 부분은 Module 패키지 내에서 처리해야할 사항으로 판단됨.

추후, Module 패키지 내에서 실행하도록 내부 구조 리펙토링 필요.

Validator 패키지 추가

코어 내에서 공통으로 사용할 수 있는 유효성 검사 패키지를 추가하고자 합니다.

아이디, 비밀번호, 이메일 주소, 영문, 숫자, 전화번호, 날짜, URL 등 자주 사용되는 규칙을 미리 제공하는 것이 좋을 것 같습니다.

문자열 길이나 두 필드 일치 여부를 검사하는 기능도 있으면 더 좋을 것 같네요.

모듈 폴더 구조 리펙토링 및 개발 방식 표준화

모듈 폴더 구조 리펙토링 및 개발 방식 표준화

모듈 정보

기본적으로 package.json에 명세하도록 한다.
package.json 작성법은 기존 작성법과 동일하며, 몇 가지 추가되는 것이 있다.
예를 들자면, 다국어 지원을 위한 모듈 이름, 자료실에서 분류를 나누기 위한 모듈 분류 등이 있다.

그 외에 SensitiveCMS 버전, 필요한 서드파티 자료, PHP 확장 모듈 등 의존성을 관리할 수 있는 항목도 필요하다.

참고로 npm으로 설치하더라도 단독으로 동작이 불가능하므로, private 값은 true로 두는 것이 좋다.

  • package.json 파일을 읽어서 모듈 정보를 반환하는 전역 함수 추가

모듈 클래스 (@Module.php)

<?php
namespace Module\[모듈명];

class Base extends \Core\Module\Base
{
}
?>

모듈 테마

각 모듈의 themes 폴더에 저장하도록 하며, 각 테마별로 클래스가 있어야 한다.

<?php
namespace Module\[모듈명]\Theme;

class [테마명] extends \Core\Module\Theme
{
    public function __construct()
    {
        parent::__construct();
    }
}
?>

파일 이름 정리

  • module.php -> @Module.php
  • controller.php -> Controller.php
  • model.php -> Model.php
  • view.php -> View.php

회원(User) 패키지 개발

User

UI

  • 로그인 폼
  • 회원 가입 폼
  • 아이디 찾기
  • 비밀번호 초기화
  • 탈퇴하기
  • 로그아웃
  • 회원 개인 페이지
  • 회원 정보 변경

http://simplecms.io/@아이디 와 같은 주소로 접근 가능.

Admin

  • 회원 목록
  • 회원 추가
  • 회원 삭제
  • 회원 정보 보기 / 수정
  • 회원 가입 폼 관리
  • 회원 그룹 관리

Template 패키지 개발

  • if, elseif, else, endif 문법 지원 {{ @if (조건) }}
  • for, foreach, while 문법 지원
  • 주석 문법 지원 {{ -- 주석 -- }}
  • include 문법 지원
  • load 문법 지원
  • {{ $변수명 }} 문법 지원
  • {{ 상수명 }} 문법 지원
  • {{ $theInstance->theMethod() }} 문법 지원
  • {{ theClass::theStaticMethod() }} 문법 지원
  • {{ theFunction() }} 문법 지원

php.ini에 timezone이 설정되지 않은 경우 발생하는 오류 수정

default timezone이 설정되지 않은 경우, 서버 설정에 따라 timezone을 설정하도록 수정.

참고 오류:
date(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone.

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.