PHP Class Xpressengine\Settings\SettingsHandler

# SettingsHandler ## 관리페이지 메뉴 추가하기 플러그인에서는 관리페이지의 좌측에 노출되는 메뉴 트리에 자유롭게 메뉴를 추가할 수 있습니다. 메뉴를 추가할 때에는 Register에 등록해야 합니다. 등록키는 settings/menu이어야 합니다. php 등록할 메뉴 아이디를 지정. 다른 메뉴와 겹치지 않도록 고유한 아이디를 정의해야 함. $menuId = 'member.social_login'; 등록할 메뉴의 정보를 지정. $menuInfo = [ 'title' => '소셜로그인', 'description' => '소셜로그인을 설정하는 방법을 안내합니다.', 'display' => true, 'ordering' => 350 ]; 메뉴를 등록한다. Register::push('settings/menu', $menuId, $menuInfo); 메뉴가 출력되는 위치는 메뉴의 아이디로 지정할 수 있습니다. 메뉴 아이디는 dot(.)을 구분자로 하여 부모 메뉴의 아이디를 앞에 붙여주면 됩니다. 위 코드에서는 메뉴의 아이디가 member.social_login이기 때문에 회원(member) 메뉴의 자식 메뉴로 등록됩니다. ## 관리페이지 메뉴에 링크 연결하기 플러그인은 route를 등록할 때, route와 메뉴를 연결할 수 있습니다. 자동으로 해당 route의 주소가 메뉴에 연결됩니다. php 소셜로그인 관리 페이지의 Route 추가. 'settings_menu' 항목을 사용하여 이 Route에 메뉴를 연결. Route::settings( 'social_login', function () { Route::get('/', [ 'as' => 'social_login::settings', 'uses' => function () { return \XePresenter::make('social_login::tpl.setting'); }, 'settings_menu' => 'member.social_login' ]); } ); ## 관리페이지 접근권한 추가하기 XpressEngine은 기본적으로 최고관리자(super user)만 관리페이지를 접근하는 것을 허용합니다. 만약 최고관리자 이외의 회원에게 특정 관리페이지에 접근할 수 있는 권한을 부여하려면 접근권한을 지정해주면 됩니다. 접근권한을 지정해주는 방법은 관리페이지 메뉴를 등록하는 방법과 유사합니다. 단, Register key는 settings/permission을 사용해야 합니다. php $id = 'member.edit'; $permission = [ 'title' => '회원정보수정', 'tab' => '회원관리' // 카테고리 ]; 회원정보수정 권한 등록 Register::push('settings/permission', $id, $permission); 등록한 접근권한을 부여할 회원을 지정하려면 관리페이지의 [설정 > 관리페이지 권한 설정] 메뉴에 접속하십시오. ## 관리 페이지 접근권한 부여하기 위에서 등록한 '회원정보수정' 권한을 '회원수정' 페이지에 지정하려면 '회원수정' 페이지의 route와 권한을 연결하면 됩니다. 그러면 해당 페이지에 접근하려고 할 때, 자동으로 권한 검사를 거치게 됩니다. php 'permission' 항목을 사용하여 이 Route에 권한을 부여. Route::settings( 'member', function () { Route::get('{id}/edit', [ 'as' => 'settings.user.edit', 'uses' => 'Member\Settings\UserController@getEdit', 'permission' => 'member.edit', ] }); );
Author: XE Developers ([email protected])
Show file Open project: xpressengine/xpressengine

Protected Properties

Property Type Description
$menuList settings menu list
$selectedMenu selected menu (linked current request)

Public Methods

Method Description
__construct ( Container $container, Router $router, ConfigManager $configManger, Illuminate\Contracts\Auth\Access\Gate $gate ) constructor render 필드가 있을 경우 메뉴를 출력할 때, render에 지정된 closure가 반환하는 문자열을 그대로 출력한다.
getConfig ( string $config ) : ConfigEntity 관리페이지 관련 설정을 조회한다.
getPermissionList ( boolean $groupByTab = true ) : array 관리권한 목록을 반환한다. $sortByTab이 true일 경우 tab 필드별로 group by하여 반환한다.
getSelectedMenu ( boolean $isSuper ) : SettingsMenu 현재 request에 해당하는 메뉴를 반환한다. 메뉴목록이 아직 생성되지 않았다면 메뉴 목록을 먼저 만든다.
getSettingsMenus ( boolean $isSuper ) : SettingsMenu[] 관리페이지 메뉴 목록을 반환한다.
setConfig ( string $configName, array $config ) : void 관리페이지 관련 설정을 저장한다.

