<?php

/**
 * Description of IndexController
 *
 * @author dmastylak
 */
class Page_Controller_Admin_IndexController extends Main_Core_Controller_Admin_IndexController {

    public function indexAction() {



        $this->view->tree = $this->getPages();
    }

    public function addElementAction() {
        $this->_disableView();

        $element = R::findOne('page', 'tree = ?', [$this->_getParam('tree')]);

        if ($element == null) {
            $p = R::dispense('page');
            $p->tree = $this->_getParam('tree');
            $p->parent = $this->_getParam('parent');
            $p->name = $this->_getParam('name');
            $p->slug = Eppe_Slugify::slugify($this->_getParam('name'));
            $p->type = $this->_getParam('type');
	    $p->forms_id = $this->_getParam('forms_id');
            R::store($p);
            
        } else {
            
            $p = R::findOne('page', 'tree = ?', [$this->_getParam('tree')]);
            $p->name = $this->_getParam('name');
            $p->slug = Eppe_Slugify::slugify($this->_getParam('name'));
            $p->tree = $this->_getParam('tree');
            $p->parent = $this->_getParam('parent');
            $p->type = $this->_getParam('type');
	    $p->forms_id = $this->_getParam('forms_id');
            
            R::store($p);
        }

        exit;
        $folder = R::dispense('page');

        $folder->name = "nowy";


        R::store($folder);
    }

    public function getContentPageAction() {

        $page = R::findOne('page', 'tree = ?', [$this->_getParam('tree')]);

	$active = ($page->active)? 'Aktywna w menu': 'Nieakrywna w menu';
        echo '<h2>' . $page->name .' / ' . $active . '</h2>';

        if ($page->type == 'file') {

            $form = new Page_Form_Page();
;
            echo '<p>';
            echo $page->content;
            echo '</p>';
            echo '<button class="button" type="submit" tree="' . $page->tree . '" id="edit_page" name="submit">Edytuj</button>';
        } elseif ($page->type == 'main') {
            if (strlen($page->action) < 2) {
                $action = '{"route":"","params":""}';
                $rout = json_decode($action);
            } else {
                $rout = json_decode($page->action);
            }

            echo 'Rout:<br />';
            echo '<input id="route" type="text" value="' . $rout->route . '" /><br />';
            echo 'Parametry:<br />';
            echo '<input id="params" type="text" value="' . $rout->params . '" /><br />';
            echo '<button class="button" type="submit" tree="' . $page->tree . '" id="savemain" name="submit">Zapisz</button>';
        }
        exit;
    }

    /**
     * Zapis kolejności w drzewie
     */
    public function saveOrderAction() {
        $this->_disableView();

        foreach ($_POST['ord'] as $key => $order) {
                $p = R::findOne('page', 'tree = ?', [$order]);
                
                if ($p != null) {
                $p->o = "$key";
                var_dump($order);
                R::store($p);
                }
        }
        exit;
    }

    /**
     * Zapis rodzica w drzewie
     */
    public function saveParentAction() {
        $this->_disableView();

//        var_dump($_POST);exit;
        if ($_POST['parent'] == '#') {
            $parent = 0;
        }
        
                $p = R::findOne('page', 'tree = ?', [$_POST['tree']]);
                
                if ($p != null) {
                $p->parent = $parent;
              
                R::store($p);
                }
        
        exit;
    }
    
    /**
     * Dodawanie głównej gałęzi
     */
    public function createRootAction() {
        
        $page = R::dispense('page');
        
        $page->tree = $_POST['tree'];
        $page->name = 'nowy';
        $page->parent = '0';
        $page->type = 'main';
        
        R::store($page);
        
        var_dump($_POST);
        exit;
    }

    public function saveMainAction() {
        $this->_disableView();

//        var_dump($_POST);exit;
        $page = R::findOne('page', 'tree = ?', [$_POST['tree']]);

        $var = '{"route":"' . $_POST['route'] . '","params":"' . $_POST['params'] . '"}';

        $page->action = $var;

        R::store($page);

//        var_dump($this->_getParam('params'));

        exit;
    }

    public function editPageAction() {

        $page = R::findOne('page', 'tree = ?', [$this->_getParam('tree')]);

        $form = new Page_Form_Page();
        $this->view->form = $form;

        if ($this->_isPost()) {
            $post = $this->_getPost();

            $page->name = $post['name'];
            $page->content = $post['content'];
            $page->active = $post['active'];
            $page->forms_id = $post['forms_id'];
	    $page->slug = Eppe_Slugify::slugify($post['name']);

            R::store($page);

            //$form->populateWithBean($page);

            $this->_redirectIndex();
        } else {
            $form->populateWithBean($page);
        }

        $view = new Zend_View();
    }

