<?php use_helper('Javascript', 'Object', 'tvtl'); ?>
<div>
  <div class="span-5">
    <div class="mix">Cây thư mục hiện tại</div>
  	<div id="folderTree"></div>
    <div style="display: none" id="result"></div>
  </div>
  <div style="float: left; width: 530px;">
  	<div class="mix">Thư mục đang chọn: <span id="currentfolder"></span></div>
    <div class="left-tab">
      <div class="tab-menu-active" id="addtab"><?php echo link_to_function('Tạo thư mục con', "clickTab('add', 'edit')") ?></div>
      <div class="tab-menu-unactive" id="edittab"><?php echo link_to_function('Sửa đổi thư mục', "clickTab('edit', 'add')") ?></div>
      <div class="tab-menu-unactive"><?php echo link_to_function('Xóa thư mục', "if (confirm('Bạn có muốn xóa thư mục này không?')) deleteFolder()")?></div>
    </div>
    <div class="right-content">
        <div id="add">
          <?php $nodeTypes = array(); ?>
          <?php foreach (sfConfig::get('app_resource_type') as $v) $nodeTypes[$v] = myUtility::vietUpcase(commonData::getCatTypeName($v), true); ?>
          <?php echo gridTable(array(
            array(3,7),
            array('Kiểu thư mục', select_tag('nodeType', $nodeTypes, array('style'=>'width:250px;height:25px', 'onchange'=>'myClickHandler()'))),
            array('Tên thư mục', input_tag('newNode','','style="width:250px"')),
          ))?>
        </div>

        <div id="edit" style="display: none;">
          <?php echo gridTable(array(
            array(3,7),
            array('Tên mới', input_tag('editNode','','style="width:250px"')),
            array('Kiểu liệt kê', select_tag('multiple-option', options_for_select(array('all'=>'Liệt kê tài liệu', 'category'=>'Liệt kê thư mục con', 'lesson'=>'Liệt kê theo mục lục SGK')))),
            array('Kiểu hiển thị', select_tag('display-option', options_for_select(sfConfig::get('app_thumbnail_view_name')))),
          ))?>
        </div>

        <?php echo gridTable(array(
          array(3, 7),
          array('Phân quyền', select_tag('permission', array(
  					3=>'Tất cả đều được gửi bài và gửi ý kiến',
  				  2=>'Chỉ thành viên trang riêng được gửi bài và gửi ý kiến',
  				  0=>'Chỉ quản trị viên được gửi bài, thành viên được gửi ý kiến',
  				  1=>'Chỉ quản trị viên được gửi bài, không ai được gửi ý kiến',
  				 -1=>'Không ai được gửi bài (dùng để chứa thư mục con)',
            ),array('style'=>'width:250px;height:25px', 'onchange'=>'changePermission(this.value)'))),
          array('Đồng bộ', input_tag('currentFolderBase','','style=\'width:225px\'') . '<input id = \'folderBaseButton\' onclick=\'showFolderBase()\' style=\'height: 23px; margin-left: 3px;\' type=\'button\' value=\'▼\'/>'),
        )); ?>
        <div class="span-3">
          <?php echo submit_tag('Tạo thư mục',' id="addButton" style="height:24px;" onclick=createFolder(); return false;')?>
          <?php echo submit_tag('Sửa đổi','id="editButton" style="height:24px; display: none;" onclick=renameFolder(); return false;')?>
        </div>
        <div class="span-7" style="display:none;" id="folderBase"></div>
    </div>
  </div>