Protected Methods

Method Description
getPermission ( string $permissionId ) : mixed 주어진 관리페이지 권한에 해당하는 권한목록을 반환한다.
makeMenuList ( Router $router, boolean $isSuper ) : void 관리페이지 메뉴 목록을 생성한다. 현재 요청의 user와 route 정보를 이용하여 선택된 메뉴, 감추어야할 메뉴를 설정한다.
setSelectedMenu ( Illuminate\Routing\Route $route ) : void 현재 요청에 해당하는 관리페이지 메뉴를 찾는다.

Private Methods

Method Description
getRegisteredMenus ( ) : array getRegisteredMenus

Method Details

__construct() public method

constructor render 필드가 있을 경우 메뉴를 출력할 때, render에 지정된 closure가 반환하는 문자열을 그대로 출력한다.
public __construct ( Container $container, Router $router, ConfigManager $configManger, Illuminate\Contracts\Auth\Access\Gate $gate )
$container Xpressengine\Register\Container XpressEngine Register 등록된 관리메뉴와 관리권한을 조회할 때 사용한다.
$router Illuminate\Routing\Router router
$configManger Xpressengine\Config\ConfigManager 관리페이지 관련 설정 정보를 조회/저장할 때 사용한다.
$gate Illuminate\Contracts\Auth\Access\Gate 관리페이지 권한 정보를 조회/저장할 때 사용한다.

getConfig() public method

관리페이지 관련 설정을 조회한다.
public getConfig ( string $config ) : ConfigEntity
$config string 설정 키
return Xpressengine\Config\ConfigEntity

getPermission() protected method

주어진 관리페이지 권한에 해당하는 권한목록을 반환한다.
protected getPermission ( string $permissionId ) : mixed
$permissionId string 권한아이디
return mixed

getPermissionList() public method

관리권한 목록을 반환한다. $sortByTab이 true일 경우 tab 필드별로 group by하여 반환한다.
public getPermissionList ( boolean $groupByTab = true ) : array
$groupByTab boolean tab별로 group by할지의 여부
return array

getSelectedMenu() public method

현재 request에 해당하는 메뉴를 반환한다. 메뉴목록이 아직 생성되지 않았다면 메뉴 목록을 먼저 만든다.
public getSelectedMenu ( boolean $isSuper ) : SettingsMenu
$isSuper boolean 최고관리자 여부
return SettingsMenu

getSettingsMenus() public method

관리페이지 메뉴 목록을 반환한다.
public getSettingsMenus ( boolean $isSuper ) : SettingsMenu[]
$isSuper boolean 최고관리자 여부
return SettingsMenu[]

makeMenuList() protected method

관리페이지 메뉴 목록을 생성한다. 현재 요청의 user와 route 정보를 이용하여 선택된 메뉴, 감추어야할 메뉴를 설정한다.
protected makeMenuList ( Router $router, boolean $isSuper ) : void
$router Illuminate\Routing\Router router
$isSuper boolean 최고관리자 여부
return void

setConfig() public method

관리페이지 관련 설정을 저장한다.
public setConfig ( string $configName, array $config ) : void
$configName string 설정 키
$config array config 설정 데이터
return void

setSelectedMenu() protected method

현재 요청에 해당하는 관리페이지 메뉴를 찾는다.
protected setSelectedMenu ( Illuminate\Routing\Route $route ) : void
$route Illuminate\Routing\Route 현재 요청에 매칭된 route
return void

Property Details

$menuList protected property

settings menu list
protected $menuList

$selectedMenu protected property

selected menu (linked current request)
protected $selectedMenu