* * @author CIBoard (develop@ciboard.co.kr) */ /** * 레이아웃을 관리하는 class 입니다. */ class Managelayout extends CI_Controller { private $css = array(); private $js = array(); function __construct() { } /** * 관리자페이지 레이아웃관리합니다 */ function admin($config = array(), $device_view_type = '') { $data = array(); $CI = & get_instance(); $tmp = dir(APPPATH . 'config'); $menu_files = array(); while ($entry = $tmp->read()) { if (!preg_match('/^admin_menu_([0-9]{3}).*\.php$/', $entry, $m)) continue; $entry = substr($entry , 0, -4); $menu_files[] = $entry; } if ($menu_files) { asort($menu_files); } $data['admin_page_menu'] = array(); foreach($menu_files as $file){ $CI->load->config($file); $res = config_item('admin_page_menu'); $data['admin_page_menu'] += config_item('admin_page_menu'); } if (uri_string() !== config_item('uri_segment_admin')) { list($data['menu_dir1'], $data['menu_dir2']) = explode('/', str_replace(config_item('uri_segment_admin') . '/', '', uri_string())); $data['menu_title'] = element(0, element(element('menu_dir2', $data), element('menu', element(element('menu_dir1', $data), element('admin_page_menu', $data))))); } else { $data['menu_dir1'] = ''; $data['menu_dir2'] = ''; } $layout_skin_file = element('layout', $config); $skin_file = element('skin', $config); $data['layout_skin_path'] = 'admin/' . ADMIN_SKIN; $data['layout_skin_url'] = base_url( VIEW_DIR . element('layout_skin_path', $data)); $data['index_url'] = admin_url($data['menu_dir1'] . '/' . $data['menu_dir2']); $data['layout_skin_file'] = $data['layout_skin_path'] . '/' . $layout_skin_file; $data['view_skin_file'] = $data['layout_skin_path'] . '/'; if ($data['menu_dir1']) { $data['view_skin_file'] .= $data['menu_dir1'] . '/'; } if ($data['menu_dir2']) { $data['view_skin_file'] .= $data['menu_dir2'] . '/'; } $data['view_skin_path'] = $data['view_skin_file']; $data['view_skin_url'] = base_url( VIEW_DIR . $data['view_skin_path']); $data['view_skin_file'] .= $skin_file; $data['favicon'] = $CI->cbconfig->item('site_favicon') ? site_url(config_item('uploads_dir') . '/favicon/' . $CI->cbconfig->item('site_favicon')) : ''; $cachename = 'check_latest_version_from_ciboard_api'; $cachetime = 10800; if ( ! $result = $CI->cache->get($cachename)) { $CI->load->library('Requests'); $requests = new Requests(); $requests->register_autoloader(); $headers = array('Accept' => 'application/json'); $postdata = array('requesturl' => current_full_url(), 'package' => CB_PACKAGE, 'version' => CB_VERSION); $request = $requests->post(config_item('ciboard_check_latest_version'), $headers, $postdata); $result['latest_versions'] = json_decode($request->body, true); if (strtolower(CB_PACKAGE) === 'pro') { $result['latest_version_name'] = $result['latest_versions']['pro_version']; $result['latest_download_url'] = $result['latest_versions']['pro_downloadurl']; } else { $result['latest_version_name'] = $result['latest_versions']['lite_version']; $result['latest_download_url'] = $result['latest_versions']['lite_downloadurl']; } $CI->cache->save($cachename, $result, $cachetime); } $data['version_latest'] = $result; return $data; } /** * 프론트페이지 레이아웃관리합니다 */ function front($config = array(), $device_view_type = '') { $data = array(); $CI = & get_instance(); if ($CI->uri->segment(1) === config_item('uri_segment_admin') && $CI->uri->segment(2) === 'preview') { return $this->preview($config); } $searchconfig = array( '{홈페이지제목}', '{현재주소}', '{회원아이디}', '{회원닉네임}', '{회원레벨}', '{회원포인트}', ); $replaceconfig = array( $CI->cbconfig->item('site_title'), current_full_url(), $CI->member->item('mem_userid'), $CI->member->item('mem_nickname'), $CI->member->item('mem_level'), $CI->member->item('mem_point'), ); $page_title = element('page_title', $config) ? element('page_title', $config) : $CI->cbconfig->item('site_meta_title_default'); $meta_description = element('meta_description', $config) ? element('meta_description', $config) : $CI->cbconfig->item('site_meta_description_default'); $meta_keywords = element('meta_keywords', $config) ? element('meta_keywords', $config) : $CI->cbconfig->item('site_meta_keywords_default'); $meta_author = element('meta_author', $config) ? element('meta_author', $config) : $CI->cbconfig->item('site_meta_author_default'); $page_name = element('page_name', $config) ? element('page_name', $config) : $CI->cbconfig->item('site_page_name_default'); $data['page_title'] = $page_title = str_replace($searchconfig, $replaceconfig, $page_title); $data['meta_description'] = $meta_description = str_replace($searchconfig, $replaceconfig, $meta_description); $data['meta_keywords'] = $meta_keywords = str_replace($searchconfig, $replaceconfig, $meta_keywords); $data['meta_author'] = $meta_author = str_replace($searchconfig, $replaceconfig, $meta_author); $data['page_name'] = $page_name = str_replace($searchconfig, $replaceconfig, $page_name); $layoutdirname = $device_view_type === 'mobile' ? element('mobile_layout_dir', $config) : element('layout_dir', $config); if (empty($layoutdirname)) { $layoutdirname = $device_view_type === 'mobile' ? $CI->cbconfig->item('mobile_layout_default') : $CI->cbconfig->item('layout_default'); } if (empty($layoutdirname)) { $layoutdirname = 'basic'; } $layout = '_layout/' . $layoutdirname; $data['layout_skin_path'] = $layout; $data['layout_skin_url'] = base_url( VIEW_DIR . $data['layout_skin_path']); $layout .= '/'; if (element('layout', $config)) { $layout .= element('layout', $config); } $data['layout_skin_file'] = $layout; $skindir = $device_view_type === 'mobile' ? element('mobile_skin_dir', $config) : element('skin_dir', $config); if (empty($skindir)) { $skindir = $device_view_type === 'mobile' ? $CI->cbconfig->item('mobile_skin_default') : $CI->cbconfig->item('skin_default'); } if (empty($skindir)) { $skindir = 'basic'; } $skin = ''; if (element('path', $config)) { $skin .= element('path', $config) . '/'; } $skin .= $skindir; $data['view_skin_path'] = $skin; $data['view_skin_url'] = base_url( VIEW_DIR . $data['view_skin_path']); $skin .= '/'; if (element('skin', $config)) { $skin .= element('skin', $config); } $data['view_skin_file'] = $skin; $user_sidebar = $device_view_type === 'mobile' ? element('use_mobile_sidebar', $config) : element('use_sidebar', $config); if ($user_sidebar === '1') { $data['use_sidebar'] = '1'; } elseif ($user_sidebar === '2') { $data['use_sidebar'] = ''; } else { $user_sidebar = $device_view_type === 'mobile' ? $CI->cbconfig->item('mobile_sidebar_default') : $CI->cbconfig->item('sidebar_default'); if ($user_sidebar === '1') { $data['use_sidebar'] = '1'; } elseif ($user_sidebar === '2') { $data['use_sidebar'] = ''; } else { $data['use_sidebar'] = ''; } } $data['favicon'] = $CI->cbconfig->item('site_favicon') ? site_url(config_item('uploads_dir') . '/favicon/' . $CI->cbconfig->item('site_favicon')) : ''; $mem_id = (int) $CI->member->item('mem_id'); if ($CI->input->is_ajax_request() === false) { // 현재 접속자 $CI->load->model('Currentvisitor_model'); $currentpage = $page_name ? $page_name : $page_title; $currentpage = $currentpage ? $currentpage : $CI->cbconfig->item('site_title'); $agent_referrer = $CI->agent->referrer() ? $CI->agent->referrer() : ''; $agent_string = $CI->agent->agent_string() ? $CI->agent->agent_string() : ''; $CI->Currentvisitor_model->add_visitor($CI->input->ip_address(), $mem_id, $CI->member->item('mem_nickname'), cdate('Y-m-d H:i:s'), $currentpage, current_full_url(), $agent_referrer, $agent_string); if ($CI->cbconfig->item('open_currentvisitor') OR $CI->member->is_admin() === 'super') { $minute = (int) $CI->cbconfig->item('currentvisitor_minute'); if ($minute < 1) { $minute = 10; } $curdatetime = cdate('Y-m-d H:i:s', ctimestamp() - $minute * 60); $data['current_visitor_num'] = $CI->Currentvisitor_model->get_current_count($curdatetime); } // 알림 $data['notification_num'] = 0; if ($CI->cbconfig->item('use_notification')) { if ($CI->member->is_member()) { $CI->load->model('Notification_model'); $data['notification_num'] = $CI->Notification_model->unread_notification_num($mem_id); } } // 메뉴관리 $CI->load->model('Menu_model'); $data['menu'] = $CI->Menu_model->get_all_menu($device_view_type); //팝업관리 $CI->load->library('popuplib'); $data['popup'] = $CI->popuplib->display_popup(); } return $data; } /** * 프리뷰 페이지를 위한 레이아웃관리입니다 */ function preview($config = array()) { $data = array(); $CI = & get_instance(); if ($CI->input->get('is_mobile')) { $CI->cbconfig->set_device_view_type('mobile'); } else { $CI->cbconfig->set_device_view_type('pc'); } $device_view_type = $CI->cbconfig->get_device_view_type(); $layoutdirname = $CI->input->get('layout'); if (empty($layoutdirname)) { $layoutdirname = $device_view_type === 'mobile' ? $CI->cbconfig->item('mobile_layout_default') : $CI->cbconfig->item('layout_default'); } if (empty($layoutdirname)) { $layoutdirname = 'basic'; } $layout = '_layout/' . $layoutdirname; $data['layout_skin_path'] = $layout; $data['layout_skin_url'] = base_url( VIEW_DIR . $data['layout_skin_path']); $layout .= '/'; if (element('layout', $config)) { $layout .= element('layout', $config); } $data['layout_skin_file'] = $layout; $skindir = $CI->input->get('skin'); if (empty($skindir)) { $skindir = $device_view_type === 'mobile' ? $CI->cbconfig->item('mobile_skin_default') : $CI->cbconfig->item('skin_default'); } if (empty($skindir)) { $skindir = 'basic'; } $skin = ''; if (element('path', $config)) { $skin .= element('path', $config) . '/'; } $skin .= $skindir; $data['view_skin_path'] = $skin; $data['view_skin_url'] = base_url( VIEW_DIR . $data['view_skin_path']); $skin .= '/'; if (element('skin', $config)) { $skin .= element('skin', $config); } $data['view_skin_file'] = $skin; $user_sidebar = $CI->input->get('sidebar'); if ($user_sidebar === '1') { $data['use_sidebar'] = '1'; } elseif ($user_sidebar === '2') { $data['use_sidebar'] = ''; } else { $user_sidebar = $device_view_type === 'mobile' ? $CI->cbconfig->item('mobile_sidebar_default') : $CI->cbconfig->item('sidebar_default'); if ($user_sidebar === '1') { $data['use_sidebar'] = '1'; } elseif ($user_sidebar === '2') { $data['use_sidebar'] = ''; } else { $data['use_sidebar'] = ''; } } // 메뉴관리 $CI->load->model('Menu_model'); $data['menu'] = $CI->Menu_model->get_all_menu($device_view_type); return $data; } /** * css를 추가합니다 */ function add_css($file = '') { if (empty($file)) { return; } array_push($this->css, $file); } /** * js를 추가합니다 */ function add_js($file = '') { if (empty($file)) { return; } array_push($this->js, $file); } /** * 추가된 css를 리턴합니다 */ function display_css() { $return = ''; $_css = $this->css; if ($_css) { foreach ($_css as $val) { $return .= ''; } } return $return; } /** * 추가된 js를 리턴합니다 */ function display_js() { $return = ''; $_js = $this->js; if ($_js) { foreach ($_js as $val) { $return .= ''; } } return $return; } }