Current File : /home/escuelai/public_html/biblioteca.escuelaintegral.edu.uy/javascript/cms/cms_tree_dnd.js |
//cette m�thode est en r�alit� une r��criture de la m�thode checkAcceptance de l'objet dijit.tree.dndSource
//d�termine si l'item est d�pla�able
function cms_check_if_draggeable_item_tree(source,node){
var item = source.tree.selectedItem;
var type = item.type[0];
//on peut d�placer une rubrique ou un article!
switch(type){
case 'root_section' :
case 'section' :
case 'article' :
return true;
break;
case 'articles' :
default :
return false;
break;
}
}
//cette m�thode est en r�alit� une r��criture de la m�thode checkItemAcceptance de l'objet dijit.tree.dndSource
//d�termine si c'est d�posable en l'endroit
function cms_check_if_item_tree_can_drop_here(target,source,position){
var target_item = dijit.getEnclosingWidget(target).item;
var current_item = dijit.getEnclosingWidget(target).tree.selectedItem;
if(target_item.root){
//pour le root,seulement les rubriques
switch(current_item.type[0]){
case "root_section" :
case "section" :
return true;
break;
default :
return false;
break;
}
}else{
switch(target_item.type[0]){
case 'root_section' :
case 'section' :
case 'articles' :
return true;
break;
case 'article' :
if (current_item.type[0] == 'article' && position != 'over') return true;
else return false;
break;
default :
return false;
break;
}
}
}
function cms_child_change(parent,childs){
if (parent.id != 'root') {
if(parent.type[0] == 'section' || parent.type[0] == 'root_section'){
var num_parent = parent.id[0];
var children = new Array();
var articles = new Array();
for(var i=0 ; i<childs.length ; i++){
var child = childs[i];
if(child.type[0] == 'section' || child.type[0] == 'root_section'){
children.push(child.id[0]);
}else if (child.type[0] == "article"){
articles.push(child.id[0].replace("article_",""));
}
}
cms_dnd_tree_update(num_parent,children);
if(articles.length){
cms_update_articles_parent(articles,num_parent);
}
} else if (parent.type[0] == 'articles') {
var num_parent = parent.id[0].replace("articles_","");
var articles = new Array();
for(var i=0 ; i<childs.length ; i++){
var child = childs[i];
articles.push(child.id[0].replace("article_",""));
}
cms_update_articles_parent(articles,num_parent);
} else {
return false;
}
}
}
function cms_section_leave_root(item){
this.store.setValue(item,'type','section');
var container = document.getElementById('editorial_tree_container');
var target_id = dijit.byId('section_tree').dndController.current.item.id[0];
var position = dijit.byId('section_tree').dndController.dropPosition;
var children = Array();
var root_children = this.root.children;
for (var i=0; i<root_children.length ; i++){
children.push(root_children[i].id[0]);
}
cms_dnd_tree_update(0,children);
if (document.getElementById('target_id') == null) {
var t_id = document.createElement('input');
t_id.type = 'hidden';
t_id.id = 'target_id';
t_id.name = 'target_id';
t_id.value = target_id;
container.parentNode.appendChild(t_id);
} else {
document.getElementById('target_id').value = target_id;
}
if (document.getElementById('position') == null) {
var pos = document.createElement('input');
pos.type = 'hidden';
pos.id = 'position';
pos.name = 'position';
pos.value = position;
container.parentNode.appendChild(pos);
} else {
document.getElementById('position').value = position;
}
}
function cms_section_add_to_root(item){
if(item.type[0] == 'section' || item.type[0] == 'root_section'){
var target_id = "";
if (document.getElementById('target_id') != null) {
target_id = document.getElementById('target_id').value;
}
var position = "";
if (document.getElementById('position') != null) {
position = document.getElementById('position').value;
}
var root_children = this.root.children;
var children = new Array();
var flag = false;
for (var i=0; i<root_children.length ; i++){
var child_id = root_children[i].id[0];
if ((target_id == child_id) && (position == 'Before')) {
children.push(item.id[0]);
flag = true;
}
children.push(child_id);
if ((target_id == child_id) && (position == 'After')) {
children.push(item.id[0]);
flag = true;
}
}
if (flag == false) {
children.push(item.id[0]);
}
this.store.setValue(item,'type','root_section');
cms_dnd_tree_update(0,children,cms_articles_updated);
}
}
function cms_dnd_tree_update(num_parent,children,callback){
var update = new http_request();
update.request('./ajax.php?module=cms&categ=update_section',true,'&num_parent='+num_parent+'&new_children='+children,true,callback);
}
function cms_compare_forms(){
if(!document.getElementById('content_infos').querySelector('form') || !document.getElementById('content_infos').querySelector('form').getAttribute('id')) return false;
var currentForm = pmbForm.toJson(document.getElementById('content_infos').querySelector('form').getAttribute('id'));
if(currentForm != cms_serialized_form){
return true;
}
return false;
}
function cms_register_form(){
if(document.getElementById('content_infos').querySelector('form') && document.getElementById('content_infos').querySelector('form').getAttribute('id')){
cms_serialized_form = pmbForm.toJson(document.getElementById('content_infos').querySelector('form').getAttribute('id'));
}else{
cms_serialized_form = '';
}
}
function cms_load_content_infos(item,node,evt){
var content = dijit.byId('content_infos');
var change = false;
var add_section_button = document.getElementById('add_section_button');
var add_article_button = document.getElementById('add_article_button');
if(typeof(tinyMCE)!= 'undefined') {
if (tinyMCE_getInstance('cms_editorial_form_resume')) {
tinyMCE_execCommand('mceToggleEditor',true,'cms_editorial_form_resume');
tinyMCE_execCommand('mceRemoveControl',true,'cms_editorial_form_resume');
}
if (tinyMCE_getInstance('cms_editorial_form_contenu')) {
tinyMCE_execCommand('mceToggleEditor',true,'cms_editorial_form_contenu');
tinyMCE_execCommand('mceRemoveControl',true,'cms_editorial_form_contenu');
}
}
if(item.id != "root"){
if(typeof cms_current_editorial_content != 'undefined' && cms_current_editorial_content != '' && cms_compare_forms()){
if(!confirm(pmbDojo.messages.getMessage("cms_tree","confirm"))){
return false;
}
}
content.onDownloadEnd = function(){
if(dijit.byId('el9Child')){
dijit.byId('el9Child').onDownloadEnd = function(){
cms_register_form();
}
}else{
cms_register_form();
}
}
switch(item.type[0]){
case "section" :
case "root_section" :
change =true;
cms_current_editorial_content = item.id[0];
content.set('href','./ajax.php?module=cms&categ=get_infos&type=section&id='+item.id[0]);
add_section_button.href = "./cms.php?categ=section&sub=edit&id=new&num_parent="+item.id[0];
add_article_button.href = "./cms.php?categ=article&sub=edit&id=new&num_parent="+item.id[0];
content.domNode.scrollIntoView();
break;
case "article" :
change =true;
cms_current_editorial_content = item.id[0];
content.set('href','./ajax.php?module=cms&categ=get_infos&type=article&id='+item.id[0].replace("article_",""));
var parent_id = dijit.byId('section_tree').selectedNode.getParent().item.id[0].replace("articles_","");
add_section_button.href = "./cms.php?categ=section&sub=edit&id=new&num_parent="+parent_id;
add_article_button.href = "./cms.php?categ=article&sub=edit&id=new&num_parent="+parent_id;
content.domNode.scrollIntoView();
break;
case "articles" :
change = true;
cms_current_editorial_content = '';
content.set('href','./ajax.php?module=cms&categ=get_infos&type=list_articles&id='+item.id[0].replace("articles_",""));
add_section_button.href = "./cms.php?categ=section&sub=edit&id=new&num_parent="+item.id[0].replace("articles_","");
add_article_button.href = "./cms.php?categ=article&sub=edit&id=new&num_parent="+item.id[0].replace("articles_","");
content.domNode.scrollIntoView();
break;
default :
change =false;
cms_current_editorial_content = '';
//do nothing
break;
}
} else {
add_section_button.href = "./cms.php?categ=section&sub=edit&id=new";
add_article_button.href = "./cms.php?categ=article&sub=edit&id=new";
}
}
function cms_update_articles_parent(ids_articles,num_section){
var update = new http_request();
update.request('./ajax.php?module=cms&categ=update_article',true,'&num_section='+num_section+'&articles='+ids_articles,true,cms_articles_updated);
}
function cms_articles_updated(response){
dijit.byId('editorial_tree_container').refresh();
if (dijit.byId('content_infos').href) dijit.byId('content_infos').refresh();
}
function get_icon_class(item,opened){
var icon_class = "";
if(item.id == 'root'){
icon_class = (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "dijitLeaf";
}else {
switch(item.type[0]){
case "section" :
case "root_section" :
if(this.model.mayHaveChildren(item)){
if(!item.icon){
icon_class = opened ? "dijitFolderOpened" : "dijitFolderClosed";
}else{
icon_class = "no_icon";
}
}else{
if(!item.icon){
icon_class = "dijitFolderOpened";
}else{
icon_class = "no_icon";
}
}
break;
case "articles" :
icon_class = opened ? "dijitFolderOpened" : "dijitFolderClosed";
break;
case "article" :
if(!item.icon){
icon_class= "dijitLeaf";
}else{
icon_class = "no_icon";
}
break;
}
}
return icon_class;
}
function get_label_class(item,opened){
var label_class = "";
if(item.icon){
label_class = "no_icon";
}
return label_class;
}
function get_label(item){
var label = this.model.getLabel(item);
var class_html = "<span><img src='./images/spacer.gif' class='"+item.class_html+"' title=\'"+item.state_label+"\' style='width:7px; height:7px; vertical-align:middle; margin-left:-3px;' /></span>";
if(item.icon){
label = "<img src='"+item.icon[0]+"' alt='"+label+"' title='"+label+"'/> "+class_html+label;
} else {
label = class_html+label;
}
return label;
}
// Methode pour ajouter le clique droit
// this cms_editorial_tree
// CmsContextMenu corresponds au js dans apps/cms/CmsContextMenu
function add_context_menu(nodes, CmsContextMenu) {
for (var i = 0; i < nodes.length; i++) {
var node = nodes[i];
var parsed = node.domNode.getAttribute('parsed');
if (!node.item.root && node.domNode.id && !parsed && node.domNode.hasAttribute('widgetid')) {
node.domNode.setAttribute('parsed', 'true');
var widgetid = node.domNode.getAttribute('widgetid');
new CmsContextMenu({targetNodeIds: [node.domNode.id], widgetIdNode:widgetid});
}
var childrens = node.getChildren();
if (childrens && childrens.length > 0) {
add_context_menu(childrens, CmsContextMenu);
}
}
}