๐Ÿ›๏ธ HONGIKINGAN CMS Developer Manual

Version 202506 | Updated 2025-06-12
๐ŸŒ Language: ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด ๐Ÿ‡ฒ๐Ÿ‡ณ ะœะพะฝะณะพะป ๐Ÿ‡บ๐Ÿ‡ธ English

4-1. ๐Ÿ—๏ธ Core Features Basic Structure

4.1 Project Source Structure

HONGIKINGAN CMS consists of two main modules.

๐Ÿ”ง4.1.1 BO (humanframe.backoffice)

This is a project that manages metadata such as admin area, basic system operation, and schedulers. It contains basic admin functions and elements necessary for system operation of the CMS, and can be directly modified by developers.

Main Package Structure

๐ŸŽฏaop.aspect

Admin AOP implementation, admin board permission verification, admin log storage, user board permission verification and configuration retrieval

  • admin: Admin-related AOP (AdminBbsAspect, AdminLogAspect, AdminPrivacyAspect, etc.)
  • web: User-related AOP (UsrChkAuthBeforeAspect, UsrChkPermNttBeforeAspect, etc.)

๐Ÿ”งcommon

Common function definition - Common code map, DB code management separated by admin to collect code data that does not need registration changes during system operation. Modification is discouraged, and caution is required when modifying

๐ŸŽฎcontroller

Collection of Spring controller classes, system operation and CMS-based program controllers

๐Ÿ“ Package ๐Ÿ“‹ Description
ajaxAJAX request processing controller
bannerBanner management controller
bbsBoard management controller
cmCommon management controller
cntntsContent management controller
commCommon controller
dashboardDashboard controller
fnctFunction-related controller
frontFrontend-related controller
indexIndex page controller
loginLogin-related controller
mberMember management controller
mediaMedia management controller
metadataMetadata management controller
mngManagement function controller
oauthOAuth authentication related controller
pblcatePublication related controller
popupPopup management controller
privacyPrivacy management controller
siteSite management controller
statsStatistics management controller

๐Ÿ—„๏ธdao

Collection of Data Access Objects, various DAOs

๐Ÿ›ก๏ธinterceptor

Admin Interceptor implementation, admin login check, URI parameter validation, etc.

โฐscheduler

System scheduler management, mini board JSON data generation, menu statistics data generation

โš™๏ธservice

Spring service and implementation classes

  • impl: Service implementation classes

๐Ÿ‘คsession

Admin and user Session classes

๐Ÿท๏ธtld.button

JSP Tag Library and other tag classes

๐Ÿ”งutil

Various utility classes

๐Ÿ‘๏ธview

RssViewer class

๐Ÿ“ฆvo

Value Object classes

๐ŸŒ4.1.2 WEB (humanframe.web)

Consists of Java classes for the CMS user area and various resources (jsp, xml, js, css, etc.) for Frontend Presentation (screen resources, user content processing). Mainly, all program sources (Java class, jsp, xml, etc.) for additional functions that are not basic CMS functions are included in this project.

Main Package Structure

๐Ÿ”งcommon

Common function definition - Common code map, common constants, etc.

๐ŸŽฎcontroller

Collection of Spring controller classes, additional development program controllers

  • admin: Admin function controllers
  • front: Frontend controllers

๐Ÿ—„๏ธdao

Collection of Data Access Objects, various DAOs

๐Ÿ”filter

XSSWebFilter, MberLoginFilter, etc.

๐Ÿ›ก๏ธinterceptor

User URIInterceptor implementation, delivery URI validation and menu information connection according to URI

๐Ÿ”security

Encryption-related classes

โš™๏ธservice

Spring service and implementation classes

  • impl: Service implementation classes

๐Ÿ“ฆvo

Value Object classes

4.2 Resource Configuration

4.2.1 Spring Context Configuration Files

HONGIKINGAN CMS defines system behavior through various Spring Context configuration files.

๐Ÿ”ง

context-backoffice.xml

Admin user session bean definition

๐Ÿ”

context-crypto.xml

Encryption bean definition

๐Ÿ—„๏ธ

context-datasource.xml

Database connection configuration

๐Ÿ—บ๏ธ

context-mapper.xml

MyBatis mapper configuration

โš™๏ธ

context-properties.xml

System property configuration

โฐ

context-scheduler.xml

Scheduler bean definition, mini board, menu statistics

๐Ÿ”„

context-transaction.xml

Transaction management configuration

