<?
// 11.09.12 - добавлен вызов внешних функций с именами типа AJAX_....., подставляется имя команды
include_once(_DIR_EXT.'/HTML/c_page_XML_AJAX.php');
class c_page_cab_ajax extends c_page_XML_AJAX
{

  function reboot()
  { //ob_start() ;
    global $debug_boot,$debug_modul ;
      //$debug_boot=1 ;
    //  $debug_modul=1 ;
    reboot_engine() ;
    ACCOUNTS()->update_member_info(MEMBER()) ;
    $this->add_element('update_page',1) ;
      $_SESSION['cur_obj_page_dir']=array() ;
    //$text=ob_get_clean() ;
    //$this->add_element('show_modal_window','HTML',array('title'=>'Окно для вывода результатов','width'=>'1200px')) ;

  }

    function demo_ajax()
    {  if ($_POST['param']=='modal')
       { // вывод результата в модальное окно
         echo 'Значение поля "'.$_POST['demo1'].'"<br><br>' ;
         ?><button class=cancel>Закрыть</button><?
         $this->add_element('show_modal_window','HTML',array('title'=>'Окно для вывода результатов')) ;
       }

       if ($_POST['param']=='notife') // вывод результата в NOTIFE
          $this->add_element('show_notife','Значение поля "'.$_POST['demo1'].'"',array('type'=>'info')) ;

       if ($_POST['param']=='div') // вывод результата в DIV
          $this->add_element('AJAX_RESULT.HTML','Значение поля "'.$_POST['demo1'].'"') ;

        // просто перегрузить страницу
        if ($_POST['param']=='update_page') $this->update_page=1 ;
    }
    function demo_modal()
    {  ?><form>
             <input type="text"><br>
             <input type="text">
             <input type="submit" value="SEND" class="v2" NoSubmitFormOnEnter="1"  validate="form" >
           </form><?
        $this->add_element('show_modal_window','HTML',array('title'=>'Окно для вывода результатов')) ;
    }

    function get_sign_file()
    {
        $cont=file_get_contents(_DIR_TO_ROOT.'/cp/test.sign') ;
        $this->add_element('sign',$cont) ;
    }

    function get_ans1_cont()
    {   $res=$_POST['res'] ;
        ob_start() ;
        //damp_array($res,1,-1) ;
        var_dump($res) ;
        $text=ob_get_clean() ;
        $this->add_element('panel_presult.HTML',$text) ;
    }



    function set_filter()
    { if ($_POST['action']) $_POST['filter']['action']=$_POST['action'] ;
      $url=REPORT()->prepare_url($_POST['filter'],array('base_url'=>$_POST['filter_dir'])) ;
      $this->go_url=$url ;
      $this->add_element('url',$url) ;
      //
      //echo $url ;
    }

    function save_setting()
    { if (_sizeof($_POST['setting'])) foreach($_POST['setting'] as $name=>$value) update_site_setting($name,$value) ;
      $this->add_element('show_notife','Сохранено',array('type'=>'info')) ;
      $this->add_element('update_page',1) ;
    }

    //==========================================================================================================================================================================
     // РАБОТА СО СПИСКАМИ
     //==========================================================================================================================================================================

     function list_rec_update()
     { $res=array() ;
       if (_sizeof($_POST['list_rec'])) foreach($_POST['list_rec'] as $id=>$rec) $res[]=_IL($_POST['list_name'])->rec_update($id,$rec) ;
       //$this->add_element('show_modal_window','HTML',array('title'=>'Окно для вывода результатов')) ;
       $this->add_element('update_page',1) ;
     }

     function list_rec_create()
     { if ($_POST['new_rec'] and $_POST['list_name'])
       { _IL($_POST['list_name'])->rec_create(array('obj_name'=>$_POST['new_rec'])) ;
         $this->add_element('update_page',1) ;
       }
     }

     function list_rec_delete()
     { if ($_POST['list_name'])
       _IL($_POST['list_name'])->rec_delete($_POST['rec_id']) ;
       $this->add_element('update_page',1) ;
     }


