imagecms/ImageCMS

View on GitHub
application/modules/admin_menu/admin.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

use admin_menu\classes\AdminMenuBuilder as AdminMenuBuilder;

(defined('BASEPATH')) OR exit('No direct script access allowed');

/**
 * Image CMS
 * Related_products Module Admin
 */
class Admin extends BaseAdminController
{

    public function __construct() {
        parent::__construct();
        $lang = new MY_Lang();
        $lang->load('admin_menu');
        $this->load->model('admin_menu_model');

        if (MAINSITE) {
            redirect(site_url('admin'));
        }
    }

    /**
     * Start page
     */
    public function index() {
        $this->load->helper('admin_menu');
        if (is_saas()) {
            $this->edit_tariff_menus();
        } else {
            $this->edit_menus();
        }
    }

    public function edit_menus() {
        \MY_Lang::setLang('en_US');
        $lang = new \MY_Lang();
        $lang->load('admin_menu');

        $menus = [
                  'full'         => $this->load->module('admin_menu')->setDevMode('full')->show(),
                  'corporate'    => $this->load->module('admin_menu')->setDevMode('corporate')->show(),
                  'professional' => $this->load->module('admin_menu')->setDevMode('professional')->show(),
                  'premium'      => $this->load->module('admin_menu')->setDevMode('premium')->show(),
                 ];

        $menus = array_filter($menus);

        \MY_Lang::setLang($this->config->item('language'));
        $lang->load('admin_menu');
        $this->load->module('admin_menu')->unsetDevMode();

        \CMSFactory\assetManager::create()
            ->setData('menus', $menus)
            ->registerStyle('admin_menu_dev')
            ->registerScript('admin_menu_dev')
            ->renderAdmin('edit_menus');
    }

    public function edit_tariff_menus() {
        \MY_Lang::setLang('en_US');
        $lang = new \MY_Lang();
        $lang->load('admin_menu');

        $type = $this->input->get('type') ? $this->input->get('type') : 'billing';
        $tariffs = \saas\models\SaasTariff::all();

        foreach ($tariffs as $key => $tariff) {
            $tariffs[$key]->menu = $this->load->module('admin_menu')->setDevMode("Tariff_{$tariff->id}_menu", $type)->show();
        }

        $menus = [
                  'full'    => $this->load->module('admin_menu')->setDevMode('full')->show(),
                  'tariffs' => $tariffs,
                 ];

        $menus = array_filter($menus);

        $this->template->registerCssFile('./application/modules/admin_menu/assets/js/context_menu/jquery.contextMenu.css');
        $this->template->registerJsFile('./application/modules/admin_menu/assets/js/context_menu/jquery.contextMenu.js', 'after');
        $this->template->registerJsFile('./application/modules/admin_menu/assets/js/context_menu/jquery.ui.position.js', 'after');
        $this->load->module('admin_menu')->unsetDevMode();
        \CMSFactory\assetManager::create()
            ->setData('menus', $menus)
            ->registerStyle('admin_menu_dev_tariff')
            ->registerScript('admin_menu_dev')
            ->renderAdmin('edit_tariff_menus');
    }

    /**
     * Cms menus page
     */
    private function cms() {
        \CMSFactory\assetManager::create()
            ->setData(
                [
                 'full_menu'         => AdminMenuBuilder::getMenuList(AdminMenuBuilder::$FULL_MENU),
                 'corporate_menu'    => AdminMenuBuilder::getMenuList(AdminMenuBuilder::$CORPORATE_MENU),
                 'professional_menu' => AdminMenuBuilder::getMenuList(AdminMenuBuilder::$PROFESSIONAL_MENU),
                 'premium_menu'      => AdminMenuBuilder::getMenuList(AdminMenuBuilder::$PREMIUM_MENU),
                ]
            )
            ->registerStyle('admin_menu')
            ->registerScript('admin_menu')
            ->renderAdmin(__FUNCTION__);
    }

    /**
     * Premmerce tariffs menus page
     */
    private function tariffs() {
        $tariffs = \saas\models\SaasTariff::all();
        foreach ($tariffs as $key => $tariff) {
            $tariffs[$key]->menu = AdminMenuBuilder::getMenuList("Tariff_{$tariff->id}_menu");
        }

        \CMSFactory\assetManager::create()
            ->setData(
                [
                 'tariffs'   => $tariffs,
                 'full_menu' => AdminMenuBuilder::getMenuList(AdminMenuBuilder::$FULL_MENU),
                ]
            )
            ->registerStyle('admin_menu')
            ->registerScript('admin_menu')
            ->renderAdmin(__FUNCTION__);
    }

    /**
     * Save cms menu
     */
    public function saveMenu() {
        $data = $this->input->post();
        $data = array_map('json_decode', $data);

        if ($data) {
            AdminMenuBuilder::save($data);
            showMessage(lang('Successfully saved.', 'admin_menu'), lang('Success', 'admin_menu'));
        } else {
            showMessage(lang('No data to save.', 'admin_menu'), lang('Error', 'admin_menu'), 'r');
        }
    }

    /**
     * Save tariffs menus
     */
    public function saveTariffsMenus() {
        $data = $this->input->post();
        $tariffsMenus = json_decode($data['tariffsMenus']);
        $type = $data['type'];

        if ($tariffsMenus) {
            AdminMenuBuilder::saveTariffsMenus($tariffsMenus, $type);
            showMessage(lang('Successfully saved.', 'admin_menu'), lang('Success', 'admin_menu'));
        } else {
            showMessage(lang('No data to save.', 'admin_menu'), lang('Error', 'admin_menu'), 'r');
        }
    }

    /**
     * Upload tariffs menus
     */
    public function uploadTariffsMenus() {
        $tariffs_menus_paths = glob(AdminMenuBuilder::getMenuPath() . 'store/Tariff_*_menu.php');

        $menus = [];
        foreach ($tariffs_menus_paths as $path) {
            $saas_path = str_replace('./', '/var/www/saas_data/mainsaas/', $path);
            $menus[$saas_path] = file_get_contents($path);
        }

        saas\server\Store::uploadTariffsMenus($menus);

        showMessage(lang('Successfully updated.', 'admin_menu'), lang('Success', 'admin_menu'));
    }

    public function ajaxUpdateItemTitle() {
        $data = $this->input->post();
        $poFileManager = new \translator\classes\PoFileManager();

        $name = 'admin_menu';
        $type = 'modules';
        $lang = $this->config->item('language');

        $po_data = [];
        $po_data[$data['origin']]['translation'] = $data['translate'];

        $poFileManager->update($name, $type, $lang, $po_data);
    }

    public function ajaxGetNewMenuItem() {
        $type = $this->input->get('type') ? $this->input->get('type') : 'TD';
        return \CMSFactory\assetManager::create()->setData('type', $type)->fetchAdminTemplate('devMenuOneItem', FALSE);
    }

}