    /**
     * Pobieranie menu głównego
     */
    public static function getMainMenu() {
        $menu = R::find('page', 'parent = ? ORDER BY o', ['0']);

        $m = '';

        foreach ($menu as $main) {
            $m .= '<li>';

            $sub_menu = R::find('page', 'parent = ? ORDER BY o', ['' . $main->tree . '']);
            if (!empty($sub_menu)) {
                $m .= '<span class = "dropdown1">
            ' . $main->name . '
            <img src = "/modules/Core/front/images/bip-menu_arrow.png">
            </span>';
                $m .= '<ul class="level2 regular">';

                foreach ($sub_menu as $sub_2) {
                    $urlHelper = new Zend_View_Helper_Url();

                    if ($sub_2->type == 'file') {
                        $url = $urlHelper->url(['main' => $main->slug, 'slug' => $sub_2->slug], 'page-show-l2', true);
                    } elseif ($sub_2->type == 'main') {
                        $urlHelper = new Zend_View_Helper_Url();
                        $data = json_decode($sub_2->action);
                        $url = $urlHelper->url([], $data->route, true) . $data->params;
                    } else
                        $url = '#';

                    $last = R::find('page', 'parent = ? ORDER BY o', [$sub_2->tree]);
                    if (!empty($last)) {
                        $m .= '<li><span class="dropdown2">' . $sub_2->name . ' <img src="/modules/Core/front/images/bip-menu_arrow.png"></span>';

                        $m .= '<ul class="level3">';

                        foreach ($last as $l) {
                            $url = $urlHelper->url(['main' => $main->slug, 'slug' => $l->slug], 'page-show-l2', true);
                            $last2 = R::find('page', 'parent = ? ORDER BY o', [$l->tree]);
                            if (!empty($last2)) {
                                $m .= '<li><span class="dropdown2">' . $l->name . '<img src="/modules/Core/front/images/bip-menu_arrow.png"></span>';

                                $m .= '<ul class="level3">';
                                foreach ($last2 as $v) {
                                    $m .= '<li><a href="">' . $v->name . '</a></li>';
                                }

                                $m .= '</ul>';

                                $m .= '</li>';
                            } else {
                                $m .= '<li><a href="' . $url . '">' . $l->name . '</a></li>';
                            }
                        }

                        $m .= '</ul>';

                        echo '</li>';
                    } else {
                        $m .= '<li><a href="' . $url . '">' . $sub_2->name . '</a></li>';
                    }
                }

                $m .= '</ul>';
            } else {
		    if($main->action == ''){
			    $route = $urlHelper->url(['main' => 'inne', 'slug' => $main->slug], 'page-show-l2', true);
		    }else{
			if ($main->type != 'file') {
			    $urlHelper = new Zend_View_Helper_Url();
			    $data = json_decode($main->action);
			    $route = $urlHelper->url([], $data->route, true) . $data->params;
			} else {
			    $route = '#';
			}
		}
                $m .= '<a href="' . $route . '">' . $main->name . '</a>';
            }
            $m .= '</li>';
        }
        return $m;
        ;
    }

    public function getPages() {
//        $this->_disableView();

        $pages = R::find('page', 'parent = ? ORDER BY o', ['0']);

        $u = '<ul>';
        /**
         * Główne menu
         */
        foreach ($pages as $page) {
            $u .= "<li id=\"" . $page->tree . "\" data-jstree='{ \"icon\" : \"https://jstree.com/tree-icon.png\" }' >" . substr($page->name, 0, 29) . (strlen($page->name) > 29 ? '...' : '');

            $sub = R::find('page', 'parent = ? ORDER BY o', [$page->tree]);

            if ($sub == null) {
//                var_dump('lipa');
            } else {
                $u .= '<ul>';

                /**
                 * I poziom
                 */
                foreach ($sub as $s_menu) {

                    $type = $s_menu->type == 'file' ? 'data-jstree=\'{ "icon" : "/modules/Core/admin/images/doc.png" }\'' : '';
                    $u .= '<li ' . $type . ' id="' . $s_menu->tree . '">' . substr($s_menu->name, 0, 29) . (strlen($s_menu->name) > 29 ? '...' : '');

                    $s2 = R::find('page', 'parent = ? ORDER BY o', [$s_menu->tree]);
                    if (!empty($s2)) {
                        $u .= '<ul>';
                        foreach ($s2 as $sub2) {

                            $s3 = R::find('page', 'parent = ? ORDER BY o', [$sub2->tree]);
                            if (!empty($s3)) {
                                $u .= '<li>' . $sub2->name . '<ul>';
                                foreach ($s3 as $line) {
                                    $type = $line->type == 'file' ? 'data-jstree=\'{ "icon" : "/modules/Core/admin/images/doc.png" }\'' : '';
                                    $u .= '<li '.$type.' id="' . $line->tree . '">' . $line->name . '</li>';
                                }
                                $u .= '</li></ul>';
//                                $u .= "<ul><li>testowy</li></ul>";
                            } else {
                                $type = $sub2->type == 'file' ? 'data-jstree=\'{ "icon" : "/modules/Core/admin/images/doc.png" }\'' : '';
                                $u .= '<li ' . $type . ' id="' . $sub2->tree . '">' . substr($sub2->name, 0, 29) . (strlen($sub2->name) > 29 ? '...' : '') . '</li>';
                            }
                        }
                        $u .= '</ul>';
                    }

                    $u .= '</li>';
                }
                $u .= '</ul>';
            }

            $u .= '</li>';
        }
        $u .= '</ul>';

        return $u;
    }

    public function removeElementAction() {
        $this->_disableView();

        $node = R::findOne('page', 'tree = ? ', [$this->_getParam('id')]);

        R::trash($node);

        exit;
    }
    
    public function configAction() {
	    $bean = R::findOne('core', 'WHERE `attr` = \'template\'');

	    $form = new Page_Form_Config();
	    
	    $form->getElement('template')->setValue($bean->value);
	    
	    if ($this->_isPost()) {
		    $post = $this->_getPost();

			if (isset($post['Anuluj'])) {
				$this->_redirectIndex();
			}
			
			if ($form->isValid($post)) {
				$bean->value = $post['template'];
				R::store($bean);
			}
		    
	    }
	    $this->view->form = $form;
    }

}