๐Ÿ“‹

human-resource.xml

Resource-related configuration

4.2.2 Web Application Structure

The web application consists of the following main directories:

๐Ÿ”งcommon

Common resources

๐Ÿ“Šdata

Data files

๐Ÿ›๏ธhumanframe

CMS core resources

  • admin: Admin page resources
  • theme: User theme resources
  • global: Common resources

๐Ÿ“„json

JSON data files

โœ๏ธwebeditor

Web editor resources

โœจwebeditorplus

Extended web editor resources

โš™๏ธWEB-INF

Web application configuration and class files

  • jsp: JSP files
  • config: Configuration files
  • tld: Tag library definition files

4.3 User Management

4.3.1 Authentication and Authorization Management

HONGIKINGAN CMS uses Spring Security and a self-developed authorization management system together for user authentication and authorization management.

Main Features

Authorization Management Structure

๐Ÿ‘ค
User/Admin
๐Ÿ‘ฅ
Permission Group
๐ŸŽฏ
Menu/Function

Main Classes

Permission Verification AOP Code (Actual Code)
// [Code Location] humanframe.backoffice.aop.aspect.admin.AdminBbsAspect
@Aspect
@Order(1)
@Component
public class AdminBbsAspect {

    // Admin permission check
    @Pointcut("execution(* humanframe.backoffice..AdminBbsType*Controller.form(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.list(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.view(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.action(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.answer(..))")
    private void checkAdminBbsAuth() {}

    @Before(value = "checkAdminBbsAuth()")
    private void beforeCheckAdminBbsAuth(
            JoinPoint joinPoint)throws Exception {
        // ... Omitted (permission verification logic) ...
    }
}

4.3.2 Session Management

HONGIKINGAN CMS manages user and admin sessions separately and provides features such as session timeout and concurrent access control.

Main Features

Main Classes

Session Management Code (Actual Code)
// [Code Location] humanframe.backoffice.session.MngrSession
public class MngrSession implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String mngrId;
    private String mngrNm;
    private String authorTy;
    private String[] siteNos;
    private String[] siteMenus;//for cntnts
    private String[] fnctNos;//for fnct
    private String[] bbsNos;//for bbs
    
    // Session information setting and retrieval methods
    // ...
}

4.3.3 User Information Management

User information management includes functions such as member registration, information modification, and withdrawal.

Main Features

Main Classes

4.4 Content Management

4.4.1 Menu Management

HONGIKINGAN CMS provides functionality to efficiently manage the menu structure of websites.

Main Features

Main Classes

Menu Management Screen

You can manage the menu structure in tree form in the "CMS Management > Menu Management" menu of the admin page.

4.4.2 Site/Menu Publication System

HONGIKINGAN CMS has a structure where site and menu changes in the admin page are not immediately reflected on the user page, but are reflected through a 'Publication' process. This is a safety mechanism that allows administrators to review and confirm changes before applying them to the actual user page.

Table Relationships

๐Ÿ”ง
TN_SITE
โ†“
TN_PBLCATE_SITE
๐Ÿ“‹
TN_SITE_MENU
โ†“
TN_PBLCATE_SITE_MENU
  1. TN_SITE โ†” TN_PBLCATE_SITE
    • TN_SITE: Site information table edited by admin
    • TN_PBLCATE_SITE: Site information table actually shown to users after publication
  2. TN_SITE_MENU โ†” TN_PBLCATE_SITE_MENU
    • TN_SITE_MENU: Menu information table edited by admin
    • TN_PBLCATE_SITE_MENU: Menu information table actually shown to users after publication

Publication Process

โœ๏ธ Information Modification

Admin modifies information in TN_SITE or TN_SITE_MENU table.

๐Ÿš€ Execute Publication

Admin executes the 'Publication' function.

๐Ÿ“‹ Information Copy

System copies modified information to TN_PBLCATE_SITE or TN_PBLCATE_SITE_MENU table.

๐ŸŒ User Page Reflection

User page displays site and menu based on information from TN_PBLCATE_SITE and TN_PBLCATE_SITE_MENU tables.

Advantages of Publication System

๐Ÿ›ก๏ธ

Stability

Admin changes are not immediately reflected on user pages without verification, enabling stable service provision.

โœ…

Verification

Admin can thoroughly review changes before publication.

๐Ÿ“ฆ

Batch Application

Multiple changes can be published at once, maintaining consistency when changing site structure.

๐Ÿ”„