</div>
<div class="clear"></div>
<div style="height:10px"></div>
<div>Chọn thư mục để di chuyển:</div>
<div>
<?php $confirmMove = 'Mỗi lần dịch chuyển thư mục sẽ mất 5 phút. Bạn có chắc chắn thực hiện việc này không?'; ?>
<?php echo link_to('Đưa lên', '#', array('onclick'=>'move("up");'))?> |
<?php echo link_to('Đưa xuống', '#', array('onclick'=>'move("down");'))?> |
<?php echo link_to('Sang trái', '#', array('onclick'=>'move("left");','confirm'=>$confirmMove))?> |
<?php echo link_to('Sang phải', '#', array('onclick'=>'move("right");','confirm'=>$confirmMove))?>
</div>
<div style="height:10px"></div>
<?php $baseTree = new categoryBaseTree(); ?>
<script>
<?php echo('
tree=new dhtmlXTreeObject("folderTree","100%","auto",0);
tree.setImagePath("/plugins/dhtmlx/images/");
tree.setOnClickHandler(myClickHandler);
tree.loadXMLString("'.blogStore::$catTree->getTree(null, '/./', true, true).'");
tree.openItem("'.$cat.'");

baseTree=new dhtmlXTreeObject("folderBase","100%","auto",0);
baseTree.setImagePath("/plugins/dhtmlx/images/");
baseTree.loadXMLString("'.$baseTree->getTree(null, '/./').'");

//set default selected
tree.selectItem("root");
myClickHandler("root");

function myClickHandler(id) {
  if (id==undefined) id = tree.getSelectedItemId();
  var nodeType = $("nodeType");
  //nodeType.disabled = !(id==undefined || id=="root" || tree.getParentId(id)=="root");
  nodeType.disabled = !(id=="root");
  if (id!=undefined) {
    var ntype = tree.getUserData(id, "type");
    if (ntype!=undefined) nodeType.value = ntype;
    if (nodeType.value==2) {
      $("folderBase").style.visibility = "hidden";
    } else {
      $("folderBase").style.visibility = "visible"
      baseTree.closeAllItems();
      baseTree.selectItem("tr"+tree.getUserData(id, "base"))
    }
    catPublic = tree.getUserData(id,"public");
    setSelected($("permission"),catPublic);
    $("multiple-option").value = tree.getUserData(id, "listtype");
    $("display-option").value = tree.getUserData(id, "list");
  } else {
    $("folderBase").style.visibility = "visible";
  }
  $("editNode").value = tree.getItemText(id);
  $("currentfolder").innerHTML = tree.getItemText(id);
  //hien thi folder base hien tai
  $("currentFolderBase").value = baseTree.getItemText("tr"+tree.getUserData(id, "base")) == 0 ? "" : baseTree.getItemText("tr"+tree.getUserData(id, "base"));
  //neu la bai viet thi ko can dong bo
  if (tree.getUserData(id, "type") == 2 || nodeType.value == 2) {
    $("currentFolderBase").disable();
    $("folderBaseButton").disable();
  } else {
    $("currentFolderBase").enable();
    $("folderBaseButton").enable();
  }
}

function changePermission(permission) {
  //neu la thu muc de chua thu muc con thi ko can dong bo
  if (permission == -1) {
    $("currentFolderBase").disable();
    $("folderBaseButton").disable();
    $("multiple-option").value = "category";
  } else {
    $("multiple-option").value = "all";
  }
}
function createFolder() {
  var id = tree.getSelectedItemId();
  var name = $("newNode").value;
  var permission = $("permission").value;
  if (name == "") {
    alert("Bạn phải nhập tên cho thư mục mới");
    $("newNode").focus();
    return false;
  }
  var type = $("nodeType").value;
  var base = baseTree.getSelectedItemId();
  if (base!=undefined) base = base.replace(/[a-z]+/gi, "");
  if (type==2 || permission == -1) base = 0;
  if (base==0 && type !=2 && permission != -1) {
    alert("Bạn phải chọn thư mục cơ sở của hệ thống");
    showFolderBase();
    return false;
  }
  if (id=="" || id=="0") return false;

  var result = $("result");
  result.innerHTML = "";
  new Ajax.Updater(
      "result",
      "'.url_for("/admin/createfolder").'" +
      "/id/" + id + "/type/" + type + "/base/" + base + "/name/" + encodeURI(name) + "/public/" + permission,
      {asynchronous:false, evalScripts:false}
  );

  if (result.innerHTML.match(/^(\s|\r|\n)*OK:([0-9]+)(\s|\r|\n)*$/gi)) {
    var newId = result.innerHTML.split(":");
    newId = newId[1];
    tree.insertNewItem(id, newId, name, 0, 0, 0, 0);
    tree.setUserData(newId, "type", type);
    tree.setUserData(newId, "base", base);
    tree.setUserData(newId, "public", permission);
    if (permission==-1) tree.setUserData(newId, "listtype", "category");
    tree.setUserData(newId, "list", "thumb");
    //myClickHandler(newId);
    //clickTab("edit","add");
    $("newNode").value = "";
    alert("Tạo thư mục thành công!");
  } else {
    alert("Loi ket noi voi may chu!");
    return false;
  }
}

function deleteFolder() {
  var id = tree.getSelectedItemId();
  if (id=="" || id=="0" || id=="root") return false;

  var result = $("result");
  result.innerHTML = "";
  new Ajax.Updater(
      "result",
      "'.url_for('/admin/deletefolder').'" +
      "/id/" + id,
      {asynchronous:false, evalScripts:false}
  );
  if (!result.innerHTML.match(/^(\s|\r|\n)*OK(\s|\r|\n)*$/gi)) {
    alert(result.innerHTML);
  } else {
    tree.deleteItem(id);
    alert("Xóa thư mục thành công!");
  }
}

function renameFolder() {
  var id = tree.getSelectedItemId();
  if (id=="" || id=="0" || id=="root") return false;
  var newText = $("editNode").value;
  var base = baseTree.getSelectedItemId();
  if (base!="") base = base.replace(/[a-z]+/gi, ""); else base=0;
  if (newText == tree.getItemText(id) && base == "tr"+tree.getUserData(id, "base")) {
    alert("Bạn phải đổi tên thư mục tại ô tên mới");
    return false;
  }
  var permission = $("permission").value;
  var result = $("result");
  var multiple = $("multiple-option").value;
  var listType = $("display-option").value;
  result.innerHTML = "";
  new Ajax.Updater(
      "result",
      "'.url_for("/admin/renamefolder").'" +
      "/id/" + id + "/base/" + base + "/name/" + encodeURI(newText) + "/public/" + permission + "/multiple/" + multiple + "/list/" + listType,
      {asynchronous:false, evalScripts:false}
  );
  if (result.innerHTML.match(/^(\s|\r|\n)*OK(\s|\r|\n)*$/gi)) {
    tree.setItemText(id, newText);
    tree.setUserData(id, "base", base);
    tree.setUserData(id, "public", permission)
    tree.setUserData(id, "listtype", multiple)
    tree.setUserData(id, "list", listType);
    alert("Đổi tên và thư mục cơ sở thành công!");
  }
}

function changePublic() {
  var index = $("rights").selectedIndex;
  var catPublic = $("rights").options[index].value;
  var id = tree.getSelectedItemId();
  if (id=="" || id==undefined || id=="0" || id=="root") return false;
  if(catPublic == "") {
    alert("Bạn phải chọn một thư mục");
  }

  var result = $("result");
  result.innerHTML = "";
  new Ajax.Updater(
      "result",
      "'.url_for("/admin/changepublic").'" +
      "/id/" + id + "/catPublic/" + catPublic,
      {asynchronous:false, evalScripts:false}
  );
  if (result.innerHTML.match(/^(\s|\r|\n)*OK(\s|\r|\n)*$/gi)) {
    tree.setUserData(id, "public", catPublic);
    $("result").innerHTML = "Đổi quyền cho thư mục thành công!";
  }
}

function move(direction) {
  var action;
  switch(direction) {
    case "left":
      action = "'.url_for('/admin/moveleft').'";
    break;
    case "right":
      action = "'.url_for('/admin/moveright').'";
    break;
    default:
      action = "'.url_for('/admin/updatefolder').'";
    break;
  }
  var id = tree.getSelectedItemId();
  if (id=="" || id==undefined || id=="0" || id=="root") return false;
  var url = action + "/listCat/" + id + "/act/" + direction;
  window.location.href= url;
}

function setSelected($selectId,$optionValue) {
  $options = $selectId.options;
  for(var i = 0; i < $options.length; i++) {
    if($selectId.options[i].value == $optionValue) {
      $selectId.options[i].selected = true;
      break;
    }
  }
}

function clickTab(active,unactive) {
  $("folderBase").hide();
  $(active).show();
  $(unactive).hide();
  $(active+"Button").show();
  $(unactive+"Button").hide();
  $(unactive+"tab").removeClassName("tab-menu-active");
  $(unactive+"tab").addClassName("tab-menu-unactive");
  $(active+"tab").addClassName("tab-menu-active");
}

function showFolderBase () {
	$("folderBase").show();
}

if ('.$error_msg.'==1) alert("Hai lần dịch chuyển thư mục phải cách nhau ít nhất 1 phút");
if ('.$error_msg.'==2) alert("Thư mục ở phía trên khác loại, không thể đưa thư mục này vào được");
if ('.$error_msg.'==3) alert("Bạn phải đưa thư mục này xuống phía dưới thư mục cần đưa vào");
'); ?>
</script>