    function save_filter_state()
    {
        $_SESSION['filter_status'][$_POST['report_code']]=$_POST['value'];
    }

    function get_panel_select_tree()
    {
       ?>
        <script src="/AddOns/jstree/dist/jstree.min.js"></script>
          <link rel="stylesheet" href="/AddOns/jstree/dist/themes/default/style.css" />
        <div id="tree"></div>
        <script type="text/javascript">
        $j('div#tree').jstree(
        { 'core' : { 'data' : { 'url' : '/ajax_json.php',
                                'data' : function (node) { return {'id':node.id,'cmd':'get_tree_content'};}
                              },
                    check_callback: false
                   },
            "types" :
             {  "#" : {
                  "max_children" : 1,
                  "max_depth" : 4,
                  "valid_children" : ["default"]
                },
                "root" : {
                  "icon" : "/static/3.3.5/assets/images/tree_icon.png",
                  "valid_children" : ["default"]
                },
                "default" : {_icon:"fa fa-folders",
                  "valid_children" : ["default","file"]
                },
                "file" : {
                  "icon" : "glyphicon glyphicon-file",
                  "valid_children" : []
                }
              },
              "plugins" : [
                "checkbox","dnd", "search","state", "types","changed"
              ],


              "checkbox" : {checkbox:true, // сохраняет все значения по умолчанию для плагина флажка
                            visible:true, //  //  логическое указание, если флажки должны быть видимыми (их можно изменить позже, используя show_checkboxes () и hide_checkboxes). Значение по умолчанию равно true.
                            three_state : true,  // логическое значение, указывающее, следует ли каскадировать флажки и иметь неопределенное состояние. По умолчанию true
                            whole_node:false,// логическое указание, если щелчок в любом месте узла должен действовать как щелчок на флажке. Значение по умолчанию равно true.
                            keep_selected_style : true,  // boolean, указывающий, следует ли сохранить или удалить выбранный стиль узла. Значение по умолчанию равно true.
                            cascade: '',  // Этот параметр определяет, как применяются каскадные и неопределенные узлы.
                                          //  Если в строке находится «вверх», то включен режим «каскадирование», если «вниз» находится в строке - каскадное нажатие включено, если «неопределенный» находится в строке - будут использоваться неопределенные узлы.
                                            // Если для параметра three_state установлено значение true, этот параметр автоматически устанавливается на «вверх + вниз + неопределенный». По умолчанию используется значение ''.
                            tie_selection:false,  // Этот параметр управляет, если флажок привязан к общему дереву или внутреннему массиву, поддерживаемому плагином. По умолчанию значение true, только значение false, если вы точно знаете, что делаете.
                            cascade_to_disabled:false, // Этот параметр управляет, если каскадное нажатие влияет на отключенные флажки
                            cascade_to_hidden:false  // Этот параметр управляет, если каскадирование вниз влияет на скрытые флажки
    }

        })  // для работы требуется
            // tie_selection:false
            .on("check_node.jstree uncheck_node.jstree", function(e, data)
            { $j('#tree_check_result').html('') ;
              $j('#test222').next('div').find('li.false').remove();
              var parent_id=0 ;
              var parent_node=null ;
              var node_path='' ;
              var selectedElms = $j('#tree').jstree("get_checked", true);
              $j.each(selectedElms, function()
              { //selectedElmsIds.push(this.id);
                  //console.log(this) ;
                  node_path=$j('#tree').jstree("get_path",this,' / ');
                  parent_id=this.parent;
                  parent_node = $j('#tree').jstree('get_node',parent_id) ;
                  //console.log(parent_node) ;
                  console.log(parent_node.state.checked) ;
                  if (!parent_node.state.checked) $j('#tree_check_result').append('<div id=tree_el_view_'+this.id+'><input type=hidden name=filter[deps_ids][] value='+this.id+'>'+node_path+'</div>') ;
              });

            })
          </script>
        <style type="text/css">
           div#tree{height:500px;}
        </style>
        <?
        $this->add_element('show_modal_window','HTML',array('title'=>'Выбор элемента','width'=>'1000px')) ;
    }


}