Rollback Capability

Easy to revert to previous state when problems occur.

4.4.3 Board Management

Provides functionality to create and manage various types of boards.

Board Types

๐Ÿ“‹ Type ๐Ÿ“ Description
Type 1General board
Type 2Reply board
Type 3Image board
Type 4Video board
Type 5Q&A board
Type 6FAQ board
Type 7Schedule board
Type 8Link board

Main Features

Main Classes

Board Settings Code Excerpt (Actual Code)
// [Code Location] humanframe.backoffice.service.BbsSettingService
@SuppressWarnings("rawtypes")
public interface BbsSettingService {
    
    /**
     * Retrieve board list.
     * 
     * @param listVO Search conditions
     * @return Board list
     */
    public HumanListVO boardListVo(HumanListVO listVO) throws Exception;
    
    /**
     * Retrieve board information.
     * 
     * @param bbsNo Board number
     * @return Board information
     */
    public BbsSettingVO retrieveBoardSetting(int bbsNo) throws Exception;
    
    // ... Other methods
}

4.4.4 Content Management

Provides functionality to manage content that will compose pages.

Main Features

Main Classes

4.5 File and Media Management

4.5.1 File Upload/Download

HONGIKINGAN CMS provides functionality to safely handle upload and download of various files.

Main Features

File Upload Processing Flow

๐Ÿ“ค
Client Request
๐Ÿ”„
MultipartResolver
โœ…
File Validation
๐Ÿ’พ
File Storage
๐Ÿ—„๏ธ
Metadata DB Storage

Main Classes

Filename Validation Code (Actual Code)
// Part of FileUtil class
/** Validate filename validity **/
public static boolean isValidFileName(String fileName) {
    // Regular expression that allows alphabets, numbers, Korean, Chinese, Japanese, parentheses, brackets, braces, hyphens, underscores, periods, spaces
    // and excludes characters that cannot be used in Windows filenames (\ / : * ? " < > |)
    final String FILE_NAME_PATTERN = "^[\w\-.()\[\]{} ๊ฐ€-ํžฃไธ€-้ฟฟใ€-ใ‚Ÿใ‚ -ใƒฟ]+$";
    final Pattern pattern = Pattern.compile(FILE_NAME_PATTERN);
    if (fileName == null || fileName.trim().isEmpty()) {
        return false;
    }
    Matcher matcher = pattern.matcher(fileName);
    return matcher.matches();
}

4.5.2 Image Processing

Provides specialized processing functionality for image files.

Main Features

Main Classes

Image Processing Code (Actual Code)

Part of FileServiceImpl class (Thumbnail generation)

public void creatFileInfo(
        Map<String, MultipartFile> fileMap
        , int upperNo
        , String srvcId
        , Map<String,Object> reqMap) throws Exception {
    // ... (Omitted)
    for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
        try {
            if ((EgovStringUtil.equals("jpg", fileExtsn)
                    || EgovStringUtil.equals("gif", fileExtsn)
                    || EgovStringUtil.equals("png", fileExtsn)
                    || EgovStringUtil.equals("bmp", fileExtsn))) {
                Thumbnails.of(tempFile).size(StaticValues.SMALL_THUMB_SIZE_X, StaticValues.SMALL_THUMB_SIZE_Y)
                        .toFile(new File(WebUtil.filePathReplaceAll(filePath + "/"+ srvcId +"/" + toDay + "/" + StaticValues.SMALL_THUMB_PREFIX+"_"+ newFileName)));
                Thumbnails.of(tempFile).size(StaticValues.MEDIUM_THUMB_SIZE_X, StaticValues.MEDIUM_THUMB_SIZE_Y)
                        .toFile(new File(WebUtil.filePathReplaceAll(filePath + "/"+ srvcId +"/" + toDay + "/" + StaticValues.MEDIUM_THUMB_PREFIX+"_"+ newFileName)));
                Thumbnails.of(tempFile).size(StaticValues.LARGE_THUMB_SIZE_X, StaticValues.LARGE_THUMB_SIZE_Y)
                        .toFile(new File(WebUtil.filePathReplaceAll(filePath + "/"+ srvcId +"/" + toDay + "/" + StaticValues.LARGE_THUMB_PREFIX+"_"+ newFileName)));
            }
        }
        // ... (Omitted)
    }
    // ... (Omitted)
}

4.5.3 Media Management

Provides functionality to manage various media files such as images and videos.

Main Features

Main Classes